Why don't we name the client?
In this case study we deliberately do not reveal the company's name. Keeping it anonymous lets us show a much wider range of real campaign data — including budgets, the number of contacts, conversion costs, the account structure and how we scaled the work to more cities.
All the results shown come from real Google Ads campaigns. We have only hidden information that could identify the client or reveal sensitive business data.
Client and goal: scaling a local appliance repair service
The project is a service that repairs washing machines, fridges and dishwashers. In this business, customers do not compare offers for weeks. They have a problem and need a technician — ideally today or tomorrow.
We started working together in April 2025. At that point the account ran locally and generated:
- 384 contacts a month — calls and forms that were potential jobs.
- 53.30 PLN cost per contact — the campaign's main efficiency metric.
- 6.96 PLN cost per click with 2,938 clicks a month.
- About 20,000 PLN monthly budget spent on a single local market.
The goal was specific: increase the number of valuable enquiries, lower the cost of getting them and enter more metropolitan areas without losing profitability.
It was not about simply spending more. We needed a system that would let us scale the campaigns market by market and keep full control over the cost of every contact.
What we did: controlled expansion instead of scaling blindly
We started by rebuilding the account structure and separating the work by market. Each metropolitan area was to run as a separate project — with its own budget, cost per contact and decision on further scaling.
A separate structure for each city — we split one campaign into separate campaigns for each metropolitan area. Today the account has 16 active campaigns in 8 markets, with separate control of budget and cost per contact.
Step-by-step expansion — we launched a new city only when the previous market was generating contacts at a profitable cost. The work was extended to, among others, Bydgoszcz, the Tricity, Kraków, Warsaw, Wrocław, Łódź and the Silesian metropolitan area.
Search combined with Performance Max — search campaigns captured users with a specific repair need, while Performance Max added extra volume from Google's other placements. In selected campaigns the cost per contact fell below 10 PLN.
Budget focused on mobile devices — the cost per contact on desktop reached about 120 PLN, while on smartphones it was about 27 PLN. We switched off tablets and Connected TV, cut desktop back hard and raised mobile bids by up to 30%.
Precise local targeting — we added about 300 location exclusions so the budget did not go to areas outside the technicians' working range.
A schedule matched to the service's working hours — the ads ran when the team could actually answer the phone and take the job. In total we set up 91 scheduling rules across campaigns and markets.
Messages that answer an urgent need — we tested headlines using the dynamic search term, the city name and messages about speed: “a technician today or tomorrow” and “express repair”. The account had 62 active ads.
Landing pages built for contact — we checked how well the page matched the ad, the visibility of the phone number, the forms and how easy the site was to use on smartphones. Users had to get from their problem to a call with the service quickly.
Tracking every enquiry — we tracked clicks on the phone number, submitted forms and calls made directly from the ads. The algorithm learned from real contacts, not just website visits.
Weekly optimisation — we analysed search terms, moved budget to the cheapest sources of contacts and cut irrelevant traffic. We added more than 4,000 negative keywords to the account.
The campaigns did not run on a “set it and forget it” model. Every market, time slot and device was judged on cost and the number of real enquiries.
97% mobile
Mobile devices now account for about 97% of the successful contacts the campaigns generate.
300 exclusions
That many location exclusions help protect the budget from traffic outside the technicians' real working area.
91 rules
Ad schedules were matched to the hours when the service actually answers calls and takes jobs.
The data that guided optimisation
We based decisions on devices, ad hours and campaign competitiveness on data from Google Analytics 4 and Google Ads.



More contacts. Lower acquisition cost.
We will check which cities, devices and traffic sources really bring in customers. Then we will build a structure you can scale without losing control of the budget.
✓ Free quote — no obligation.
Let's talk
Results that can be scaled
In June 2026 the campaigns hit a record: 1,585 contacts at an average cost of 25.80 PLN. At the same time, the cost per click fell to 2.58 PLN.
Most importantly: the budget doubled, but the cost per contact did not rise. It fell by more than half.

Contacts grew more than fourfold, even though the monthly budget was only doubled.
The campaigns reached a bigger scale while the cost per contact and the cost per click both fell. The budget was not raised blindly — it went to the markets, devices and hours that delivered real enquiries.
Why did it work?
We did not apply one “magic” optimisation. The result came from a consistent system for managing the campaigns.
- Cost-per-contact discipline for each city — each market was accounted for separately and had to prove it was profitable.
- Expansion only after stable results — new locations were not launched all at once.
- Budget focused on mobile — most users looking for an urgent repair want to call straight away.
- Ads at the right hours — contacts had to reach the company when someone could answer and take the job.
- Messaging matched to intent — the ads answered the user's urgent need instead of using general brand messages.
- Tracking real contacts — we based optimisation decisions on calls and forms, not just clicks.
- Ongoing specialist oversight — we regularly analysed search terms, costs and the potential of each campaign.
Scale without losing efficiency.
That was the main goal of the project. A bigger budget was meant to bring more contacts, but not at the expense of profitability. We improved efficiency first. Only then did we increase the scale.
Expert comment: a system and discipline instead of one magic move
There was no single magic move in this project. There was a system and discipline. From the start I treated each city as a separate business with its own numbers: how much a contact costs here and how much there, and where each additional zloty works hardest. That let us scale without costs getting out of hand.
The breakthrough came when the budget stopped spilling everywhere. We switched off what was burning money — tablets, TVs and expensive desktop — narrowed the hours to the times when the service actually answers calls, and cut locations outside the teams' range. Every zloty started going to real intent, not random traffic.
The rest was getting the message right. In appliance repair nobody reads a brochure — people want a technician today or tomorrow. A headline with the search term, the city and speed did the job, and the numbers confirmed it: a Search CTR of 18 to 26 percent.
The strongest proof that the model works is simple. We doubled the budget, and the cost per contact did not go up — it fell by half. And it was the client who wanted to add more, because they could see the return.
The next step is quality: training the campaigns on jobs actually completed, not just on the number of contacts.
What's next: lead quality, not just quantity
The next stage is optimising the campaigns not only for the number of enquiries but also for their quality and business value.
The plan is to import into the ad platform information about:
- answered and valuable calls,
- booked service visits,
- completed repairs,
- the value of individual jobs.
This way, the algorithm will be able to learn not from every form and call, but above all from the users who actually order a repair.
More leads are a good start. More completed, profitable jobs are the right business result.
If you run a local business and want to grow without losing control of the cost per contact — we are ready to get to work.
