Answer this out loud, about your own school or program: what did an enrollment actually cost you last month — by source, net of financing?
If answering takes more than one tab, that’s not a reporting problem. It’s a decision-making problem, and it’s costing you revenue every week.
The setup
Here’s the situation almost every trade school is in. Ad spend lives in Meta and Google. Leads and calls live in the CRM. Applications and enrollments live in the student system. The money — what was collected, what the lender advanced, what’s still outstanding — lives in a finance system nobody in marketing can log into. And a spreadsheet somebody updates on Fridays tries to hold it all together.
Five systems. Five versions of the truth. The number that actually matters — am I making money, and on which source — doesn’t live in any of them. It lives in the gaps between them, which means it doesn’t exist anywhere.
Even some of the best-run schools we’ve seen still handle this by hand: one spreadsheet, updated by a person every Friday, 40 different rows once you factor in multiple campuses and programs. It works, technically. It’s also slow and full of human error — and if you don’t have this in real time, you don’t know where to double down, where the bottleneck is, or what needs to be solved today instead of next month.
The chain
Every school runs the same chain: ad click, lead, contacted, appointment set, showed, application, enrolled, funded, cash collected, started class, past the refund window, graduated, placed. One continuous story about one human being.
The diagnostic question: how far along that chain does your data reach, reliably, without a human building a report by hand? Nearly every school has clean data through Lead. A decent number make it to Enrolled. Almost nobody gets past Funded — and every dollar that matters lives in the half of the chain most schools can’t see.
That’s why optimizing toward cost per lead is dangerous. Meta is genuinely excellent at generating cheap leads, but it has no idea which of those leads enrolled, funded, or stayed enrolled 30 days later. Scale the cheap source, kill the expensive one, and a good chunk of the time you just killed the profitable one.
What “one place” actually requires
Three things, all three, or it doesn’t work:
- Every source, automatically — Ad platforms, CRM (often more than one), student system, financing data — connected on a schedule, with zero manual exports. The moment a human downloads a CSV, the delay and the errors are back.
- Live — Not a monthly deck, not “as of last Friday.” The decisions that matter in paid acquisition — kill this creative, move this budget, this rep’s speed-to-lead fell off a cliff — are same-day decisions. A dashboard that’s 24 hours stale can’t support any of them.
- One person, click to cash — Not marketing numbers pasted next to finance numbers on the same page — that’s a collage, not a system. One record, one identifier, following one individual from the ad they clicked to the money that actually landed.
That third requirement is the hard one. The same human shows up in four systems, on four different dates, under four different definitions. Meta counts them at form submit, attributed to the click, in the ad account’s timezone, on a seven-day window. The CRM counts them when the record lands, in a different timezone. The student system dates them to the class start, not the day they signed. Finance counts them whenever the cash actually hits — sometimes 60 days later.
One person. Four dates. Four definitions. Reconciling that is the entire job. It’s why hand-built reports never agree, why marketing and admissions can both be “right” in the same meeting, and why most schools quietly go back to steering by cost per lead.
Two examples, fully automated central dashboard
We built this for two clients, proving the same system two different ways. Both pull from at least five separate systems — CRM (multiple points inside it), Meta, Google, the school’s financing platform, and their student/application portal — aggregating and updating in real time.
HVAC, electrical & plumbing school
The first is an HVAC, electrical, and plumbing school, and it shows the back half of the chain almost nobody instruments: credit tier and tuition option. Two enrollments can look identical on a whiteboard — same sticker price — and produce radically different cash, once lender advance rates and tuition-option mix enter the picture. This dashboard breaks out cost per enrollment by program (electrical vs. plumbing), by lead source, by rep, and by credit tier — the school’s executive team can pull up “cost per enrollment by program” and have an answer in about three seconds, instead of waiting on a hand-built report.
The dollar gap between cost per lead and true cost per enrollment, the show-rate spread across programs, the net-revenue spread by lead source, and the cash spread across credit tiers all sit right there on the dashboard itself — visible the moment someone opens it, not buried in a report a human has to assemble first.
Eight-campus veteran & military program
The second is an eight-campus program serving a veteran and military audience. With eight campuses, an average hides the one location that’s broken — so the dashboard leads with rates, not volume, plus live lead-quality tracking segmented by demographic. That last part mattered enormously here: the ideal student is far enough out from service to have meaningful GI Bill benefits left, but not so far out that the window’s closed. Before this was visible in real time, the school pulled that breakdown by hand and found roughly 50% of leads were outside the target age window. Once the front-end targeting got optimized against that live data, it dropped to 14% — a straightforward example of a metric that was invisible becoming the exact lever that moved enrollments.
The build order
- Pick the one number the school steers by — For almost every school, that’s net cash per enrollment, by source. Everything else is supporting cast.
- Fix the ID — One record follows one human from ad click to CRM to student system to finance. This is the unglamorous part, it’s most of the work, and it’s the part everyone wants to skip.
- Push conversions back to the ad platforms — Once enrollment and funding events flow back to Meta and Google as offline conversions, the algorithm optimizes toward money instead of form fills.
- Instrument the handoffs, not just the endpoints — speed to lead, set rate, show rate, application rate, close rate, by rep and by source.
- Automate delivery — If someone has to log in, they won’t.
- Kill every competing report — If two systems disagree, one has to be wrong on purpose.
Match the cadence to the metric
| Cadence | Metrics |
|---|---|
| Daily | Ad spend, lead volume, cost per lead, contact rate, speed to lead |
| Weekly | Appointment-set rate, show rate, application rate, rep performance |
| Monthly | Cost per enrollment, net cash per enrollment, net cash by source |
Live data doesn’t mean staring at every metric constantly. Watching a slow-moving number too frequently isn’t discipline — it’s noise-chasing, and it’ll have you tearing apart campaigns that were fine.
The honest caveat
A dashboard nobody makes a decision from is a very expensive screensaver. Every metric on the screen needs a name attached and an action it triggers. If show rate drops below a threshold, someone specific does something specific. No name, no action — take it off the screen.
The value was never the data. It’s that decisions get made in hours instead of weeks, off the same set of facts.
If your data is scattered across five systems and nobody can answer “what did an enrollment cost me” in under a minute, talk to Atomic Enrollment about building a dashboard like this one.