Attribution and ROI reporting you can trust
Attribution breaks in two places: the source data going in, and the model built on top of it. I fix both, from UTM rules and spend syncs to custom models that HubSpot can’t run natively.
Short answerFirst make every source write into the same properties with clear priority rules, and reconcile spend against each ad platform. Then pick a model that fits how you sell. If the relationship belongs to an account and revenue comes from reorders, model at the company level.
Fixing the source data
- One canonical set of source properties that every channel writes into, documented in a field map.
- Priority rules for which signal wins, and when a later signal may overwrite an earlier one.
- Account-level ad tracking templates so campaign and keyword data arrive filled in, not blank.
- Spend syncs for channels that don’t reach HubSpot on their own, such as Local Services Ads.
- Offline conversions sent back to ad platforms on real deal stages with real deal values.
Reporting past first and last touch
For a B2B medical supplier with substantial reorder revenue, I built a company-level attribution engine that runs nightly on a dedicated server, because the job spans the whole database. It rebuilds company, contact and touch relationships, joins a cost sheet the client maintains, and writes four reports back into HubSpot: acquisition, full relationship value, ROI by initiative, and activities that correlate with closed deals. Read the write-up.
Common questions
Why doesn’t standard contact-level attribution work for us?
If the buying relationship belongs to a company and much of the revenue comes from reorders, crediting individual contacts misses where the value really sits. That is when a company-level model, built outside HubSpot and reported back into it, is worth the effort.
What is source priority logic?
Rules for which signal wins when several describe the same lead. For example: UTM data beats intake chat capture, which beats a manual “how did you hear about us” answer, which beats direct. The rules also say when a later, better signal may overwrite an earlier one.
Can you reconcile ad spend against HubSpot?
Yes, day by day and campaign by campaign. On one audit Google Ads matched HubSpot to within 0.04% and Meta to within 0.02%, while Local Services Ads spend wasn’t reaching HubSpot at all.
Have a system that needs to talk to HubSpot?
Book a free 30-minute call. Bring the messy version and I’ll help you work out what to fix first.
Book a call