Skip to content

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

  1. 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.
  2. 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.
  3. That touch decides the deal's campaign, channel and rep.
  4. 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.

The Campaigns table: every campaign across tools with its owner, sends, reply rates, meetings, deals and pipeline

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 seeUsual cause
Deal shows as not outboundThe deal has no associated contact in HubSpot, or the contact's email differs from the one that was emailed.
Credited to a different campaignA later touch from another campaign happened before the deal was created. Last touch wins.
Not credited, although the prospect repliedThe deal was created before the first touch, or the last touch was more than 120 days before the deal.
No rep on the dealThe touch's sender is not mapped and its campaign has no owner.
Call-only deals not creditedRingCentral 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 propertyValue
om_source_campaignName of the credited campaign
om_source_channelemail, linkedin or call
om_source_repName of the credited rep
om_source_touch_dateDate 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

  1. Add crm.objects.deals.write and crm.schemas.deals.write to your HubSpot private app.
  2. If that changed the token, use Replace key on the HubSpot connection.
  3. 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.