Client
An online German language school targeting Russian speakers living in Germany and Austria. The Google Ads account was billed in US dollars. Two product lines: German for adults (general searches) and German for children.
Goal
Bring in sign-ups for a trial lesson and follow them through to paid courses. The key requirement was to measure the whole funnel to revenue, not just leads: lead → trial lesson booked → trial lesson held → payment.
Audience and product
- Audience: Russian speakers in Germany and Austria learning German, and, separately, parents buying lessons for their children
- Product: online German lessons, with a free trial lesson as the entry point
- Average order: ~$75–325 (varied)
- Sales cycle: lead → trial lesson → payment, with a delay, so payback takes time
What I did
- Campaigns by product line (search, Germany + Austria): a campaign for adults on general searches, and a separate campaign for children with its own landing page for parents.
- Full-funnel tracking. I tracked not only leads but every stage: trial booked → trial held → payment. That made it possible to calculate real unit economics (customer acquisition cost, ROAS, average order, cash collected) instead of stopping at cost per lead.
- Weekly control and optimisation. I managed the campaigns week by week, watched where leads dropped out of the funnel and moved budget between the product lines.
Hypotheses and tests
| Hypothesis | Result |
|---|---|
| Children and adults are different audiences and need separate landing pages | Confirmed: the children's line had the best cost per lead ($36 at its best) |
| Measure the funnel to payment, not to the lead | Confirmed: the real cost per customer and ROAS became visible |
| Search in Germany and Austria will pay off over time | Partly: still a test stage, payback is long and ROAS is catching up |
Results
Totals for the period (~13 weeks):
| Metric | Value |
|---|---|
| Spend | ~$4,603 |
| Leads | 40 |
| Trial lessons booked | 32 |
| Trial lessons held | 19 |
| Payments | 6 |
| Cash collected | ~$1,167 |
| Cost per lead (average) | ~$115 |
| Cost per paying customer | ~$767 |
Funnel conversion by stage:
| Step | Conversion |
|---|---|
| Lead → trial booked | 80% (32/40) |
| Trial booked → trial held | 59% (19/32) |
| Trial held → payment | 32% (6/19) |
| Lead → payment | 15% (6/40) |
Best weeks by cost per lead: $36.26 for the children's line, and from $27.90 for adults at the start of optimisation.
Challenges and solutions
Long payback and low ROAS within the test window. Course payments don't arrive right after the trial lesson, so ROAS in the reporting window doesn't show the full return (in the best weeks it reached 1.04). The solution was to look at the whole funnel, not just revenue in the moment. Where there are many leads but few payments, the problem isn't the ads; it's the trial-to-payment step, which is down to sales and teachers.
Small weekly volumes and noisy statistics. At 1–9 leads a week, individual metrics jump around (cost per lead anywhere from $28 to $680). So I made decisions on smoothed data and the overall funnel, not on a single week.
Takeaways
The main value of this case is tracking all the way to payment. A $115 cost per lead says nothing by itself. What matters is that 80% of leads booked a trial and 15% paid. That funnel shows where money is really lost, and the bottleneck is almost never the ads; it's the “held the lesson → bought” step.
Splitting children and adults paid off: the children's line had a noticeably lower cost per lead, because parents are a more motivated audience with more spending power. That's an argument for shifting budget towards the more profitable segment.
For an online school with a long payment cycle, you can't judge a channel by ROAS in the moment. You need to look at cohorts and lifetime value, or you'll write off a working channel too early.