A workspace per client
One workspace per client, isolated from the others, each with independent limits and retention.
Marketing attribution for Media Buying Agencies
Reconcile every platform's self-reported conversions against the client's actual sales export, and optimize on what survives.
$896,000 64% of $1,400,000 paid
The blind spot
Every platform grades its own homework, and the totals across them exceed the client's real sales. Optimizing to those numbers spends real money against invented credit.
What you get
One workspace per client, isolated from the others, each with independent limits and retention.
Rank on closed revenue, so a single high-value closed deal is not averaged away by the noise around it.
Exact matches only, with weaker links held back for a person to accept or reject — which is what makes the closed revenue figure survive being questioned.
A worked example
Not impressions, not leads, not cost per click. Closed revenue, by the channel that produced it, for a period you choose — with the portion we could not trace shown rather than quietly shared out across your paid channels.
| Channel | Sales | Revenue | Share | % |
|---|---|---|---|---|
| Meta Ads | 238 | $406,000 | 29% | |
| Google Ads | 197 | $336,000 | 24% | |
| TikTok Ads | 90 | $154,000 | 11% | |
| Direct / Unknown | 295 | $504,000 | 36% |
Add up the conversions each platform claims and the total routinely exceeds the client's actual order count. Every platform counts a touch it saw, so the same sale is claimed several times over.
Reconciling against one closed-sales export gives a single number that cannot be double-claimed. The per-platform gap it exposes can be the most valuable thing in the report — and the most uncomfortable.
Bidding algorithms optimize toward whatever you feed them. Feed them platform conversions and they chase the cheapest claimed conversion, not the most profitable sale.
A closed-revenue figure per platform tells you where the inflation actually is, which changes both the split and what you report at the end of the month.
Every serious media buyer eventually proposes an incrementality test, and most of them die in the measurement. A region is held out, a campaign is paused, an audience is excluded — and then the result has to be read against something, which in practice means platform-reported conversions in the treated cells and nothing comparable in the held-out one. The design is sound and the readout is contaminated by exactly the self-reporting the test was meant to escape. Clients notice, which is why holdout results are argued about rather than acted on.
Closed sales from the client's own system are the independent count that was missing, and they can be split by the dimension the test used, provided the revenue file carries the column — a region or store mapped as Location, or an audience segment or product line mapped as Product / service. The comparison is then between two groups measured the same way, from a source neither the agency nor the platform controls. It does not make a badly designed test valid and nothing can. What it removes is the objection that finished most previous tests: that both halves were counted by interested parties.
There is a practical limit worth being honest about. A holdout needs enough closed revenue in each cell to be readable, and in a business with long cycles or low deal counts the test may simply be underpowered however carefully it is run. The report shows that plainly, as small numbers with obvious volatility, which is more useful than a confident result built on eleven sales. Where the volume is there, a geographic holdout read on closed revenue is the most persuasive artefact a media agency can put in front of a finance function.
Creative decisions in paid social are made within days, because that is the rhythm the platform reports in and the rhythm the budget moves in. In categories with a purchase cycle measured in weeks, that loop is faster than the outcome it is trying to measure, so creative gets judged on the leading indicator it produces rather than on the customers it produced. The creative generating the most cheap conversions is not reliably the one generating the most revenue, and the gap is widest in the categories most worth buying for.
A monthly closed-revenue read gives a second, slower loop underneath the fast one. Day-to-day optimization continues as it must, and once a month the reconciliation says which creative cohorts actually produced revenue and at what value per sale. That does not replace rapid iteration and should not; it corrects the direction the iteration travels in, which is a different job entirely. Run alongside daily optimization, the monthly read is what can stop a quarter of testing converging on a local optimum nobody wanted, at the cost of an export and an upload.
It works best where the lead file carries one campaign label per lead — a campaign, an ad set or a creative identifier, whichever level of detail the naming convention supports. The match itself only needs a person's contact detail, but the slicing is only ever as good as the columns supplied. Agencies with disciplined naming get creative-level readings; agencies without get channel-level ones and often decide to tidy their conventions. That tidying has value well beyond this report, which is a reasonable secondary argument for doing it.
View-through conversions are the most contested number in programmatic and paid social, and the dispute is structurally unresolvable inside the platforms. A platform can see that an impression was served and that a purchase later happened; it cannot see whether the impression mattered, and it has no incentive to be conservative about the question. Clients discount view-through credit heavily and arbitrarily, agencies defend it on principle, and neither position is informed by anything external. The argument recurs at every quarterly review and is never settled.
A closed-sales reconciliation does not adjudicate view-through and should not be sold as doing so. What it provides is a fixed total: the revenue the client actually closed in the period, which every claimed conversion of every type has to fit inside. When the platforms' combined claims exceed that total, the excess is not a matter of opinion, and its size tells you roughly how much inflation is in the system. That is a boundary rather than an allocation, and a boundary is enough to move a budget conversation from belief to arithmetic.
Upper-funnel activity remains genuinely hard, and this does not solve it. Where a campaign's job is to create awareness that surfaces weeks later as a branded search or a direct visit, no amount of reconciliation will attribute it, and the revenue sits in Direct / Unknown with everything else that arrived without a traceable source. Presenting that honestly is more durable than claiming a view-through figure the client already disbelieves. The unattributed bucket growing during heavy upper-funnel investment is weak evidence, and weak evidence labeled as weak beats strong evidence nobody can check.
Why it matters
"We generated 400 leads" invites an argument. "This channel closed $186,400 last quarter, here is the reconciliation" ends one. The teams that can show closed revenue by channel are the teams that get the next increase approved, because they are asking with evidence rather than with conviction.
Killing spend is politically harder than adding it, because someone always owns the channel being cut. A number that reconciles to the sales export takes the argument out of the room — you are not overruling a colleague's judgment, you are reading the same ledger they are.
Platform-reported conversions do not reconcile to revenue, and eventually someone in finance notices. Reporting built from your own closed-sales export starts from the number finance already trusts, which is why it holds up when it is checked.
Because this reconciles exports rather than tracking visitors, it works on months that have already closed. You are not instrumenting now to learn something in ninety days — you can answer for last quarter today, which is usually when the question is being asked.
Honest answers
They will. This is the independent count you compare against, which is the only way to see the inflation.
A workspace each, isolated, with its own retention and access; the ten share one record allowance.
Keep it. This produces the reconciled revenue figure that feeds it.
Pricing
The price here is the price on the invoice, plus any sales tax that applies — no per-call, per-minute or per-form fees. Agency usually fits media buyers running paid social and programmatic at scale — ten isolated client workspaces sharing one record allowance, plus white-label reports.
Reporting on many clients at once
$799/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
The client's closed sales, plus each platform's lead or conversion export combined into one lead file, with each row tagged by platform.
Yes — that comparison is the point of the report.
Yes, if the lead file carries a campaign for each lead.
Yes, a workspace each.
Your logo appears from Growth upward; on Agency the CloseRev mark is removed.
No — the match reads a contact detail, an amount and a date, and nothing else.
It is encrypted in transit and at rest and isolated per workspace, so no other account can reach your client's customers. Deletion is immediate and a DPA is available.
Sales rows analyzed in a calendar month; every client workspace counts against the same shared allowance.
Yes, if the revenue file carries the dimension the test used, mapped as Location. Both cells are then counted the same way from a source neither the agency nor the platform controls, which removes the objection that ends most holdout arguments.
The report shows that plainly, as small numbers with obvious volatility. Knowing a test is underpowered before spending a quarter on it is more useful than a confident result built on eleven sales.
No, and nothing can from inside the platforms. What it provides is a fixed total the client actually closed, which every claimed conversion has to fit inside. The size of the excess is the useful number.
Run a monthly read underneath your daily optimization. Fast iteration continues; the slower loop corrects the direction it travels in, which matters most where the purchase cycle is longer than the testing cycle.
One label per lead, in the lead file's campaign field — a campaign, an ad set or a creative identifier, whichever your naming supports. The match itself only needs a contact detail, but the slicing is only ever as good as the label you supply.
Much of it lands in Direct / Unknown, honestly. Awareness surfacing weeks later as a branded search leaves no traceable record, and an unattributed share growing during heavy upper-funnel investment is weak evidence labeled as weak.
Nearby
Match your clients' closed-sales exports to their ad and call data, and hand them a per-channel revenue report at renewal time.
See how it worksMatch each client's closed-sales export to the campaigns you ran, so a renewal starts from their revenue rather than your dashboard.
See how it worksAttribute phone orders, quote requests and in-store purchases to the channels that produced them — the revenue your pixel never sees.
See how it worksWhere your sales already are
Where your campaigns produce contact details, match them against closed sales. Where they do not, this page tells you plainly that they cannot be measured this way.
What to exportExport leads from the client's sub-account, get the client's invoices, and report revenue by source that the client can check against their own books.
What to exportFrom the blog
Every agency eventually meets the client whose sales director says the leads are rubbish. More dashboards will not fix it. What fixes it is measuring on the client's own revenue data — which is the one thing most agencies are structurally reluctant to ask for.
Read the articleBoards do not distrust marketing numbers because they are bad at maths. They distrust them because the numbers keep changing, do not tie to the accounts, and arrive with no statement of what was not measured. All three are fixable in one page.
Read the articleAmazon DSP, DV360, Taboola and StackAdapt all report conversions. None of them reports your revenue. Retail media and programmatic are sold on a closed loop, and the loop closes inside the platform — which is precisely where your finance team cannot look.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.