Here’s a number that gets bootcamps in trouble: a $40 cost-per-lead. It looks great in the dashboard. It looks like you’re winning. And it’s quietly draining your ad budget into people who fill out a form and never enroll.
The fix is to measure the right thing, then feed that thing back to Google so Smart Bidding chases enrolled students instead of cheap form fills. No new bid strategy, no bigger budget required. By the end of this you’ll know how to weight every stage of your funnel so a $120 lead that enrolls beats a $40 lead that ghosts, and the exact mechanism that makes it happen.
Why a cheap cost-per-lead is the most expensive number in your account
Cost-per-lead measures the wrong end of the funnel. A lead is the start of the conversion, not the end of it. When you optimize toward cost-per-lead, you’re telling Google “go find me the cheapest form fill you can,” and Google is very, very good at doing exactly what you ask.
So it finds them. It finds the people browsing on their lunch break, the ones comparing 9 programs, the ones who’ll never pay the deposit. Your cost-per-lead drops. Your enrollments don’t move. And because the algorithm is optimizing toward the signal you handed it, the longer it runs, the better it gets at finding cheap leads that don’t enroll.
In bootcamp accounts we see this constantly. Two campaigns, same spend. One reports a $40 cost-per-lead and almost no enrollments. The other reports $120 and fills cohorts. On the dashboard the first one looks like the winner. In the bank account it’s the loser. The cost-per-lead was lying the whole time.
The honest math: if it takes 50 of those $40 leads to enroll one student, your real cost per enrollment is $2,000. If it takes 8 of the $120 leads to enroll one, your real cost is $960. Same dashboard, less than half the actual cost. The number that matters was hiding two stages down the funnel.
Map the real funnel: lead to application to interview to deposit to enrolled
A bootcamp doesn’t sell a form fill. It sells a seat in a cohort, and there’s a whole funnel between the two. For most programs it looks something like this:

Lead → application → interview / admissions call → deposit → enrolled.
Each stage drops people. That’s normal and healthy. But each stage also carries a different amount of information about whether that person is real. A lead is a maybe. An application is a stronger maybe. Someone who shows up to the admissions interview is telling you something a form fill never could. Someone who puts down a deposit has basically decided.
Here’s the part most accounts miss: those later stages are worth more, and not by a little. The whole point of bidding on enrollments is teaching Google that an interview is worth more than an application, and a deposit is worth more than an interview, so it spends your money chasing the people who move down the funnel, not the ones who stall at the top.
If you’ve already mapped this properly for tracking, you’re ahead of most of the field. If you haven’t, that’s the real first step, and it’s the same foundation we lay out in our guide to conversion tracking for online course businesses. You can’t bid on a stage you don’t measure.
How to put a value on each stage of the funnel
You don’t need a perfect number. You need a directionally honest one. The method is simple: work backward from what an enrolled student is worth, then weight each earlier stage by the rate at which it converts to the next.
Say an enrolled student is worth $12,000 in tuition. Now look at your own historical close rates between stages. Made-up but realistic example:
- 40% of leads submit an application
- 50% of applications take the interview
- 60% of interviews put down a deposit
- 80% of deposits enroll
An enrolled student is worth $12,000. A deposit is worth $12,000 × 80% = $9,600. An interview is worth $9,600 × 60% = $5,760. An application is worth $5,760 × 50% = $2,880. And a raw lead is worth $2,880 × 40% = $1,152.
So a lead carries a value of about $1,150 and an enrolled student carries $12,000. That’s the spread you’ve been hiding from the algorithm by treating every form fill as one flat conversion. The proxy value for any stage is just the deal size multiplied by the close rate from that stage to enrollment. Run it for your own numbers and you’ve got a value for every step.
One honest caveat. These close rates aren’t permanent. Run them on a few months of real data, recheck them quarterly, and resist the urge to over-engineer. A roughly-right value updated regularly beats a precise value that’s a year stale.
Feed those values back to Google with offline conversion tracking
This is the mechanism that makes the whole thing work, and it’s where most bootcamps stop short.
When someone fills out your form, the most a browser pixel knows is “a form was submitted.” It can’t know that three weeks later that person took the interview, or two weeks after that put down a deposit. Those outcomes happen in your CRM, on the phone, in an admissions spreadsheet, long after the click. The pixel never sees them.
Offline conversion tracking closes that gap. It sends the later outcomes back to Google Ads and ties them to the original click, so the algorithm finally learns which clicks turned into deposits and which ones turned into nothing. Without it, Smart Bidding is optimizing on the only thing it can see, the cheap form fill, which is exactly the trap we started with.
The cleanest way to wire the click to the offline outcome is the GCLID (Google’s click identifier), with enhanced conversions for leads as a hashed first-party fallback for the records where the GCLID went missing. You capture the GCLID when the lead comes in, store it on the record in your CRM, and when that person hits a later stage you upload the outcome and its value back to Google. Now the algorithm is learning from deposits and enrollments, not lunch-break form fills.
One timing note that trips bootcamps up: Google’s conversion window has a ceiling of 90 days. If your average lead takes four months to enroll, the enrollment itself will fall outside the window and won’t count for bidding. The move there is to optimize on an earlier high-signal stage that lands inside 90 days, usually the interview or the deposit, and treat enrollment as your reporting truth rather than your bidding signal.
Switch the campaign to bid on value, not volume
Once the stage values are flowing back into the account, you change what you’re asking Google to maximize. Instead of Maximize Conversions (which treats every form fill as one identical unit), you move to value-based bidding: Maximize Conversion Value, with a target ROAS once you have the volume to support it.
Now the question Google is answering flips. It stops asking “where’s the cheapest form fill?” and starts asking “where’s the next $9,600 deposit?” Same budget, completely different behavior. It’ll happily pay more for a click that looks like a future enrollment and back off the ones that look like tire-kickers, because you finally told it what those clicks are actually worth.
Two guardrails before you flip the switch:
Volume. Value-based bidding needs data to learn from. The working floor is roughly 50 conversions a month for a value-based strategy, and you want around 50 deal-valued conversions in the account before you run the experiment at all. If a single campaign can’t clear that, consolidate. Fewer campaigns with denser data beat a dozen starved ones, which is a structural problem we dig into in the five reasons scaling PPC fails.
Patience. Changing a bid strategy or moving your target more than about 25% restarts the learning period for a week or two. Make the change, then leave it alone. Daily tinkering off this week’s numbers is the same mistake as managing to a daily sales figure when revenue actually lands two or three weeks later. You’re reacting to noise.
What this looks like when it’s working
The reporting gets quieter and more honest. Your cost-per-lead might go up, and that’s fine, because the number you watch now is cost per enrolled student and downstream cohort fill. You stop celebrating cheap leads. You start seeing whether the value you’re generating is growing faster than the cost to generate it, which is the only comparison that’s ever mattered.
The bidding gets smarter on its own, because the better the signals you send Google, the better the result. Feed it deposits and enrollments and it goes hunting for more of them. Feed it $40 form fills and it goes hunting for more of those. The algorithm was always going to be obedient. The whole game is making sure it’s obedient to the right number.
This is the conversion-tracking pillar of how we run bootcamp accounts: measure what actually matters, structure the account so Smart Bidding has enough clean signal to learn from, then let value-based bidding do the heavy lifting. If you want the full picture of how the channel fits together for a bootcamp, start with our complete guide to Google Ads for bootcamps.
Your cost-per-lead isn’t lying because the platform is broken. It’s lying because you asked it the wrong question. Ask it the right one and it’ll go find your next cohort.


