How To Stop Click Fraud on Google Ads: For Tradies & Small Businesses

Matt Fisher
Jul 3, 2019 · 22 min read

Are you a local service provider in a competitive industry such as Plumbing, Dental, or perhaps a Lawyer with an ad budget of less than $1,000 a day?

Are you finding that your AdWords campaigns for your local service based business are getting a healthy amount of clicks, but seemingly very few phone calls? Are you thinking your competitors might be clicking you out?

Image for post
Image for post
A Guide to a better ROI on you Google Ads campaign by

Are you sick and tired of Google telling you they are not responsible for “user behaviour” as their way of telling you they don’t have a clue why only 1 in every 10 clicks results in a call?

How would you like to make those numbers look a lot more like a 2:1 for a click to call ratio? Or even inching more towards a 1:1 click to call ratio?

What if I could show you 4 simple strategies to achieve all of this?

In this article I’m going to share with you something that NOBODY is talking about. If you want your campaigns to have an amazing ROI, it’s absolutely crucial that you understand the big issue… cell phone towers.

The 4 Simple Steps to Prevent Click Fraud:

STEP 1: Stop using Call Only Ads

STEP 2: Try to only use GEO Keywords

STEP 3: Standard IP & Postcode Blocking the Usual Suspects

STEP 4: Exclude User Locations Outside Your Ad Radius

You must use call tracking to be able to measure your ROI on ad spend as well as conversion tracking for optimisation and weeding out the bad clicks. Don’t skip this step. You cannot run a good campaign without it.

To track and record the calls, use a service like CallRail, a brilliant piece of Saas from a company cofounded by Andy Powell. CallRail is the Rolls Royce of call tracking and call recording. It will show you what triggered the call, right down to the keyword, without having to track the keywords manually.

If you know which keywords triggered the call, and equally as important - which keywords got clicked without converting to a call, you can optimise.

Image for post
Image for post
CallRail call tracking — Image taken from website

If you don’t want to pay the CallRail fees for making your life easy, or alternatively don’t want to be programming Twilio phone numbers on other types of tracking software, at the very least, use Google’s own inbuilt call tracking.

Google’s basic call tracking feature will record the call as a conversion (without recording the actual phone call) as long as you have your Google Analytics set up correctly.

Google’s inbuilt call tracking is ok, but being able to listen to the call recordings is next level, as it can provide insights that simply cannot be garnered from just looking at the simple fact that the click converted to a call.

If using call tracking software, make sure the customers are aware the calls are being recorded and monitored by way of a ‘whisper’ at the start of the call.

From listening to hundreds of calls and matching those calls up against the search terms that triggered the ad clicks, it has enabled me to uncover where some of the biggest source of bad clicks are coming from… and a sizeable chunk of them may not actually be from your competitors.

That’s really why I felt compelled to write this article. I’ve never seen anyone else cover this topic. It took me several years of 5am starts and midnight finishes before I worked out where all these fake clicks were coming from.

You won’t find the data in Google, and that’s what makes it so dam mysterious. If it wasn’t for I would never have figured it out. StatCounter, designed by Jonathan Morton, is very easy to use.

The good news is, these bad clicks are easy to fix. When you fix them, your campaigns should become very profitable again, and far more able to absorb standard click fraud. We’ll cover how to prevent standard click fraud as well.

Despite seemingly endless calls to Google, taking over numerous campaigns from other ad managers and looking at their campaign structure; I am yet to see anyone address this key issue. I’m going to share it with you in this article. It’s effect on your campaign will be profound, as it has been for our clients.

Now let me give you some background to what I am about to explain so that it will make more sense. I expect to get a lot of push-back on this, but when you apply what I am going to share with you, you’ll become a believer.

The breakthrough came when I listened to a particular call for one of our Mechanic clients, and because I am able to see the keywords clicked on and the location of the clicker in real time (I’ll share how I do that with you later in the article), and because I am also able listen to the corresponding call recording, something very important came to light.

