Built for a long cycle
Saved periods mean a contract signed in Q3 still credits the Q1 campaign that produced it.
Marketing attribution for Corporate Training Providers
Attribute signed training contracts to the channels that produced the first inquiry — months earlier, on a different device, by somebody who has since changed job title.
$322,000 70% of $460,000 paid
The blind spot
Your marketing report ends at the demo request. The contract is signed a quarter later after three calls and a procurement review, and by then nothing connects it to the campaign that started it.
What you get
Saved periods mean a contract signed in Q3 still credits the Q1 campaign that produced it.
Not inquiries, not demos — signed revenue.
One enterprise cohort outweighs fifty individual course sales, and the report weights it that way.
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 | % |
|---|---|---|---|---|
| LinkedIn Ads | 41 | $147,200 | 32% | |
| Google Ads | 33 | $110,400 | 24% | |
| Email marketing | 19 | $64,400 | 14% | |
| Direct / Unknown | 38 | $138,000 | 30% |
An individual buying a course clicks and pays, and the pixel records it perfectly. An employer buying a program for forty people fills in a form, takes a call, asks for a proposal, runs it past L&D and procurement, and signs a quarter later.
The second kind is where the revenue is, and it is invisible to every measurement your ad platforms offer. So budget gets defended with demo requests and MQLs — numbers that correlate with revenue only loosely, and that a finance director has learned to discount.
The right unit of attribution is the original inquiry, because that is where the channel did its work. What CloseRev does is match your CRM's closed-won export against the lead-source export from the same period range, so the contract credits the campaign that produced the conversation.
Because periods are saved rather than overwritten, the picture compounds: by the third quarter you can see which channel produces inquiries that actually become contracts, and which produces a busy pipeline that never closes.
Corporate training is rarely bought at full size on the first order. A learning and development team runs a pilot with one department, measures whatever it has decided to measure, and comes back six months later for the wider rollout if it went well. The first contract is small and hard to justify against the cost of winning it. The revenue that makes the relationship worthwhile arrives in the second and third years, by which point nobody is still asking where the account came from.
Because the match is on the person who made the original inquiry, later contracts with the same buyer credit the channel that produced them. Export every closed deal rather than only new logos and the ranking rearranges itself around accounts instead of around first orders. A channel producing four pilots that each became a rollout is worth a great deal more than one producing twelve pilots that stayed pilots, and on a first-order report those two appear as the weaker and the stronger performer respectively.
This is also the honest way to handle renewals. A renewal is not produced by the campaign running in the month it is signed, and crediting it that way flatters recent advertising while erasing the work that won the account in the first place. A deal-type column mapped as Product / service shows new business, expansion and renewal as separate lines, each with how much of it traces to a channel, and so growth driven by existing customers is not mistaken for a working acquisition channel.
Learning and development professionals move jobs frequently, and when they do they take their supplier preferences with them. A buyer who ran a successful program at one employer will ask for you by name at the next, often within a year. On any account-based model that arrives as a new company, a new logo, and a sale attributed to whatever campaign happened to be running when they got in touch — usually a branded search that did nothing but be findable at the right moment.
Matching on the person rather than the company describes what actually happened instead of what is convenient. The buyer's email or phone appears in the original inquiry file and again in the new deal, so the credit follows them, and a company-name column keeps the two employers distinguishable inside the report. For a training provider whose growth is genuinely driven by reputation within a small professional community, this is not an edge case at all; it is the main mechanism, and most have never had a number for it.
The reverse case deserves a mention because it is the more common disappointment. When a buyer leaves and the account is inherited by somebody who never met you, the renewal frequently does not happen, and nothing about the campaign that won the account was at fault. Carrying the contact on each deal makes that visible as a pattern rather than as a run of bad luck, which turns it into a question about who else at the client you know — a prompt the marketing report can at least supply.
There are several defensible numbers to export and they answer different questions. Contract value at signature tells you what the channel sold. Revenue recognized as cohorts are delivered tells you what the business earned, which for a multi-year program can be a very different shape. Invoiced amounts sit somewhere between the two. None of these is the right answer in general; the wrong answer is using more than one of them across a single history, because the report cannot detect that and the comparison silently stops meaning anything.
Seat counts matter alongside whichever figure you choose, because a training business is capacity-constrained in a way most service businesses are not. A channel producing large contracts that book every facilitator for a quarter is a different proposition from one producing the same revenue across many small cohorts, and the second may be better or worse depending on how the delivery team is structured. The report does not read a seat count, but it shows each channel's number of sales beside its revenue and breaks revenue down by deal size, which together go a long way toward that distinction.
Where programs are delivered across several client sites or regions, a region column mapped as Location earns its place too. It shows each region's revenue and how much of it traces to a channel, which matters particularly where a partner or reseller operates in one territory and not another, because an aggregate figure quietly averages a strong market together with a weak one. It does not rank channels within each region, but a region whose revenue sits mostly in Direct / Unknown is visibly one the current channels are not reaching. That is the difference between concluding a channel does not work and concluding it does not work in one particular place, and the two lead to very different decisions about next year's budget.
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
That is the case this is built for. Load a wide enough date range on the lead file and the match reaches back across the cycle; the saved periods keep the comparison honest.
Then that revenue reports as Direct / Unknown and you will see its true share. Knowing that paid channels produce a fifth of contracts rather than a half is a useful thing to learn before renewing a contract with an agency.
Map a product-type column as Product / service and the report shows open courses and corporate programs as separate lines. They often have different channel mixes, and averaging them hides both.
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. Growth usually fits training companies selling programs to employers, where the deal closes on a call — thirteen months of history to compare a month to the same month last year, and a PDF you can put in front of whoever holds the budget.
A business scaling ad spend
$49/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
Closed-won deals from your CRM: a contact phone number or email, the contract value, and the close date.
The buyer, or whoever made the original inquiry. That is the person the campaign reached.
Yes. Use the booked value on the signature date, or split it into rows by year if that is how you recognize it.
Include them, with a type column mapped as Product / service so they show as their own line. They credit the channel that won the account, not whatever campaign was running the month they were signed.
No. Ad platform lead exports work as the second file.
Yes: map an industry or company-size column as Product / service, one per import. The report also breaks revenue down by deal size on its own.
Encrypted in transit and at rest, isolated to your workspace, deletable in one click, and we act as a processor with a DPA.
Closed-deal rows analyzed in a calendar month. Lead rows do not count.
Yes, because the match is on the buyer who made the original inquiry. Export every closed deal rather than only new logos and the ranking rearranges around accounts instead of first orders.
With a deal-type column mapped as Product / service, so renewals show apart from new business and expansion. A renewal is not produced by the campaign running in the month it is signed; it credits the channel that won the account.
Their contact detail appears in the original inquiry and again in the new deal, so the credit follows the person. A company-name column keeps the two employers distinguishable inside the report.
Any of them, as long as it is only one across the whole history. They answer different questions, and mixing them silently breaks every period comparison without the report being able to detect it.
Not seats as such. The report shows each channel's number of sales beside its revenue and breaks revenue down by deal size, so a channel booking every facilitator with a few large contracts reads differently from one producing the same revenue across many small cohorts.
It can, particularly where a reseller covers one territory and not another. A region column mapped as Location shows each region's revenue and how much of it traces to a channel, so an aggregate figure stops averaging a strong market together with a weak one.
Nearby
Match paid enrollments, upsells and renewals to the campaigns that produced the learner, past the free trial that hid them.
See how it worksMatch matriculated students and the tuition they pay across a degree to the campaigns and events that produced the inquiry.
See how it worksMatch signed engagements and their fees to the content, events and campaigns that produced the client.
See how it worksWhere your sales already are
From the blog
Every attribution tool is built for businesses where the inquiry and the purchase happen in the same quarter. If yours does not, almost every default is wrong: the date ranges, the reporting cadence, the optimization signal and the patience of everyone involved.
Read the articleMeta's instant forms are prefilled from the customer's profile, which is why they convert so well and why so few of the leads match anything later. The phone number was not typed by the person who is about to buy from you — it was copied from a profile they last edited years ago.
Read the articleTotal revenue divided by total spend feels like the honest, platform-agnostic metric. It is also incapable of telling you which channel to cut, hides the performance of everything inside it, and improves when you stop spending on the things that grow you.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.