> For the complete documentation index, see [llms.txt](https://threadly.gitbook.io/threadly/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://threadly.gitbook.io/threadly/integrations/hubspot.md).

# HubSpot

Threadly's HubSpot integration builds Dynamic Segments from your CRM, triggers Slack messages from HubSpot workflows, and lets people book HubSpot meetings without leaving Slack.

### Key benefits

#### Dynamic Segments

Build auto-updating Segments of Slack channels, or people, from any HubSpot property, such as MRR, lifecycle stage, industry or owner. Segment your messaging at scale without manual upkeep.

#### Trigger Slack workflows from HubSpot

Use HubSpot workflows to start Threadly workflows. This is ideal for NPS surveys, onboarding flows, renewal alerts and more.

#### Book HubSpot meetings in Slack

Add a **Book Time** button to any message. Recipients pick a time and confirm the meeting **end-to-end within Slack**, with no browser tab and no back-and-forth.

HubSpot is a **Pro** feature, connected once for the whole workspace by a Threadly admin.

***

### Getting started

1. In Slack, open Threadly → **Settings** → **Integrations**.
2. Under **Customer data**, open **HubSpot** and click **Connect HubSpot**.
3. Log in to HubSpot and approve access. When you return, you'll see **HubSpot is connected and active**.

If the connection ever expires, HubSpot's card shows **Needs attention**. Click **Reconnect HubSpot**.

***

### Map HubSpot records to Slack

Threadly matches HubSpot records to Slack using properties you choose. Click **Configure Mapping**:

* **Channel mapping:** the HubSpot object (usually **Companies**) and the property holding each record's **Slack channel ID**, for example `slack_channel_id`. Values must be raw IDs like `C012ABCDEF`, not `#channel-name`.
* **Direct-message mapping (optional):** an object (usually **Contacts**) and the property holding each person's **Slack user ID**, for example `slack_user_id`. You need this for user-based Segments and contact workflows.

Click **Test Mapping** to check how many records are mapped, see a valid sample, and spot invalid values. Added a new property in HubSpot? Click **Refresh Fields**.

***

## How it works

### 1. Dynamic Segments

1. Click **Create HubSpot Segment** on the HubSpot screen, or [create a Dynamic Segment](/threadly/groups/dynamic-conversation-groups/how-to-create-a-dynamic-group.md) and choose **HubSpot** as the data source.
2. Add filters on any property, for example:
   * MRR > 300
   * Lifecycle Stage = "Customer"
   * Account Owner = Sarah
3. Threadly keeps the Segment up to date, refreshing every 3 hours (or when you click **Refresh Data**) and adding and removing channels as CRM data changes.

See [HubSpot Segments](/threadly/groups/dynamic-conversation-groups/hubspot-segments.md).

***

### 2. Trigger Slack messages from HubSpot workflows

Threadly provides a **HubSpot custom workflow action**.

1. In Threadly, create a workflow with the **HubSpot Contact Workflow** trigger, add your steps, and activate it.
2. In HubSpot, go to **Workflows** and open or create a workflow (contacts or companies).
3. Add the **Threadly** action and choose:
   * the property holding the **Slack User ID** (contact workflows) or **Slack Channel ID** (company workflows)
   * the **Threadly Workflow** to run

See [HubSpot Contact Workflow](/threadly/workflows/workflow-triggers/hubspot-contact-workflow.md). Threadly workflows can also update HubSpot contacts with the **Update HubSpot Contact** step.

#### Popular use cases

* Send an NPS survey when a deal closes
* Alert an internal channel when a high-value lead is created
* Send onboarding messages when a customer reaches a new lifecycle stage

***

### 3. HubSpot meeting booking in Slack

Your HubSpot meeting links are listed under **Meeting Scheduling** on the HubSpot screen.

1. Click **Create Meeting Button**, or in the message editor expand **Actions** and click **📅 Add Booking**.
2. Enter a button label and choose one or more HubSpot **meeting links**.
3. Attach it to any message or workflow step.

Click **View Meeting Actions** to see your booking buttons, and **🔄 Refresh Meeting Links** after adding links in HubSpot.

#### What recipients see

* A message with your button, for example **Book Time**
* A Slack popup showing available times (from HubSpot) in their own timezone, with their name and email pre-filled
* A confirmation, with the meeting added to calendars

See [Calendar Actions](/threadly/actions/calendar-actions.md).

***

## FAQ

**Q: Can I use Contacts, Companies or custom objects?**\
Yes. Any HubSpot object works as long as it has a property holding a valid Slack ID.

**Q: What happens if a record no longer matches a Segment's filters?**\
Threadly removes its channel from the Segment on the next refresh. To keep a matching channel out, [exclude it](/threadly/groups/dynamic-conversation-groups/excluding-channels-and-people.md).

**Q: Can I trigger different workflows for different lifecycle stages?**\
Yes. Use HubSpot branches and point each branch at a different Threadly workflow.

**Q: Does booking a meeting in Slack sync back to HubSpot?**\
Yes. Threadly creates the meeting through your HubSpot connection and follows your usual meeting rules and ownership. Both people get an email, and the event is set up per your HubSpot scheduler settings.