Someone clicked on an ad that he should not have been able to see. Due to the fact that he proceeded with the call, I could hear that he was a genuine caller and not my client’s competitor doing a price check. I was completely baffled.

I was confused as to why he was clicking on an ad that made no sense for him to click on. So I called the customer directly to ask him why he did so. The discovery is the cornerstone of this article and will change how you structure local campaigns forever. Your ROI on your ad spend will skyrocket.

The customer was a good thousand kilometres away, but he thought he was clicking on an ad for a LOCAL mechanic. Confused as to how he was able to see the advertisement, I kept pressing him for information.

As it turns out, he regularly drives through the radius that I had set for my client… even though he lives in a completely different city. It was a Eureka moment.

Now for the real shocker… he hadn’t travelled through the ad radius (in the city where the ad is meant to only be showing) for a good two weeks.

I could now finally make sense as to why some of the keyword search terms for some of the ads being clicked on for some of my other clients would involve locations nowhere near where the ad is targeted to show in.

I always figured that a competitor was just being a smart-arse by putting in random towns far away, as the postcode of those clicks on the Google reports always showed as being inside the radius of the ad. However, the locations of the IP’s were telling a different story. Stay with me on this.

Once I realised the Google data could be wildly inaccurate as to real the postcode of the clicker, I started mapping the IP locations of the clicks instead.

The result was staggering. I could map clicks for hundreds of kilometres along very long freeways, north, south, east and west, usually at what look like nodes on Google Maps, but were actually small towns.. presumably where a major cell phone tower is located. The clicks on some campaigns made it all the way into central Australia. That’s a LONG way from my client’s ad radius!

Image for post
Image for post
Exclude all the towns on the highways that can intersect your Google Ad radius

Anyone who has driven through the ad radius, even two weeks ago, will still see the ads, if they just type in “Mobile Windscreen Replacement” or “Cheap Plumber” and there goes your ad budget. Houston we have a problem.

Now multiply that problem out, even for ‘local’ keywords such as “local plumber” or “plumber near me” over multiple ad sets and you can start to understand that this is a major issue. And it gets even worse as I’ll explain.

In all fairness to Google though, it’s not something they can control, because it is a cell phone tower issue. The cell towers are not removing from memory the location of the previous cell tower as often as we are led to believe.

So now that we know what the big issue is… that even with the correct settings, Google will still show your ad to people thousands of kilometres away, which exhausts your budget; not with fake clicks, but BAD clicks - from customers who are legitimately wanting the same service.. but from within their own local region. Did your eyes just bulge? Ok, so how do we fix it?

You need to take a series of very important steps:

STEP 1: Stop Using Call Only Ads

Call only ads are always a a favourite recommendation of Google. Don’t use them. You want the IP address and LOCATION of the clicker. The only way to easily gather that information is to have them land on your landing page. I’ll cover how to gather that info in this article.

When you have the user’s IP address you can block an offending IP address from seeing the ad the next time. Without it, you can’t optimise your campaign properly. But that’s not what I’m here to discuss. It’s the IP LOCATION that I’m going to zero in. I’ll explain more as we go.

STEP 2: Try to Only Use GEO keywords

For example “Windscreen Repair Sydney” rather than just “Windscreen Repair” or “Emergency Plumber Manly” rather than just “Emergency Plumber”. This will prevent your ad from showing up outside of the location you specified, because the user has to specify the location when searching.

I realise this may be difficult, especially in a smaller radius, or a location with a lower population as there may not be enough search volume with a GEO modified keyword. Create the GEO Ad Groups & Geo Keywords anyway.

Also, be aware that more clicks may not actually translate to more calls. Without adding the GEO modifier, the clicks may in fact be from miles outside of your target area as we have now established.

Check your search terms daily to see if someone used a town that is not relevant to your campaign, then ad that town as a negative keyword, as well as excluding the location itself.

Another important consideration is being aware that unless you use a GEO modifier on your keywords, you can show up for some pretty unlikely searches.. for example.. a keyword of “Windscreen Repairs” can show up for someone searching for a windscreen repair kit. Always check.

