Connect HubSpot to Slack
Why teams connect HubSpot and Slack
Deals live in HubSpot. The team talks in Slack. Without a link, reps post "just closed a big one" by hand, managers find out about a deep discount after it is quoted, and the useful context that gets shared in Slack never makes it back to the CRM.
- Deal stage changes and new deals over a value threshold post to the pod's channel with amount, stage, owner, and a link, no manual sharing
- A deal with a discount over the limit waits for approval: a Neblex task goes to a named approver, and the link reaches them in Slack
- A deal room channel is created for opportunities over a size, with the AE, SE, and manager invited and the deal summary posted
- Messages in the deal room are logged to the HubSpot deal as notes by a scheduled flow, so the CRM keeps the context
Worked example
The approval flow most teams turn on first.
A deal discounted past the limit waits for a yes or no
Started by the polled deal trigger, the run waits on an approval task whose link is posted to the approver in Slack.
- Trigger: HubSpot
New or updated deal, polled on the schedule you set, carryingdealId,amount,dealstage,hubspot_owner_id, anddiscount_percent. - Gate: if
discount_percentis at or below the threshold for the deal's tier, do nothing. Otherwise continue. - Resolve approver: look up the deal owner's manager from a team map, and the manager's Slack user with
Find user by email. - Ask: a Wait for form step creates the approval task for the manager with the deal name, amount, list vs net, and discount, a due time, and an escalation flow. A Slack message to the manager carries a button that opens the task.
- On approve: set HubSpot deal properties
discount_approved_byanddiscount_approved_at, post a confirmation in the channel, and let the deal proceed. - On reject or timeout: set
discount_statusto "Rejected", create a task for the owner to revise, and post the reason back to the deal as a note.
Field mapping
The starting map for the HubSpot deal alert and the approval write-back.
| HubSpot | Slack | Notes |
|---|---|---|
deal.dealId | stored message mapping | Idempotency key. Stored so a repeated trigger updates the existing message instead of posting a second. |
deal.dealname + company.name | message header | Company name prefixed for scanability in a busy channel. |
deal.amount | message field (formatted) | Currency gotcha: HubSpot stores amount as a number in the deal currency. Format with deal.deal_currency_code, do not assume USD. |
deal.dealstage | message field | Map the internal stage ID to the human label through the pipeline definition, not the raw ID. |
deal.hubspot_owner_id | Slack mention | Identity: owner ID to HubSpot user email to Slack user ID. An unmapped owner posts without a mention. |
deal.discount_percent | approval message field | Drives the gate. Threshold comes from a per-tier table keyed on deal.tier. |
| task decision + decider | deal.discount_approved_by, deal.discount_approved_at | Return path. The person who decided the task is written to the audit fields on the deal. |
| deal room messages | deal note (engagement) | Optional: teams that only want decisions logged, not chatter, turn this flow off and keep just the approval write-back. |
What syncs, each direction
- Deal alerts. Stage changes and new deals over a threshold post to the pod channel with amount, stage, owner, and a link. (HubSpot to Slack)
- Discount approval. A discount past the limit waits for an approver's decision in a Neblex task, with the link sent in Slack. (HubSpot to Slack)
- Deal room. Opportunities over a size get a channel with the AE, SE, and manager, and the deal summary posted. (HubSpot to Slack)
- Messages to notes. A scheduled flow reads new messages in each deal room and writes them to the deal as timestamped notes with the author. (Slack to HubSpot)
Governance and audit
The same controls apply to this sync as to every other Neblex workload.
- Run history. Every alert, approval request, and decision is a run with the deal, the decider, and the fields written. A failed run can be replayed from the step that failed.
- Approval steps. The discount gate is a Wait for form task. The run holds until a named approver acts or the task times out, and the decision and decider are recorded.
- Scoped access. HubSpot uses a private app scoped to deals, companies, owners, and engagements. Slack uses a bot token with chat, channels, and users scopes.
- Environments. Build against a HubSpot test account and a Slack test workspace, then promote the same flow to production.
Frequently asked questions
How is this different from HubSpot's native Slack integration?
HubSpot's built-in Slack app handles notifications and simple channel posts well, and it is a fine starting point. Neblex adds an approval step that actually holds the flow, deal-room creation with the right people, write-back of Slack context to the CRM, and the same run history and governance as your other flows.
Does the approval really block the deal?
The run waits at the approval step. Whether that blocks the quote from being sent depends on how you wire the downstream step. Most teams gate the "send quote" or "move to contract" action on the approval.
What if the approver never responds?
The task has a due time and a timeout. When it is overdue, the escalation flow runs, for example to notify a backup approver; on timeout the flow marks the discount rejected and creates a task for the owner.
Will it spam a channel with every tiny deal?
No. Alerts are gated on a value threshold and the stages you pick, so a channel only sees the deals that matter to it.
How does it match a HubSpot owner to a Slack user?
Owner ID to the owner's HubSpot email to the Slack user, found by email. An owner with mismatched emails gets a row in an override map, and until then the post just omits the mention.
Can it archive the deal room when the deal closes?
Yes. On closed-won or closed-lost it posts a summary and archives the channel after a delay you set.
Connectors used
HubSpot
CRM & Sales
- Operations
- 336
- Operations with typed output
- 81.5%
- Change triggers
- 46 (poll)
- Signs in with
- API token
Slack
Communication, Email & Calendar
- Operations
- 317
- Operations with typed output
- 100%
- Change triggers
- Poll or inbound webhook
- Signs in with
- API token
Bring one real integration
We will build it with you against your own systems, with the run log open.