Attribution and HubSpot write-back
How a deal is credited to a campaign, channel and rep, how to check it, and how to write the result into HubSpot deal properties.
For: Admins, managers and RevOps
Attribution answers one question: which outbound touch led to this deal? The rule is deliberately simple, so that anyone can check a deal by hand.
The rule
- A deal is linked to people through its associated contacts in HubSpot. They are matched to the people you contacted by email address, then by LinkedIn URL. When a deal has no usable contact, the company domain is the fallback.
- Among the touches to those people, the most recent one before the deal was created wins, as long as it was within 120 days before the deal was created.
- That touch decides the deal's campaign, channel and rep.
- A deal with no such touch is not outbound. It is not credited to any campaign.
A touch is a sent email, a LinkedIn message, a LinkedIn invite or a call. Replies, opens and meetings are not touches. A HubSpot copy of a dialer call is ignored; the dialer's own record of that call is the touch.

Campaigns, with the deals, pipeline and won revenue credited to each by the rule above. Demo data.
Why a deal is not credited the way you expected
| What you see | Usual cause |
|---|---|
| Deal shows as not outbound | The deal has no associated contact in HubSpot, or the contact's email differs from the one that was emailed. |
| Credited to a different campaign | A later touch from another campaign happened before the deal was created. Last touch wins. |
| Not credited, although the prospect replied | The deal was created before the first touch, or the last touch was more than 120 days before the deal. |
| No rep on the deal | The touch's sender is not mapped and its campaign has no owner. |
| Call-only deals not credited | RingCentral and PhoneBurner calls carry only a phone number, so they cannot be matched to a deal on their own. |
Attribution is rebuilt after every sync and after every change to sender mapping or campaign owners, so a fix shows up straight away.
HubSpot write-back
Write-back copies the result onto the deal in HubSpot, so your CRM reports can use it. It is off by default.
| Deal property | Value |
|---|---|
om_source_campaign | Name of the credited campaign |
om_source_channel | email, linkedin or call |
om_source_rep | Name of the credited rep |
om_source_touch_date | Date of the winning touch |
- The four properties are created the first time, in a property group named OutboundManager.
- Only deals with an outbound attribution are written, and only when a value changed. Nothing else in HubSpot is created or changed.
- If a deal that was written later loses its attribution (for example after you correct a mapping), its four properties are emptied.
Turn it on
- Add
crm.objects.deals.writeandcrm.schemas.deals.writeto your HubSpot private app. - If that changed the token, use Replace key on the HubSpot connection.
- Turn on write-back on the HubSpot connection in Settings → Connections.
Important: Check attribution on a handful of deals you know well before turning write-back on. Turning it off later stops new writes; values already written stay in HubSpot.
Limits
- HubSpot is the only CRM today. Salesforce is not supported yet.
- Only the current deal stage is synced, not stage history.
- One deal has one credited touch. There is no multi-touch split.
Something unclear or out of date? Tell us and we will fix this page.