You have to either ad the GEO modifier, or be vigilant in adding negative keywords such as “kit” “resin” “online” “buy” “price” “amazon” etc. as they show up in your searched terms data. And this is just ONE scenario.

So go through your search terms daily to find out any search terms that could be causing bad clicks and ad them to your negative keyword list.

You can see with this example how a GEO of “Windscreen Repair Sydney” as the keyword rather than just “Windscreen Repair” could have prevented this issue from the outset. If you have a small budget combined with a large population, and/or a decent ad radius, you could probably get away with just sticking with GEO keywords only. Try it, and see how you go.

If you have to remove the GEO modifier to increase the volume, then be sure those ads always have the city or suburb in the ad copy. I tend to use all CAPITAL LETTERS on the location in the ad copy to really make the location clear in case the ad shows up outside the ad radius, despite best efforts.

Here is an actual client example of what I mean by suburb or city capitalisation in an ad. BRISBANE really stands out…

Image for post
Image for post
Top ad is an actual client ad for an client

Keep adding negative keywords for all the locations that keep showing up in the search terms that are outside of where your ad should be showing.

STEP 3: Standard Blocking the Usual Suspects

Postcode Blocking:

This part takes work. A profitable campaign takes time. The reason is because you need to build a profile of where all the click fraud is coming from. For local service providers, fortunately a clear pattern usually forms quite quickly.

Take the screen shot below for example. You can see that this client’s competitors tend to drive along one main road. Why? This is where they all go to pick up supplies from the same manufacturer each morning.

Along the way, they all click each other out like crazy, hoping to exhaust one another’s ad budget, whilst at the same time trying to remove the person in the top ad spot, so they can jump in there and hopefully get their phone to ring, only to be clicked out by someone else before that happens.

And then they blame Google when their phone doesn’t ring. First world problems.

Image for post
Image for post

Instead, just don’t play on the road kids. The slow way to achieve this is to wait for Google to show which postcodes and IP addresses are not converting to calls, and exclude & block them respectively.

You’ll need to wait for Google to show the conversions data so you can work out which postcodes didn’t convert to a call and which one’s did.

I don’t recommend this way of doing things, as it’s too slow. However the screen shots below will show you how to get there, as it’s good to know either way. So go to your REPORTS tab in the top right of your Ads portal, and follow the red dot sequence below…

Image for post
Image for post

You’ll then see all the postcodes that got clicked on throughout the day. Whatever a postcode does not show a conversion in the conversions column, simply exclude that postcode in the locations section of your Ads Portal…

Image for post
Image for post

I prefer a much faster method using As I know the instant someone makes it to the landing page. StatCounter shows me the location of the user. I wait to see if a call comes through in the next couple of minutes. If it doesn’t, I don’t mess around… I exclude the location immediately.

Image for post
Image for post will show the IP LOCATION in real time

I had a lot of fun with this particular fake clicker (see image above). I could actually track where he was driving towards, and I could block the postcodes ahead of time as he was driving on a long freeway.

He got super frustrated and switched to a VPN , and then tried to click out my client from Singapore (see the end of this article for a free 200+ countries list that you can drop into the excluded locations section of your Google Ads portal in one hit). When you exclude all other countries, they can’t do this.

All the while, I’m tracking him through his IP LOCATION, rather than his IP address, which he was rotating by turning his phone off and on.

I was also able to look at his profile in the Audiences section of Google Ads to gather more information. Turns out he is a high school graduate who likes to travel to South East Asia and was speaking to a careers counsellor (obviously his business wasn’t going so well).

Image for post
Image for post
Audiences Profiles in Google Ads Portal

I do not make any bid adjustments or exclusions in the Audiences section, as tempting as it seems, as this tends to throttle local campaigns. Just a tip.

As I keep a record of the clicks as they happen and use the CPC (Cost Per Click) as the individual fingerprint ID of the clicker, I can build a profile on the fake clicker, accurately profiling his age and household income.

Now it’s just a choice as to whether to make a bid adjustment of minus 5%, 10%, 20% or 30% or exclude the demographic altogether if he is a serial pest.

