Enrollments and tuition, not inquiries
Rank channels by the tuition they produced, so one substantial enrollment outweighs a page of inquiries.
Marketing attribution for Tutoring Centers
Match enrolled students and the tuition they pay across terms to the campaigns that produced the parent.
$203,000 58% of $350,000 paid
The blind spot
Tutoring is bought term by term. A single enrollment fee makes every channel look marginal, when the actual outcome is a year of weekly sessions.
What you get
Rank channels by the tuition they produced, so one substantial enrollment outweighs a page of inquiries.
An enrollment that closes quarters after the click still credits the campaign behind it, because the match is on the student rather than a session.
Only exact matches count toward tuition. Anything weaker is flagged for somebody to confirm, and anything unmatched stays unmatched.
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 | 64 | $112,000 | 32% | |
| Meta Ads | 35 | $59,500 | 17% | |
| Local partnerships | 18 | $31,500 | 9% | |
| Direct / Unknown | 84 | $147,000 | 42% |
A student who enrolls for one term at $600 and stays for five is worth $3,000, and a sibling frequently follows. Judged on the first payment, every channel looks barely viable.
Because the match is on the parent, every later term credits the channel that produced them — and the channels producing families who stay are rarely the ones producing the cheapest inquiries.
Enrollment spikes before exams and collapses in summer. Comparing consecutive months tells you about the calendar, not about the marketing.
With no attribution window, the same term can be compared against the same term last year, which is the only comparison that isolates what changed in the marketing.
Almost every tutoring center puts a free diagnostic assessment between the inquiry and the enrollment. A parent calls, a time is booked, the child is tested, and two weeks later a program is recommended and a price is given. That assessment is where the sale is actually made, and it is also the point at which most centers stop measuring, because the marketing report ends at the call and the enrollment report starts at the payment. Nothing in either file describes what happened in between them.
Using the assessment bookings as the lead file is what closes the gap. Each marketing source then carries two numbers: how many assessments it produced and what those assessments became in tuition. One channel may book assessments cheaply and convert them poorly while another books fewer at a higher cost and converts most of them, which would reverse the ranking a center has been managing to for years.
The no-show rate belongs in the same reading. An assessment booked and not attended costs a tutor's time and produces nothing, and it is not evenly distributed across sources. A channel producing parents who were half-interested at eleven at night will fill the diary and empty it again, and the center experiences that as a scheduling problem rather than a marketing one until both files are put side by side. Once they are, it becomes a decision about where the inquiries come from.
Tutoring is usually sold in blocks. A parent buys twenty hours, or a term, or a package running to an examination date, and the money arrives at the start while the teaching happens across the following months. Which date the export carries decides whether the report describes when families committed or when the center delivered, and those two versions of a year can look quite different in a business with a strong seasonal shape. Neither is wrong; using both inside one history is.
For attribution the payment date is generally the more useful one, because it sits closest to the decision the advertising produced. Where a center recognizes revenue as hours are delivered, both can be exported: the payment row credits the channel that produced the family, and a delivery row carrying the same contact detail credits it again as the hours are used. The report answers either question without anybody re-running an export. What it cannot do is reconcile a file that switched convention partway through.
Unused hours are worth tracking too. Packages expire, families move, a child's needs change, and the difference between hours bought and hours taught is a real number in most centers. A channel producing families who buy large packages and use half of them is producing revenue and also producing a refund conversation and a review risk. The report counts the amount you export, so export what was billed and keep delivered hours in your own records beside it; it does not hold the two side by side.
A tutoring center's best sources are frequently people rather than platforms. A head of year who mentions you, a special educational needs coordinator, a pediatrician, the parent committee at a local school, another center that does not teach what you teach. None of these appears in any advertising account, and all of them produce enrolled students who pay tuition for terms at a time. Most centers maintain these relationships attentively and measure them not at all, which is an odd combination to live with.
Each of them is a list, even when it is an informal one. A referral log, the contacts collected at a school open evening, the families from a workshop the center ran at the local library. Added to the lead file, each tagged with its source, they rank on tuition beside the paid campaigns, which does two useful things at once: it shows which relationships genuinely produce, and it stops paid media being credited for students who arrived because a teacher said your name in a meeting.
That second effect matters more than it sounds. Where relationship-sourced students are invisible they fall into the unattributed bucket, and a center concludes that a third of its business comes from nowhere in particular. Where they are uploaded, that share resolves into named sources somebody can actually invest in. The remainder stays in Direct / Unknown, honestly, and it is a smaller and far more interesting number once the relationships have been lifted out of it. That can be the single most useful thing a first report produces.
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 later terms must credit the original channel — that is where the difference between channels shows.
Which the Direct / Unknown bucket is honest about. The report measures the part you pay for.
None of it is needed. A parent contact detail, an amount and a date, nothing else.
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. Starter usually fits tutoring franchises and test-prep centers — one workspace, one seat, and everything that makes the number defensible from the first plan.
A single business getting started
$9/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
Enrollments or tuition payments: a parent email or phone, the amount, and a date.
Yes — they credit the channel that produced the family.
Yes, when they match the same parent contact.
Yes, with a location column, which keeps one strong performer from carrying the appearance of the others.
Yes. There was no tag running back then and it makes no difference: the student appears in both files either way.
Encrypted, isolated per workspace, deletable, DPA available. No student data is needed.
No. Where you already have them, a tracked caller's number is a clean key and raises the match rate, but nothing requires tracking numbers — the inquiry-form export from your ad platforms and website is enough to start.
Enrollment or payment rows analyzed in a calendar month. Inquiry rows do not count.
Use the booking list as the lead file. Each channel then carries both the assessments it produced and the tuition those became, and the channel with the most assessments may not be the one with the most tuition.
It does, once both files are loaded. No-shows are not evenly distributed across sources, and a channel producing half-interested late-night inquiries fills the diary and empties it again at the center's expense.
Payment sits closest to the decision the advertising produced. Both can be exported where revenue is recognized as hours are delivered; what causes trouble is a history that switched convention partway through.
Not from the report: each row carries one amount, so it counts what was billed and cannot hold delivered hours beside it. Keep hours taught in your own records against the families each channel produced; a channel whose families buy large packages and use half of them is producing a refund conversation as well as revenue.
Yes, in the lead file, even from an informal referral log, each row tagged with its source. Ranked on tuition beside paid campaigns they show which relationships genuinely produce, and stop paid media being credited for students a teacher sent.
Usually, and substantially. Once relationship sources are uploaded, much of what looked like business from nowhere resolves into named sources you can invest in, and what remains is smaller and more interesting.
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 starts and the tuition they generate to the campaigns and events that produced the applicant.
See how it worksWhere your sales already are
Export paid invoices and contacts, upload your ad and call sources beside them, and rank marketing on revenue rather than on opens.
What to exportExport your Mindbody sales, upload the leads that produced them, and rank marketing on what members spent rather than on trials booked.
What to exportFrom 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 articlePixels were built for sales that finish in a browser. Most sales don't. Here's the method that works on exports you already have — and why the tools you're paying for structurally cannot do it.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.