Documentation        Log in

How to track bot traffic in your Google Ads campaigns for free – Fixel

A recent Twitter discussion with PPC expert Kirk Williams got me thinking about different ways advertisers can battle fraudulent clicks in Google Ads. While there are several great companies out there that offer these services (Cheq and Clickcease to name two), not every advertiser can justify the use of such tools in their stack.

Then I remembered Simo Ahava had a great post on using Google’s Recaptcha to identify bot traffic in Google Analytics. If you know Simo (if you don’t, shame on you!), you know he works all his magic through Google Tag Manager. So I figured that if we have the data available there, we might as well use it for Google Ads too.

All it takes is a few simple steps:

  1. Set up the reCAPTCHA tracking in GTM
  2. Create and trigger Google Ads conversions
  3. Report on these events in Google Data Studio

Step #1 – Set up the reCAPTCHA tracking in GTM

Simo has put up a great guide for this, with credit to Sebastian Pospischil and Philipp Schneider as well, no need for me to cover this step.

Just follow the steps here Improve Google Analytics Bot Detection With reCAPTCHA. It’s really much easier than you think 🙂

In a nutshell:

  1. Generate a reCAPTCHA token
  2. Add a Custom HTML tag to GTM
  3. Add a PHP file to your server (if you’re using WordPress, it’s a copy paste process)
  4. GTM Setup – Creating Data Layer values and GA event (optional)

Step #2 – Create and trigger Google Ads conversions

Now that we have the reCATPCHA tracking in place, we will start receiving a Data Layer event called ‘recaptcha’ in GTM, with the two additional Data Layer values: ‘recaptchaAnswer’ and ‘recaptchaScore’. These will be used to trigger the Google Ads conversions.

First, create a Google Ads conversion in your account. The type of conversion is ‘Website’ and the action is ‘Other’. Value should also be set to ‘Don’t use a value for this conversion action’.

The conversion count should be set to ‘One’, as the score can trigger multiple times during a session.

IMPORTANT: Make sure you deselect the ‘Include in Conversions’ check box so that Google’s algorithm won’t optimize for this conversions event

Click on ‘Create’ and select ‘Use Google Tag Manager’

In your GTM account, create a new tag of the type ‘Google Ad Conversion Tracking’. Paste the Conversion ID and Conversion Label from Google Ads in the matching fields.

Create a new trigger (you can do so from the tag setup) of the type ‘Custom Event’. The Event name to set is ‘recaptcha’.

Set the trigger to fire on ‘Some Custom Events’. Select the Data Layer Variable ‘dl_recaptchaScore’ and set the criteria to ‘less than 0.3’.

How much do you waste?

50% of all media budgets are wasted. Find out how much of your budget isn’t delivering the results you’re paying for.

Step #3 – Report on these events in Google Data Studio

Surprisingly, this is actually the most annoying part. Reporting on specific conversions isn’t trivial in Google Ads, which by default reports on ‘All Conversions’.

The alternative is using Google Analytics, for views linked to Google Ads, but these lack some of the data available directly in Google Ads. Plus they have a 12-24 hours delay in reporting.

Luckily enough, there’s a great way to work around this by using Google Data Studio (DS).

  1. In DS, create a new report and add Google Ads as a data source.
  2. Click on ‘Add a chart’ and select Pivot table.
  3. Place the table anywhere on the report.
  4. Under ‘Row dimension’, add the Dimensions for which you want the table to report on, e.g. Campaign and Ad Group.
  5. Under ‘Column dimension’, add ‘Segment Conversion Type Name’.
  6. Under ‘Metric’, add ‘Conversions’

Voilà! You have a fully set up table to report on fraudulent bot traffic in your campaigns.

You can add a Date Range selector to control the date range shown on the table

While you can report on these ‘conversions’, the same report can’t show how many Clicks and Impressions these Campaigns/Ad Groups have driven. It’s possible to create a Blended Data source that connects Click and Impressions with the data in the Pivot Table, so that your reporting gives a full view of your data.

Use Cases

These reports can’t be used to ask Google for refunds on bot traffic, you can scratch that one off the board.

The immediate use case I have in mind is using this report to analyze Search Queries or Placements. You can add these as Row Dimensions in the DS report and drill down to identify which of these is burning through your ad spend with bot traffic.


Huge disclaimer: This is an experimental approach. Use it with more than a grain of salt.

The reCAPTCHA scores are dynamic by nature. So if a legit user arrives from a shady source, he might initially score a low reCAPTCHA score that will gradually update to one of a legit user. This might cause some False Positives, as users will ‘graduate’ to being identified as legit after being marked as bot. I do believe this is more of an edge case, but if you’re tracking the data in Google Analytics as well, you should be able to easily identify such users and if this is an actual issue for your tracking.

Another point worth noting is that this solution won’t help recover ad spend from Google by claiming that these clicks were invalid. Check out this follow up post on how to minimize click fraud in your Google Ads account (w/o external apps!).