This is why you need to manage campaigns in real time. If you aren’t fast enough to record the CPC, you can’t build a profile in real time, and you have to wait a good couple of months before a clear pattern emerges, based around your conversions, and your cost per acquisition.

It’s very important to NOT block BOTH the age demographic AND the household income demographic for the same offender. Otherwise, your campaigns will come to a grinding holt.

Just make your adjustments on one or the other so that real customers can still see the ads in the demographics profile you choose not to exclude. Block the demographic that will leave the smallest footprint on your campaign.

Image for post
Image for post
Demographic Profiles in Google Ads Portal


When deciding on whether or not to block the IP, I use StatCounter to get the IP addresses in real time as soon as the fraudsters hit the landing page.

I immediately cross reference the IP address with on their black-listings page to see if the IP has been recorded as a suspect IP.

Image for post
Image for post

If it has been listed, and no phone call eventuated, then I usually block the IP address straight away….

Image for post
Image for post

Deciding whether or not to block the IP’s postcode or the IP address, comes down to whether or not they are rotating their IP address by turning their mobile phone off and on before clicking the ad again. The IP address associated with mobile phones is dynamic, not fixed.

Again, this is why you need to be managing your campaigns in real time. Otherwise this type of insight gets lost if you’re making campaign adjustments every few days or weeks. You won’t be able to correlate the data this deeply.

I know the offender is rotating his IP because I’m able to track his driving pattern in real time using StatCounter LOCATION with each fake click, and being able to match the up the click cost with his age and income demographics to verify that it’s very likely the same person each time.

You must make a note of the CPC (cost per click) as soon as it becomes visible in the data, using this as the user ID fingerprint when switching from the KeyWords to Demographics data view (more on this later in the article)

Their demographic profile is tied to their smartphone usage.

THIS is how you build a profitable local campaign.


To make it easier to rapidly determine if you have someone clicking you out via the same IP address, rather than wait for your ad budget to become exhausted before finding this out, set an alert against that IP in StatCounter.

Label it as “Monitor” and set an alert. If the IP triggers a second time, block the IP, and switch the label to BLOCKED for record keeping.

Image for post
Image for post
Set an Alert if the IP clicks your ad a second using

If the alarm triggers a second time, without a phone call, they’re not rotating their IP’s, so you can block the IP address in your Google portal:

Image for post
Image for post

Keeping track of who called and who fake clicked:

By Using the The Cost Per Click as the Clicker’s User ID

Often it can be tricky to identify which new click in StatCounter belongs to which new click in the Google Keyword data.

To make it much easier to correlate the information, you just have to ad a snippet of code into the Google Ads Portal.

Go to your Google Ads master Settings and enter the following code:


into the Tracking Template section as follows:

Image for post
Image for post

Be sure to also have auto-tagging set to YES as indicated above.

StatCounter will now be able to show you not just the IP address and location of the clicker but also which keyword got clicked, and also the match type, and therefore which keyword to look for in in the Google Ads data.

For this to work, you should have signed up for and grabbed the embed the code and added the code just before the closing </body> tags on your landing page. If you don’t know how to do this, ask your web developer to put the code onto the landing page for you.

Tracking the conversions in real time:

You’ll know when a call comes though hours before Google updates its phone calls column data because you’re using call tracking, so you’ll know in a matter of minutes.

If you’re managing your own ad campaign, rather than as an agency, obviously you’ll know your own phone just rang without looking at any software, but still always use call tracking so you can optimise your campaigns.

If you wait for Google to update its call conversions data, multiple clicks will likely be recorded against the keyword, and you won’t be able to isolate the good click from the bad click (the clicks that generated the calls as opposed to the clicks that didn’t) when you switch to the demographics view to make bid adjustments or exclusions on certain demographics from seeing your ad.

Why is that? I hear you ask. Great question. Google only shows the call conversions in the keyword view (see “Phone Calls” column below). Yes you have to ad this column in, but at least it’s possible to see the data.

Image for post
Image for post

