

Detect and track ad block users in Google Analytics to recover lost ad revenue.
Ads are the core of many online businesses, especially of premium publishers like you. But here's the harsh reality, in 2024, over 1.3 billion people are wielding the dreaded ad blocker, translating to a whopping 42% of internet users worldwide giving our carefully crafted ads the silent treatment (Source: Marketing Scoop). That's billions of dollars vanishing from the advertising industry annually!
But why the ad-apocalypse?
Users have their reasons. They want a clean, clutter-free experience, protection from malicious content, and a tighter hold on their privacy. And guess what? Ad blockers not only block those pesky ads but also prevent those sneaky trackers from loading. This throws a wrench in your ability to measure campaign effectiveness – not exactly a recipe for profits, is it?
Google Analytics, is a tool you're likely already relying on to track visitor behavior and content performance can be a powerful tool in the fight against ad blockers too.
Chances are you're already using it. But today, we will delve into two battle-tested methods for tracking ad-block users using Google Analytics, empowering you to mitigate the impact these blockers have on your digital advertising efforts. Stay tuned – it's about to get strategic!
Add the below JavaScript code to the website’s header to determine if a visitor has installed an ad blocker on their browser.
<script>
(function(i,s,o,g,r,a,m){i[‘GoogleAnalyticsObject’]=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,’script’,’https://www.google-analytics.com/analytics.js’,’ga‘);
// Creates an adblock detection plugin.
ga(‘provide’, ‘adblockTracker’, function(tracker, opts) {
var ad = document.createElement(‘ins’);
ad.className = ‘AdSense’; //Name of ad partner you’re working with.
ad.style.display = ‘block’;
ad.style.position = ‘absolute’;
ad.style.top = ‘-1px’;
ad.style.height = ‘1px’;
document.body.appendChild(ad);
tracker.set(‘dimension’ + opts.dimensionIndex, !ad.clientHeight);
document.body.removeChild(ad);
});
ga(‘create’, ‘UA-XXXXX-Y’, ‘auto’); //Replace UA-XXXXX-Y with your tracking ID.
ga(‘require’, ‘adblockTracker’, {dimensionIndex: 1});
ga(‘send’, ‘pageview’);
</script>
As detecting users with ad blockers is a customized need, you need to create a custom dimension in Google Analytics. Setting up the custom dimension will enable you to reflect the data captured by the aforementioned code snippet on the Analytics dashboard. Follow the below steps to perform this task:
Now that you’ve created the custom dimension, it’s time to analyse the users with ad blockers. For this, you can use advanced segments features. In Google Analytics, advanced segments are more selective than dashboard filters, which simply subtract a specified traffic source from your website’s total traffic amount. So, let’s create a new segment to narrow down analytics reporting based on the traffic that has installed ad-blockers.


To compare the behavior of all users with ad block users, you can create a custom report in Google Analytics. Here’s how to do this:
To detect ad blockers on the user’s browser, add the following JavaScript code to the CSS of your website.
The condition test.offsetHeight tells about if the user has installed an ad blocker or not. On the other hand, the CSS class ‘adsbox’ triggers an alarm in the ad blockers to hide it for 400 milliseconds on the page so that you can urge users to disable the ad blocker. This is one of the preferred techniques for publishers trying to recover ad block revenue.
var test = document.createElement(‘div’);
test.innerHTML = ‘ ’;
test.className = ‘adsbox’;
document.body.appendChild(test);
window.setTimeout(function() {
if (test.offsetHeight === 0) {
document.body.classList.add(‘adblock’);
}
test.remove();
}, 400);
So you asked the users to disable the ad blockers, but not all users whitelisted your website. Now what? Data visualization. Copy the below code and add it to the above JS code to collect data in Google Analytics and make better decisions regarding users navigating with ad blockers.
ga(‘send’, ‘event’, ‘Ads Setting’, ‘Adblock’, ‘Enabled’);
The above code is for Universal Analytics users. If you’ve old version of GA (classic GA), copy the following code:
_gaq.push([‘_trackEvent’, ‘Ad Setting’, ‘AdBlock’, ‘Enabled’);
Now, your complete code should look like this:
var test = document.createElement(‘div’);
test.innerHTML = ‘ ’;
test.className = ‘adsbox’;
document.body.appendChild(test);
window.setTimeout(function() {
if (test.offsetHeight === 0) {
document.body.classList.add(‘adblock’);
ga(‘send’, ‘event’, ‘Ad Setting’, ‘Adblock’, ‘Enabled’);
}
test.remove();
}, 400);
To reflect the data in Google Analytics, you need to create Events. Here’s how to do it:

Once done, to verify if the code and set-up are working correctly, go to Home > Realtime > Events. Under the Active users’ section, you should see the number of users who’ve installed ad blockers.

Measuring mobile ad block traffic and desktop ad block traffic allows you to measure the effect the use of ad blockers is having on your ad revenue. This information is much more reliable than simply asking users if they are using an ad blocker. Learning more about these users, you can improve how your content and ads are delivered, and gently encourage them to disable the ad blockers. If asking for whitelisting still doesn’t work, here are a few methods that will help you recover ad-block revenue.
GA4 can’t track users if the gtag.js script is blocked, but you can detect ad blockers by adding a lightweight JavaScript test and sending the result as a custom event or dimension. For higher accuracy, move to server-side tagging so tracking requests originate from your own domain instead of Google’s.
Use consent-based detection scripts that trigger only after a user accepts your cookie banner. Send anonymized “ad-block enabled” events to GA4 without storing personal data. Always disclose this in your privacy policy to meet GDPR and CCPA requirements while still understanding the revenue impact of ad-block traffic.
Detecting ad blockers is legal in most jurisdictions if users are informed and data is anonymized. You can include detection under “functional cookies” in your consent banner. Avoid fingerprinting or tracking personally identifiable information to remain compliant with GDPR and global privacy standards.
Export impression data from your ad server and compare it with GA4 page-view or event data. The discrepancy typically represents users with ad blockers. Segment by device or geography to understand where most ad-block interference occurs and adjust pricing, CPM floors, or targeting accordingly.

