About Services Cases Blog Tools Reviews Partners Contacts

Google Ads case study: tutoring platform, CPS 604 UAH ($13.4) in a competitive niche

Google Ads case study: tutoring platform, CPS 604 UAH ($13.4) in a competitive niche

This is one of my favorite projects. Not because of the numbers — although the numbers are great too — but because of how the client works. They are open to everything new and ready to implement very quickly everything I have built up over the years. There are no doubts about my competence or what I do. I consider this case more than successful.

Contents
  1. How the cooperation started
  2. Results for the current period (off-season)
  3. How the client broke a working structure himself
  4. The solution: split the goal by subject and feed the system quality signals
  5. Campaign structure
  6. The client’s reaction
  7. Next step: passing value
  8. An important note on attribution
  9. Challenges ahead
  10. Summary
  11. FAQ

How the cooperation started

They came for a consultation at the end of last year — we looked at the ad account and went through the things they did not like. The consultation quickly turned into long-term cooperation, although there were breaks: they were finishing the website, features and CRM, so there was no active advertising for a while. This summer they came back to me again. That is the best sign of trust there can be.

At the start, the standard picture: no tracking, a chaotic campaign structure, dissatisfaction with the results. I will skip the first stage — what we have arrived at now is more interesting.

Results for the current period (off-season)

I am showing the off-season numbers on purpose: June and July close the tutoring season with the national exams, then comes a dead period — there are requests, but they are more expensive — and in September everything gradually recovers.

From June 1 to September 11, 292,496 UAH ($6.5K) was invested in ads. We got 484 — and here is an important nuance: these are not leads, these are people who have already paid for their first lesson. In other words, sales.

The CPL on the dashboard shows 604 UAH ($13.4), but in fact it is not cost per lead but cost per sale — the cost of a lead that has already converted into a payment. An important nuance of this particular dashboard that is worth understanding correctly.

Leads · Google Ads dashboard: spend 292,496 UAH, 484 leads, CPL 604 UAH
Dashboard for June 1 — September 11: spend, number of leads (paid lessons) and CPL

How the client broke a working structure himself

About a month or two before we resumed working together, a personal Google consultant contacted the client. We were on a pause at the time. The consultant gave the classic advice: turn on AI Max in search campaigns, use broad match, remove the strategy limits — and make money. The client implemented these recommendations himself while we were not working together.

It broke everything that had been working before.

Here it is important to understand the project: the list of directions covers almost all school subjects plus lots of languages, and leads are needed for specific directions for specific reasons. The structure that worked before fell apart under AI Max, which started generating a chaotic flow of queries about everything. In the account, the cost per lead looked fine, but these were requests for directions the client did not care about at all.

A classic example: Performance Max launched for math generated leads for Ukrainian, English, German — for everything except math. Why? Because at that point Google did not understand what a math lead looked like. There was one general goal — a tutor request. The system assumed that if a campaign works “for math” and brought a lead, it must be a math lead. That is not how it works.

The solution: split the goal by subject and feed the system quality signals

The project already had an integration with the client’s CRM, with offline conversions sent back to Google Ads. I proposed a solution already proven on other projects: split all leads into subtypes, with a separate goal for each subject. I described a similar methodology earlier in a case where we split B2B and B2C leads separately.

The client built a simple automation in literally one day. The result was twofold: new data started coming in for the new goal, and over three months we extracted and classified all historical leads and sent them back to the system as signals for future optimization. So we did not start from zero — we immediately fed the system quality data.

Separate conversion goals by subject in Google Ads: English, math, German, Ukrainian and others
Each subject is a separate conversion goal connected to the CRM

The system receives information not just about leads, but about those who have already made their first payment — the highest-quality signal you can give. The next step is to also single out “VIP students”, those who bought more than 10 lessons, and feed the system those signals.

An important technical nuance: for a portfolio strategy or an individual campaign to work, the system needs at least 30–50 quality data points. If you set the bar too high, the strategy may simply not kick in. So the current task is to bring in as many leads as possible within the agreed KPI to build up volume.

Campaign structure

The main focus is search campaigns plus one Performance Max. Disclaimer: I do not recommend using Performance Max in lead generation projects unless you send quality data back from the CRM. Otherwise it simply scales untargeted inquiries — tested many times, and sometimes, once the system is saturated with poor data, there is no way out.