When you switch to the demographics view to determine how best to block the fake clicker, the call conversion data is not visible. You cannot ad the “Phone Calls” column (see image below).

Image for post
Image for post

Unless you have matched up the user profiles as the calls came in against each individual click cost, then when you’re looking at the data like in the screen above, it won’t be possible to work out if the fake clicker is 55–64, or 35–44.

This is the big flaw with the Google portal, and I think it’s deliberate. Maybe I’m just getting cynical in my old age. Or maybe it takes this kind of cunning to become a multi deca-billionaire twice over. I’ll let you decide.

That is why timing is so important. If you get a second click on the keyword, and one is a call, and the other wasn’t, unless you have made notes as it happens, you won’t be able to determine which user Demographic triggered the actual call, and you won’t be able to make any logical adjustments.

Use the click cost as the fingerprint to ID the clicker’s profile when switching from from your Keywords view to the demographics view. Remember to make detailed notes of the users profile against each click cost

When the second, third and forth clicks comes in, you’ll be able to work out which demographics triggered the calls, and which ones didn’t and accurately block, exclude or adjust accordingly.

If you can’t make logical decisions, you’re guessing. If you’re guessing, you can’t optimise your campaign and you’ll never get to the 2:1 and eventually to an almost 1:1 click to call ratio. Not always…but sometimes. You won’t know until you try.

STEP 4: Exclude User Locations outside Ad Radius

Here is where the real magic happens. My secret ingredient.

Part One:

The source of all the confusion is Google’s POSTCODE data. What I have discovered is that if the user is OUTSIDE the ad radius when clicking the ad (made possible if they drove through the ad radius several weeks earlier) then Google will attribute a postcode INSIDE the ad radius. The data will be incorrect and extremely misleading.

Image for post
Image for post

You can track these postcodes and block the ones that don’t convert till the cows come home, but if the user was in fact outside of the ad radius when they clicked the ad, you haven’t actually fixed or optimised anything because the data is incorrect to begin with.

What you really need to be blocking is the IP LOCATION and not necessarily the offending postcode that Google’s data provides. If the clicker was able to click on your ad outside the ad radius, the postcode information Google provides will be wrong.

Checking your server for this location data is clunky and slow. I also wouldn’t trust that data. Getting this right is critical.

To overcome these challenges, again use When someone clicks on your ad and lands on your landing page you immediately have the IP location information like in the image below.

Image for post
Image for post

The important thing at this moment is not the IP address (the numbers). It’s the IP Location (eg. Kellyville, New South Wales, Australia). If the location of the clicker is outside the ad radius, the location information provided by Stat Counter will remain accurate. That’s what is super important.

Based on this knowledge, what you want to do now is go back to the IP data from Stat Counter and decide whether or not to exclude the IP location (the REAL location) of the clicks from the Google campaign OR the the IP address (the IP numbers) of the clicks that did not convert to a call. If they are not rotating their IP, you can block that. If not, block the location.

Your campaigns will start seeing a real change in their ROI, but the best is yet to come!

Part Two:

You’ve made it. Well done. What I am about to show you next is my big reveal. This took me years of daily frustration, until I finally figured it out. 5am starts, midnight finishes. Data data data. Not fun. Without this information, your campaigns will always struggle, and NODOBY will be able to tell you why.

There is an additional upside to all of this. Because your ads will now mostly only show to the intended recipient, your ads will get clicked on a lot more often with each ad impression. In turn your relevancy score goes up. When your relevancy score goes up, your click cost goes down. Winning.

With Google throwing me off the scent with its locations report showing irrelevant postcodes, it was a tough nut to crack. That is, until I realised the significance of the IP locations, which are not part of any Google report.

When I mapped out the IP location of the clicks that weren’t converting to calls using StatCounter’s IP locations, instead of Google’s location reports, I was shocked to see just how far away many of the clicks were coming from.

Some of them thousands of kilometres away. They would invariably follow major freeways and the clicks would occur at towns along those freeways.

So how do we fix this?

First, exclude all the surrounding areas outside of the target radius, like in the image below:

