Enrollments and tuition, not inquiries
Rank channels by the tuition they produced rather than the forms they filled.
Marketing attribution for Trade & Vocational Schools
Match starts and the tuition they generate to the campaigns and events that produced the applicant.
$768,000 64% of $1,200,000 paid
The blind spot
Vocational enrollment marketing is judged on applications. Applications are cheap, starts are not, and the gap between the two is where the budget is lost.
What you get
Rank channels by the tuition they produced rather than the forms they filled.
Someone who inquired for one intake and started at the next still credits the original campaign.
High-confidence matches count automatically; a partial link is queued for review rather than quietly counted as an enrollment.
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 | 102 | $408,000 | 34% | |
| Meta Ads | 58 | $228,000 | 19% | |
| Career events | 33 | $132,000 | 11% | |
| Direct / Unknown | 109 | $432,000 | 36% |
Application-to-start rates vary enormously between channels. A channel producing applications at half the cost can produce starts at twice the cost, and the reporting most schools use cannot see that at all.
Ranking on tuition from actual starts is the correction, and it usually redirects a meaningful share of the budget within one cycle.
Vocational education is a heavily scrutinized category, and outcome claims are examined. An attribution model that guesses is not something you want in the file.
Only exact matches count automatically. Unmatched tuition stays in Direct / Unknown rather than being distributed across channels, so every figure traces back to two records.
Much of the inquiry volume in vocational education is bought rather than generated. An aggregator runs the advertising, captures somebody interested in a career field, and passes that person to several institutions at once. The prospective student then hears from four admissions teams in a day, which affects how they behave and how likely they are to start anywhere at all. On a cost-per-inquiry report that source frequently looks like the best one available. On a start-and-tuition report it frequently does not.
Combining each aggregator's own lead export into the lead file, each row tagged with the aggregator, is what makes the comparison possible. Every source is then ranked on tuition from students who actually started, over the same period and on the same axis, including your own campaigns and the inquiries arriving through your own website. The spread between aggregators may well be far wider than the spread in what they charge, which is not something any aggregator will tell you.
There is a second reason to hold those files. An inquiry sold to four schools may appear in four aggregators' lists and start at one of them, and a school that cannot see which list a starter came from has no way of pushing back on an invoice. Matching on the student's own contact detail settles it: the inquiry either appears in that aggregator's export or it does not. Where a starter appears in two aggregators' lists, the start is credited to whichever delivered the earlier lead, not to both.
A six-week certificate and a two-year diploma are different businesses sharing a building. They cost different amounts to deliver, they carry different tuition, they attract different people, and the marketing that fills one does very little for the other. A school with a broad catalog that ranks its channels once, across everything, gets a list describing whichever program happened to be recruiting hardest that quarter, and then allocates the following quarter's budget from it. The resulting drift is slow and hard to see from inside.
Adding a program column, mapped as Product / service, shows tuition by program with how much of each traces to a channel. It does not rank sources within each program, but it shows whether the programs carrying the highest tuition are the ones marketing actually reaches, and it can expose a program whose starts arrive almost entirely with no trace in the lead file. None of this is visible in a blended table, and none of it needs new data — only a column the student record system already holds.
Continuation belongs in the same file if the school wants the whole picture. A student who starts and leaves in week three has generated an enrollment and very little tuition; a student who finishes and returns for a further qualification has generated considerably more. Exporting tuition as it is actually billed, term by term or stage by stage, rather than as one headline figure at enrollment, is what lets the report tell them apart without anybody building a separate retention analysis to do it.
Vocational schools do not recruit continuously. Cohorts start on fixed dates, sometimes monthly and sometimes three times a year, and an inquiry arriving the week after a cohort fills is not lost — it is waiting. Reporting on calendar months therefore produces a figure that oscillates with the intake calendar rather than with anything the marketing did, and a month with no start date in it can look like a collapse in performance. It is a gap in the timetable, not in demand.
Comparing intake to equivalent intake is the correction, and it is available immediately because nothing needed to be running when those cohorts started. A school can load two years of starts and two years of inquiries on the first afternoon and compare the same intake across both, which is the only comparison in which the calendar is held still and the marketing is the variable being tested. Waiting to accumulate that comparison costs a recruitment year and buys nothing. A school that waits is simply choosing to make next year's decisions on this year's guesses.
The waiting period between the inquiry and the next available start date is worth measuring in its own right. If one channel produces people who enroll into the next cohort and another produces people who defer twice before starting, those channels have different working capital implications even when their tuition totals eventually match. Because there is no window, both are credited correctly whenever the start happens, and the interval itself becomes a number the admissions team can act on rather than an impression.
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 the problem. Applications that never start appear as unmatched leads and cost nothing against your allowance.
Export the tuition figure your finance team recognizes; the match does not care where it came from.
Nothing is inferred and nothing is redistributed. Unmatched revenue is shown as unmatched.
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 trade schools, vocational colleges and apprenticeships — 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.
Starts or tuition: a student contact email or phone, the amount, and a date.
Yes — applications are the lead file, starts the sales file.
Yes, with a program column — and it is worth adding, because a blended average across them describes none of them.
Yes — add the attendee list to the lead file, tagged with the event.
Yes, with a campus column.
Yes — student records are encrypted both in transit and at rest, kept inside your own workspace, and removable on request. A DPA is available.
Yes, and there is no window to fall outside of. However long ago an enrollment closed, it matches if the student is in both files.
Start or tuition rows analyzed in a calendar month. Application rows do not count.
Add their lead export to the lead file, tagged with the aggregator. Starts then match against it on the student's own contact detail, so an invoice can be checked rather than accepted: the student is either in their list or not, and a student who was in someone else's list first is credited to that earlier lead.
Yes, with a program column mapped as Product / service, which shows each program's tuition and how much of it traces to a channel. It does not rank sources within a program, so the channel ranking itself still reflects whichever program was recruiting hardest that quarter.
Compare intake against equivalent intake rather than month against month. A calendar month with no start date in it looks like a collapse in demand when it is only a gap in the timetable.
Yes. There is no window, so the start credits the original inquiry whenever it happens, and the interval between the two becomes a number the admissions team can work on rather than guess at.
As it is billed, term by term or stage by stage. A student who leaves in week three and one who completes both look like a single enrollment otherwise, and only the billing tells them apart.
As far as the records go, because they were kept for billing rather than for tracking. Two years of starts and two years of inquiries load together and give an immediate intake-on-intake comparison.
Nearby
Match enrolled students and the tuition they pay across their years to the open days and campaigns that produced the family.
See how it worksMatch paid enrollments, upsells and renewals to the campaigns that produced the learner, past the free trial that hid them.
See how it worksMatch enrolled students and the tuition they pay across terms to the campaigns that produced the parent.
See how it worksFrom 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 articleBefore you blame the matching algorithm, look at how phone numbers are stored on each side. Extensions, country codes, leading zeros and a spreadsheet that decided a number was maths — this is where most attribution quietly fails.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.