Google Ads for tradespeople: how to get more inquiries
Trades have a tight service radius, seasonal gaps and a sales process that runs on phone calls, not a shopping cart. The default campaign setup ignores all three.
530%
ROAS with the setup right
Originally written in German — read it on visnakovs.de.
Google Ads for tradespeople is often set up exactly like it would be for any other local service business: standard campaign, standard settings, standard budget. The problem is that trade businesses have a tight service radius, seasonal gaps in bookings, and a sales process that runs on phone calls, not a shopping cart. Ignore that, and a large share of the budget disappears before a single inquiry ever arrives.
What a finished inquiry system looks like for bathroom, roofing and patio-roof businesses, including a potential analysis and a guide, is over on online marketing for trade businesses (in German). What follows here is the layer underneath: the campaign settings that sit differently in the trades than everywhere else.
1. Why most trade campaigns waste budget
The most common mistake sits in a single setting: the location option. The default “presence or interest” includes people who are merely interested in the target region but aren’t actually anywhere near it. For a local trade business, that’s the fastest way to spread budget across Germany or even Europe, instead of concentrating it on the actual service radius.
The second mistake is missing pre-qualification. Someone searching for “bathroom renovation” or “patio roof” isn’t automatically ready to buy; some are just comparing prices. Without a landing page or a form that filters early, exactly those price shoppers end up in the inbox: hours spent on quotes you never hear back on.
2. What a working inquiry system for tradespeople actually needs
- Clean conversion tracking across every channel. The most valuable lead in the trades comes by phone, not by form, and without call tracking that lead usually stays invisible to Google Ads. Without that data, the algorithm optimizes for the inquiries it can see, not the ones that actually count. More on this: call tracking for Google Ads.
- Location set to “presence” instead of “presence or interest”. This single setting often decides whether the budget stays inside your own service area or gets spread thin.
- A pre-qualifying landing page. Not necessarily a whole new website; often a focused page that filters roughly what the job is and what it costs before the call even happens is enough. That cuts down on inquiries that were never going anywhere in the first place.
For smaller ad budgets, there’s an extra point worth reading up on separately: for a local tradesperson, the wrong location setting is “the fastest way to spread budget across half of Europe”, as I wrote in Google Ads freelancer for small budgets.
3. What this looks like in practice
Among bathroom and patio-roof businesses I’ve worked with, this approach, clean tracking, the correct location setting, pre-qualification, has added up to €2.1 million in revenue through Google and social ads so far. One single business saw as many as 38 qualified inquiries a month. On top of that, ROAS came in at 530%, and cost per inquiry was 40% lower from clean tracking alone. These numbers won’t transfer to every business as they stand, but they show what’s possible once the basics are right instead of running a standard campaign with no adjustment for the trade.
The bottom line
Google Ads works well for trade businesses, but not with the same default settings used for every other local service. The location setting, clean tracking across phone calls, and a pre-qualifying page aren’t optimization details; they’re the precondition for clicks turning into inquiries that actually fit the business.
Curious roughly how big your own revenue gap is? Try the revenue gap calculator (in German), it takes about 30 seconds.
For bathroom, roofing and patio-roof businesses specifically, there’s a dedicated setup with a free potential analysis on online marketing for trade businesses (in German).