Image for post
Image for post
Exclude All The Surrounding Areas from Your Ads Targeted Location

Next, look for the major freeways that could theoretically intersect through the radius of your service area. Open up Google maps and look for the ‘nodes’ along the freeways that are indicating decent sized towns.

Image for post
Image for post

If you zoom in too much you will end up with too many locations and the little circles/nodes will disappear. Zoom just enough that you see those nodes.

Those towns hold the majority of the cell towers that will cause your ads to still show. The smaller towns cell towers don’t seem to trigger the problem. Although that could just simply be due to population size.

That’s why it’s a good idea to keep tracking the IP locations outside your ad radius that don’t convert to calls, and just keep adding to your location exclusions.

If you notice another freeway is starting to shadow the locations of the clicks, follow that freeway on the map for thousands of kilometres, and exclude all those ‘node’ towns.

The image below will show you what that might look like. This, as you can tell, is far from complete, but it has already reduced the bad clicks on this campaign by more than 50% and took less than an hour.

Image for post
Image for post
Exclude the major towns along all the freeways that could intersect your ad radius

Next, exclude ALL the other states (see image below). If you’re in the United States, block the other 49 states outside of your ad location. You get the idea.

Image for post
Image for post
Exclude All the Other States in your country from seeing your ads

Finally, exclude all other nations from seeing your ads (and I do mean finally… do this last, as you won’t be able to see the previous exclusions on the map. Google will only visually show up to 200 exclusions.)

If you need to see your previous town exclusions within your own country, you can always delete the global exclusions one by one, if required, later. It will only take you 5 minutes)

Image for post
Image for post
Exclude all other countries from seeing your ads

This last step stops professional fake clicking buttwipes, that get paid by your competitors to click you out, from being able to see your ads.

I also tend to, where possible, exclude the central business district of an ad campaign. If someone from overseas is using a VPN to click out your ads, the VPN will usually have its IP location in the CBD. This comes down to testing.

To download my free list of over 200 Countries to block, click here

Once you’ve done the work, I’d then recommend you use a service such as to automate the process of blocking bad IP’s. I offer this software as an inclusion for my premium clients, depending on the package that suits their budget. Just make sure you’ve built the the foundations first.

ClickCease is a very powerful tool that makes managing click fraud, and overzealous clickers a breeze, and automates a lot of the process. It will not make a bad campaign profitable. It will however, make click fraud a breeze to manage once your campaign is set up correctly. Good luck.


Of course there are many more ways you could prevent bad clicks like:

  • Audience Exclusions
  • Search Term Retaliation Clicking
  • Using CloudFlare to reduce bot-clicks
  • Running re-marketing campaigns to people who land on specific pages for longer than 60 seconds

There are a myriad of options available. Often the downside to these methods are worse than the fake clicks themselves, or not relevant to a local ad campaign.

Audience exclusions for example can throttle your local campaign until it’s on life support. Search term retaliation clicking can get your Google Ads account banned.

Retargeting for a local ad campaign is pointless if the client hasn’t received 1,000 visitors to his page. A likely scenario. Re-marketing to unqualified leads, only to find out you are paying a lower cost per lead, for more unqualified leads is also equally as pointless. You get my point.

If you follow the steps in this article, you may not get the same results as our clients. I don’t guarantee that you will. I watch my client’s accounts like a newborn baby, optimising every aspect to get our clients the maximum ROI.

When you ad up the cost of all the software needed to get a stellar ROI, and the time involved to run a successful campaign, you can start to see the real benefit of hiring a Google Ads Manager to manage your campaign for you.

What You Should Do Now

If you are serious about stopping click fraud on your local ads account, you should download this list of over 200 countries that you can exclude from your Ad campaigns locations (just be sure to remove your own country from the countries exclusion list provided here: Countries List

For a free strategy session to discuss potentially managing your Google Ads campaign, go to Instant Clients

Thanks for reading! If you enjoyed it, hit the clap button below. Would mean a lot to me and it helps other people see the article.

Instant Clients

Medium’s #1 Resource for Google Ads Tips for Tradies &…

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store