The client’s reaction

Two weeks after splitting leads into separate goals by subject, I got this feedback:

“Overall it now ranks for the subjects we need, and the requests coming in are good and targeted.”

And another piece of live feedback about budgets:

“What is our budget for German right now? We should probably cut it in half and move it to other subjects.” I answer: 600 UAH ($13). “Then let it be, it works really well.”

So on a small budget the campaign works in a way that makes the client happy with both the number and the quality of leads.

Next step: passing value

I suggested the client go further:

Volodymyr: “We can also pass a value along with the lead information. The value could be the price of the first lesson (since tutors’ prices differ). That way, in the future we can test Maximize conversion value strategies so the system looks for an audience more likely to choose a more expensive tutor.”
Client: “Right now everyone is good and valuable) No need for now.”

A normal situation — not every hypothesis lands right away, even when it is logical. It stays in the background as a direction for scaling when the data volume and the client’s priorities allow testing it.

An important note on attribution

The cost per purchase shown on the dashboard covers only the orders where attribution was preserved. There is also a share of orders where attribution was lost. At the low end, that is 10–15% of data that simply does not reach the system because of lost attribution — so the real result is even better than the numbers show.

Challenges ahead

  • First, double the budget while keeping the pace.
  • Second, stay within the current acquisition cost KPI while scaling.
  • Third, attribution of messenger inquiries. The audience is getting younger and is used to solving things via messengers rather than calls. I have already written about implementing this kind of attribution in another article — here it is still in progress, part of the work is manual, and the current dashboard does not yet count messenger inquiries.

Summary

The best thing about this project is full synergy with the client. When you say “let’s do this”, the client implements it, quickly, and is ready for any experiment for the sake of results. You can pass on all the experience gathered over the years — and thanks to such a positive response, you get a real synergy effect.

It is the opposite of a case where the client keeps complaining and does not want to change anything. This is the type of project you really enjoy.

Related services
End-to-end analytics All inquiry sources and CRM sales in one picture: you see which channel actually brings money. from $400Learn more CRM integration with Google Ads Offline conversions: real sales from your CRM flow back into Google Ads, so the algorithm learns from revenue, not leads. from $300Learn more
Want Google Ads to work for your real sales, not for “query similarity”? Get in touch, let’s discuss your project

FAQ on the topic

Frequently asked questions

What is the difference between Cost Per Lead and Cost Per Sale?
CPL (Cost Per Lead) is the cost of acquiring a request or inquiry, whether or not it becomes a paying customer. CPS (Cost Per Sale) is the cost of a completed sale with confirmed payment. CPS reflects ad performance more accurately because it counts conversion into money, not just the fact of an inquiry.
Why are AI Max and broad match a very bad choice for precise work?
AI Max and broad match expand query coverage and trust Google to decide relevance on its own. Without clear signals from quality conversions, the system generates many formally relevant but untargeted inquiries. In niches with different directions or lead values, this leads to chaotic traffic and an inflated cost of the target result.
How does splitting goals by lead type from the CRM and sending them to Google Ads give a strong boost?
When each lead type (direction, product category, audience segment) gets its own conversion goal connected to the CRM, the algorithm learns from relevant signals for each segment separately instead of an averaged data set. This lets the system find the audience for each direction more precisely and sharply improves traffic quality and relevance.
How much data does an automated bidding strategy need?
For a portfolio strategy or an individual campaign to work stably, the system needs at least 30–50 quality conversions. If you launch the strategy earlier, it may simply not work or optimize chaotically.
Can you trust Performance Max in lead generation without CRM data?
No. Without sending quality offline conversions from the CRM back to Google Ads, Performance Max in lead generation projects scales untargeted inquiries. Once the system is saturated with poor-quality data, getting out of that state can be impossible.



Contact

Let's discuss
your project

Leave a request — we'll assess your situation, discuss your goals and find the best solution for your business and budget.

🏆
As a Google Partner, I can help you get a Google Ads bonus of up to 55,000 UAH ($1.2K) for your first campaigns.
❌ I don't work with: gambling · betting · alcohol · tobacco · crypto · grey niches · payday loans
▸ new_project.init()
Discuss a project