Core-X Solutions
← WritingAttribution7 min read

How to connect ad spend to booked revenue

Most businesses can tell you what a click cost. Far fewer can tell you what it earned. The gap is four handoffs long, and every one of them drops something.

Core-X Solutions

Every business running paid acquisition can tell you what a click cost. Far fewer can tell you what that click earned.

The platforms will happily report conversions. Finance will happily report revenue. What almost nobody has is a line connecting a specific payment back to the specific ad that started it — which means budget decisions get made on cost per lead, a number that says nothing about whether those leads were worth having.

Closing that loop is not one project. It is four handoffs, and each one drops something.

The chain, end to end

A working attribution chain looks like this:

Click → Lead → Opportunity → Payment → Report

Nothing exotic. The difficulty is that each arrow crosses a system boundary, and identifiers do not survive those boundaries unless someone deliberately carries them.

Handoff one: click to lead

The ad platform knows a click identifier — gclid for Google, fbclid for Meta. Your form knows an email address. If nothing captures the click identifier at the moment of submission, the connection is gone permanently and no amount of downstream modelling recovers it.

What to do: capture the click identifier and the UTM parameters into hidden form fields, and write them to the lead record as first-class fields, not notes. If a visitor lands, browses for a week and converts later, you also need those values persisted — a first-party cookie or local storage read at submit time.

How to tell this is your break: pull a hundred recent leads and count how many have a non-empty source field. If it is not close to a hundred, stop here. Everything downstream is estimation.

Handoff two: lead to opportunity

Sales works the lead. Somewhere it becomes an opportunity, or a deal, or whatever your CRM calls it. This is usually where attribution quietly dies — not because anything is broken, but because the opportunity is created as a new object and nobody maps the original source onto it.

What to do: make source fields inherit on conversion. Most CRMs support field mapping on lead conversion; it just has to be configured. Where a deal genuinely has multiple contributing leads, decide the rule now — first touch, last touch, or a proper multi-touch split — and write it down. Any rule consistently applied beats an inconsistent mix.

How to tell this is your break: count opportunities created last quarter with an empty source. If leads have sources and opportunities do not, your loss is here.

Handoff three: opportunity to payment

The CRM says the deal closed. Stripe, Chargebee or your invoicing system says money arrived. These are frequently not connected at all, and the join gets done by a human matching names in a spreadsheet.

This handoff matters more than the others because it is where the number stops being a forecast and starts being revenue. Attribution that stops at "closed won" is attributing to a salesperson's optimism.

What to do: put the CRM record identifier on the payment object — Stripe metadata, a custom field on the invoice, whatever the system allows. Do it at creation, not by reconciliation afterwards. And model refunds and failed renewals explicitly: a campaign that produces churn-heavy customers looks excellent right up until you subtract them.

Handoff four: payment to report

Now the data exists in four systems and needs to sit in one place. Not a dashboard — dashboards query, they do not store. A warehouse, where each system's data lands with the timestamps it arrived with, and the joins are modelled explicitly.

The reason this is a separate step rather than "just connect the dashboard to everything" is that reporting tools resolve conflicts silently. When the CRM and the payment system disagree, you want to see the disagreement, not have a visualisation layer quietly pick a winner.

Where it usually goes wrong

In practice, the break is nearly always handoff one or handoff three.

Handoff one because capturing click identifiers is a small piece of front-end work that nobody owns — marketing assumes the web team did it, the web team assumes the form tool does it, and the form tool does it only if configured.

Handoff three because it sits across a departmental boundary. Marketing owns the top, finance owns the bottom, and the join between them is not in anyone's objectives.

The diagnostic

You do not need a project to find out which break is yours. Take one closed deal that you know came from paid acquisition. Then trace it backwards, record by record, writing down the identifier at each step:

  • The payment. Does it carry any reference to the CRM record?
  • The opportunity. Does it carry a source?
  • The lead it came from. Does it carry a click identifier?
  • The click. Can you find it in the ad platform?

The first step where you cannot answer is your break. That is a thirty-minute exercise and it tells you more than a month of dashboard work.

What good looks like

You do not need perfect attribution. You need attribution that is explicable — where the number has a defined meaning, the same meaning every month, and the differences between systems have names.

The end state is unremarkable in description and rare in practice: a report showing spend by campaign next to recognised revenue by campaign, over the same period, with the join written down where anyone can inspect it. Once that exists, budget conversations stop being arguments about whose number is right.

Common questions

What is closed-loop attribution?
Attribution that follows a click all the way to recognised revenue rather than stopping at a conversion or a closed-won deal. It requires an identifier that survives every handoff between the ad platform, CRM, payment system and reporting layer.
Why do my ad platform conversions not match my CRM leads?
The platform counts conversions inside its own attribution window and back-dates them to the click; the CRM counts records at creation time. Duplicates, manually entered leads and out-of-period conversions account for most of the remaining gap.
Do I need a data warehouse for attribution?
Not to start. You need identifiers that survive each handoff first. A warehouse becomes necessary when you want the joins modelled explicitly and auditable, rather than resolved silently inside a reporting tool.
How long does it take to set up revenue attribution?
Diagnosing which handoff is broken takes about thirty minutes with one known deal. Fixing capture at the form is usually days. Connecting CRM records to payments and modelling the result is typically weeks, depending on how many systems are involved.
  • Revenue attribution
  • Marketing analytics
  • CRM
  • Reporting

Have a messy system?

That is usually where we can help.

Tell us what is not working, what is still manual, or what you cannot currently see clearly. If it is not something we should take on, we will tell you that too.

hello@core-x.solutions