ATTRIBUTION FIX SPRINT
Your CRM and your ad platform disagree about the same pipeline. One of them is wrong at the board meeting.
The click is measured in the ad account, the deal is measured in HubSpot or Salesforce, and nothing carries identity across the gap. We rebuild the join server-side so closed-won revenue reaches the bidding algorithm, in two to three weeks.
Request a tracking reviewWhere the chain breaks
You already know what CAPI is. So the useful conversation is about which specific joins are failing in your stack.
The demo request is the last thing anyone measures
Meta and Google optimise toward form fills because a form fill is the only signal they receive. Nothing tells them that a third of those demos are students, competitors and people who will never reach a procurement threshold. You are paying to acquire the leads that convert worst because those are the leads the algorithm learned to find.
Identity dies between click and opportunity
gclid and fbclid land on the lead record, then the deal is created by an SDR from a different object, the account gets merged, and the click ID does not survive. Ninety days later the deal closes with source Direct. Multi-touch reporting on a broken join produces numbers that are precise and false.
Consent, cross-device and a sales cycle longer than the cookie
The buyer researches on a work laptop, converts on mobile, and closes 90 days after the click while EU consent decisions have already wiped most of the browser-side signal. Your attribution window is shorter than your sales cycle, so the channels doing early-stage work look unprofitable and get cut first.
What gets built
Fixed fee, paid up front, delivered in two to three weeks. Infrastructure your team owns and can extend.
Click ID persisted through to closed-won
gclid, fbclid, gbraid and wbraid captured at first touch, written to the contact and carried onto the deal object through merges and stage changes. Lead scoring and qualification status travel with it, so SQL and closed-won can be sent as distinct offline conversions rather than one undifferentiated blob.
Server container, CAPI and Consent Mode v2
Server-side GTM as the single event layer feeding Meta CAPI, Google Enhanced Conversions and your analytics from one schema. Shared event_id deduplication so browser and server events do not double count. Consent Mode v2 configured for EU and UK, which keeps conversion modelling alive instead of returning nulls.
CRM revenue pushed back to the platforms
Offline conversion upload on a schedule, carrying deal value and stage. The bidding then optimises toward pipeline that actually closes rather than toward whoever fills a form fastest. The dashboard shows spend against qualified pipeline and closed revenue per channel, in one place, owned by you.
What usually changes
A typical account arrives able to attribute around 61% of its conversions after consent loss, blocked scripts and broken CRM joins. Server-side measurement takes that to roughly 89%. The important part is not the reporting. It is that the platforms start receiving qualified pipeline as the optimisation signal instead of raw form fills, and CPA drops about 22% within six weeks on unchanged budget and creative. Your Head of Growth stops arguing with RevOps about whose dashboard is right.
Who this is not for
Below €20,000 a month in paid spend there is not enough volume for the model to learn from the corrected signal, and you should wait. If your CRM has no consistent deal object or your data team is mid-migration to a new warehouse, fix that first because we would be building on top of it. If you want a full analytics rebuild rather than a measurement layer, that is a different engagement with a different price.
Find out where your attribution chain actually breaks
Read access to the ad accounts, GTM and the CRM is enough to map every join and show you which ones are dropping identity.
Request a tracking review