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
- How the cooperation started
- Results for the current period (off-season)
- How the client broke a working structure himself
- The solution: split the goal by subject and feed the system quality signals
- Campaign structure
- The client’s reaction
- Next step: passing value
- An important note on attribution
- Challenges ahead
- Summary
- 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.
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.
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.
Where to find me
Message me on Telegram or by email — I respond quickly. Telegram channel and YouTube are for those who want to see real cases before reaching out and understand my approach.