HubSpot · Available
A deal closes, and it counts before the invoice does.
Connect HubSpot and build one workflow: when a deal enters your won stage, send a webhook. Every closed-won deal after that is verified, queued and scored the same afternoon you set it up.
- Status
- Available
- Authenticated with
- HubSpot’s own v3 request signature — an HMAC-SHA256 over the method, URL, body and timestamp, checked against a five-minute window.
- Becomes
- deals_closed · revenue_closed · kept on the event
What it sends
What arrives, and what it becomes on a board
| When | Becomes | Worth knowing |
|---|---|---|
| A deal enters your won stage | deals_closed | Always 1, so a rep who closes ten small deals still shows up next to one who closed a single large one. Which stage counts as won is decided entirely inside your own HubSpot workflow — this connector never checks it. |
| The deal carries an amount | revenue_closed | Only when your workflow sent one. A blank amount field means no contribution, never a $0 close, so an unpriced deal cannot pull a rep’s total down. |
| currency, pipeline, owner | kept on the event | Currency rides along for display and is never converted, so pipelines closing in more than one currency sum raw numbers together — worth knowing before you rank on revenue. |
Every closed-won deal your workflow sends is verified, queued and scored the same way, whether it is the first one after connecting or the ten-thousandth.
Setting it up
Three steps, and none of them is a ticket to us.
- 01
Connect HubSpot
One OAuth click from the Integrations page inside the product.
- 02
Build one workflow
In HubSpot: when a deal enters your won stage, send a webhook to the endpoint on the Connect page. HubSpot’s own workflow editor is where you choose which properties travel — amount, currency, pipeline, close date, owner.
- 03
Sign it with the app’s Client Secret
The same secret the OAuth install already gave you. Every request is checked against a five-minute window, so a captured payload cannot be replayed later.
What it will not do
The refusals, in writing.
- Convert currency. A deal closed in EUR and one closed in USD both add their raw number to revenue_closed — real conversion needs a rate source this has no reason to invent yet.
- Read back into HubSpot. Nothing here calls HubSpot’s API for a live event; the workflow you build sends everything this connector needs in one delivery.
- Count a deal twice. The dedupe key is the portal, the deal and “closed_won” together, so resending the same delivery is always safe.
- Credit an unlinked owner to the wrong person. An owner id nobody has linked yet earns the deal for nobody — the same posture as an unattributed GitHub actor, never a guess.
Questions
The ones that come up
Why a HubSpot workflow instead of just an app install?
HubSpot’s own deal-change webhook subscription carries only the one property that changed, never amount and pipeline and owner together. A workflow lets you choose exactly the properties this needs once, at setup, so every delivery after that is self-contained.
What happens to deals that closed before we connected?
Nothing yet — this counts forward from the day your workflow starts sending, the same way a brand-new webhook source would. There is no history import for HubSpot today.
Our pipelines close in more than one currency. Is that a problem?
Only for revenue_closed, which sums the raw numbers you send across currencies with no conversion. If that matters, rank on deals_closed instead, or keep the board to one currency’s pipelines for now.
Does this see anything else about the deal?
No — only the properties your workflow chose to send. It does not read the deal record, the contact, or anything else in your portal.