A workspace per client
Each client's data stays isolated in its own workspace with its own retention window; the ten workspaces draw on one shared monthly record allowance.
Marketing attribution for PPC & Paid Search Agencies
Match each client's closed-sales export to the campaigns you ran, so a renewal starts from their revenue rather than your dashboard.
$804,000 67% of $1,200,000 paid
The blind spot
Every quarter you defend the account with platform-reported conversions, and every quarter the client's finance team can't find those numbers in their own accounts.
What you get
Each client's data stays isolated in its own workspace with its own retention window; the ten workspaces draw on one shared monthly record allowance.
Rank every channel by the revenue it closed, so a renewal conversation starts from the accounts.
A match is exact, or it waits for a person, or it is not made. That is deliberately conservative, because a closed revenue figure nobody can check is worth less than a smaller one they can.
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 | % |
|---|---|---|---|---|
| Google Ads | 326 | $528,000 | 44% | |
| Microsoft Ads | 68 | $108,000 | 9% | |
| Meta Ads | 104 | $168,000 | 14% | |
| Direct / Unknown | 244 | $396,000 | 33% |
A client renews on what their accounting shows, not on what your platform dashboard shows. When those two disagree — and they always do, because a platform counts conversions and a ledger counts money — the disagreement is the account's biggest risk.
Starting from the client's own closed-sales export removes the argument. You are no longer asking them to trust a figure from a system they do not control; you are handing back their revenue, sorted by the campaigns that produced it.
Running ten clients through one spreadsheet is how data ends up in the wrong deck. Each client gets an isolated workspace with its own retention window, and access is granted per workspace, so nothing crosses; only the monthly record allowance is shared.
Reports carry your logo on Growth and above, and the Agency plan removes our mark entirely — the client sees your reporting, not ours.
Every paid search account has a brand campaign that looks magnificent. Low cost per click, high conversion rate, a return figure that makes the rest of the account look wasteful, and a steady stream of people who already knew the company's name when they typed it. Cutting it is usually a mistake, but crediting it with the revenue it reports is a larger one, because most of those searches were produced by something else — an organic article, a broadcast spot, a friend's recommendation, a non-brand campaign from three months earlier that last-click reporting has forgotten.
Reconciling against the client's closed sales does not resolve multi-touch credit, and no honest product claims to. What it does is give a single checkable total that cannot be double-claimed, so the channels cannot sum to more than the client actually closed. Inside that total, the pattern worth watching is a brand campaign whose closed revenue moves when non-brand spend moves, which is a strong practical signal about where the demand originated. That is an inference rather than a measurement and should be presented as one, and it is still more than the platform offers.
The conversation this enables with a client is more useful than the usual one. Instead of defending brand spend on its return, which a skeptical finance director will reasonably discount, you can show what the whole account closed and how the branded portion behaves when the upper funnel is funded or starved. That reframes brand search from a suspiciously profitable line item into the last step of a sequence somebody has to pay for. Clients rarely dispute the framing once they have seen the total they closed sitting beside the total the platforms claimed.
Automated bidding pursues whatever signal it is given with complete indifference to whether that signal represents money. Feed it form submissions and it will find the people most likely to submit forms, which in a lead-generation account is frequently a population that never buys anything. Every practitioner knows this, and the practical remedy has always been awkward: the revenue lives in the client's CRM, and getting a clean, agreed figure out of it is somebody's manual job forever. So it happens for two months after a kick-off and then quietly stops.
A monthly reconciliation of closed sales against delivered leads produces that figure as a by-product rather than as a project. You get closed revenue by campaign wherever the lead export carries a campaign column, and you get it in a form both sides have already agreed is correct, because it came from the client's own sales export. What you do with it inside the ad account is your decision and your craft. The point is that the number exists every month, in the same shape, without a negotiation about its provenance each time.
There is a discipline attached. A revenue figure that changes definition between months — gross one month, net of refunds the next, including an outlier deal in a third — is worse than no figure at all when it is steering spend. Agree the basis with the client once, write it into the reporting note, and keep the same columns in the export every period. The column mapping is confirmed once and remembered, which removes the commonest source of that drift; the rest is worth a sentence in the monthly email.
A large share of paid search accounts sit in categories where the website is a switchboard rather than a shop. Legal, medical, home services, business services, education — the form is filled in, a person calls back, and the actual transaction happens in a conversation the ad platform never sees. Conversion tracking in those accounts measures an intention to talk, and intentions vary enormously in value between one campaign and the next. Two campaigns with identical cost per conversion can be ten times apart in what the conversations were worth.
The reconciliation makes the difference explicit without any additional instrumentation. The client's closed sales carry amounts, the lead export carries campaigns, and matching on the person joins them so that campaigns rank on revenue closed rather than on conversations started. It is common for the ordering to change substantially, and for a campaign paused on cost per conversion to turn out to have been the most profitable line in the account. That is an uncomfortable discovery and a valuable one, and far better found by the agency than by a new head of growth.
This is also the argument for keeping call tracking rather than replacing it. A call platform records that a call happened and which campaign produced it, which is exactly the source data this needs, and it does a job nothing here attempts. What it cannot do is tell you what the call was worth three weeks later, because that information lives in the client's system and arrives after the platform has stopped paying attention. The two tools answer consecutive questions, and keeping both costs less than the misallocation the gap has been causing.
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
Which is why the input is a CSV. Any column layout works, and the mapping is confirmed once per client and remembered.
Then those stay on platform reporting and you show the difference on the ones that do. The gap between the two usually persuades the rest.
Keep it. This produces the closed-revenue figure that goes into it — we are the reconciliation, not the dashboard.
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 paid search and performance agencies — 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.
Closed sales: a customer email or phone, the amount, and a date.
Yes — a workspace each, isolated, with its own retention window and access granted per workspace. The monthly record allowance is shared across them.
Your logo on Growth and above; the Agency plan removes the CloseRev mark entirely.
Ten client workspaces on Agency, sharing 25,000 records a month; more workspaces can be added from the billing page.
Yes, if the lead file carries a campaign for each lead: the report then drills from each channel into revenue by campaign.
No, and if the client already runs a call tracker we read its export.
Yes — client's customer records are encrypted both in transit and at rest, kept inside your own workspace, and removable on request. A DPA is available.
Sales rows analyzed in a calendar month, counted across all client workspaces together, since they share one allowance. Lead rows do not count.
The reconciliation gives one checkable total that cannot be double-claimed, so the channels cannot sum to more than the client closed. Watching how branded revenue moves when non-brand spend moves is the practical signal.
The report produces closed revenue by campaign wherever the lead export carries a campaign column. What you do with that figure inside the ad account is your craft; the point is that it exists every month in the same shape.
That is the main risk to using this for optimization. Agree the basis once, keep the same columns in every export, and note the definition in the monthly report so nobody quietly changes it.
Then conversion tracking is measuring an intention to talk. Matching the client's closed sales against your lead export ranks campaigns on what the conversations were worth, which frequently reorders the account substantially.
No. A call platform records that a call happened and which campaign produced it, which is exactly the source data this needs. The two answer consecutive questions rather than the same one.
Minutes per client. The column mapping is confirmed once and remembered, so each period is two file drops and a read of the report rather than a rebuild from scratch.
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 the client's closed sales to the organic and content channels that produced them, months after the article ranked.
See how it worksReconcile every platform's self-reported conversions against the client's actual sales export, and optimize on what survives.
See how it worksWhere your sales already are
Export your WhatConverts leads, match them against your invoices, and see where the recorded values and the real ones part company.
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 articleA website form reports every submission as a lead: the bot, the typo, the fake email and the same person twice. Only a fraction of those rows carry a real person you could ever find in your sales records. Here is how to clean form leads, which fields make them matchable later, where the entries actually end up, and how to judge forms by sales.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.