An IT leasing company's broken ad attributionattribution, rewired in HubSpot
How we took a company spending on Google Ads with no idea what it returned, attribution silently broken since late 2023, and traced it back to a single lost cookie, then rebuilt the reporting end to end.
Confidential · anonymizedWe never publish a client's name or logo without written consent, so the company here is hidden. The architecture and the figures are real and unchanged.
An IT equipment leasing company was spending on Google Ads and flying blind: clicks still reached HubSpot, but they stopped attaching to contacts around November 2023, so nobody could say which paid campaigns generated pipeline. We isolated the three ways a contact is created, form, API and added-to-cart, and traced exactly where the tracking broke: UTM parameters lost on page changes, and API-created contacts missing the hutk cookie, which made HubSpot stamp their source as offline.
We fixed the tracking so original source reads Paid Search again, realigned the lifecycle across Contact, Company and Deal over three parallel pipelines, audited every workflow, and rebuilt reporting by source and campaign. Along the way the realignment surfaced the kind of silent contradiction nobody had caught: 880 companies with a won order but zero customers in the lifecycle. This page is the long version.
The problem: paying for ads, blind on the return
The company leases and manages IT equipment for businesses, and a real share of its demand comes from paid search. Money went out to Google Ads every month, and on the surface HubSpot looked healthy: clicks and impressions still flowed in, contacts still appeared. The problem was underneath. Around November 2023, those ad-sourced contacts stopped carrying their attribution, at both contact and deal level. The clicks arrived; the link to where they came from did not.
The consequence is the one every paid-acquisition team dreads: you cannot tell which campaigns generate pipeline. Budget keeps flowing to keywords and campaigns on faith, because the data that would tell you what works has quietly gone dark. Reporting still drew charts, but the most important column, original source, was lying, so every decision built on top of it was a guess wearing the costume of a number.
The mandate was not "rebuild our CRM". HubSpot was the right tool and the team lived in it. The mandate was: find out why the attribution broke, fix it, and make the reporting trustworthy again, so a euro spent on ads can be traced to the pipeline it creates.
The root cause: a cookie that fell on the floor
Before changing anything, the audit traced exactly where attribution leaked. A contact in this business gets created or updated in three different ways, and each one had to be checked on its own, because a single broken path is enough to poison the whole report.
Three paths, one broken
The three ways in were a form submission, a creation through the API, and an added-to-cart event. Walking each one showed two distinct failures. UTM parameters were being lost on page changes, so the campaign signal never survived the journey to the form. And contacts created through the API never carried the hutk cookie, the tracking token HubSpot uses to tie a person back to their session, so HubSpot had no choice but to stamp their original source as offline.
The build: fix the tracking, then realign the whole model
Finding the leak was half the work. The other half was fixing it at the source and making sure the rest of the model could be trusted again, across every object, not just the contact.
The attribution fix
The repair moved tracking off the Contacts API and onto the JavaScript trackPageView and trackEvent calls, which carry the session and the cookie HubSpot needs, and remapped the forms so the UTM signal survived the journey. The whole fix was documented so original source reads Paid Search correctly instead of falling back to offline. Form and added-to-cart tracking were restored in HubSpot.
Three pipelines, realigned
Attribution sits on top of the data model, so the model had to be coherent. We brought the lifecycle into line across Contact, Company and Deal, running over three parallel pipelines, Company Lifecycle, Orders and MDM, with the stages fully mapped. Doing that surfaced the kind of contradiction that hides in plain sight: 880 companies showed a won order but zero customers in the lifecycle, a gap nobody had quantified until the pipelines were forced to agree.
Workflows audited, reporting rebuilt
Every HubSpot workflow was reviewed and given a verdict, keep, change or cut, removing the ones that wiped lifecycle without a delay, blocked legitimate backward moves or created duplicates. On the clean foundation, we built reporting on deals, companies and contacts by source and by campaign through the funnel. The whole pipeline architecture was documented and handed over to the internal RevOps team.
What changed for the team
Forget the dashboards that looked fine. What changed is that the numbers became true, and the spend became traceable.
The headline is traceability, not a vanity chart. Form and added-to-cart tracking were restored, original source reads Paid Search again, and reporting now ties deals, companies and contacts to the source and campaign that produced them. The team went from spending blind to being able to ask which campaign generated which pipeline and get a straight answer.
Underneath, the model is coherent. Three pipelines agree, the workflows no longer corrupt the lifecycle, and the silent contradictions, like 880 won-but-not-customer companies, are visible instead of buried. The architecture was documented and handed to the internal RevOps team, so the fix outlives the engagement.
What it runs on
A focused build on the tools the team already used, each piece doing one job and the company holding the keys.
- HubSpot — the system of record: lifecycle across Contact, Company and Deal, three pipelines, and the rebuilt source and campaign reporting.
- Google Ads — the paid-acquisition channel whose attribution was traced back into HubSpot end to end.
- Google Tag Manager — where the trackPageView and trackEvent fix carries the session and cookie HubSpot needs.
- Clay and Amplemarket — enrichment behind keeping company and contact records current.
No tool swap, no black box. The pipeline architecture and the attribution fix were documented and handed over, which is the same way every build we ship works.
This case, FAQ
Who is the client in this case study?
What was actually broken?
How did you fix the attribution?
What else did the engagement cover?
Can you do the same for our setup?
Is your ad spend traceable?
Tell us how your attribution, pipelines and reporting run today, in text or a voice memo. We reply within 24 hours with where the system hits its ceiling, what that costs you, and a costed path to fix it. Free, no deck, no follow-up sequence.
Free 30-minute diagnostic