Here are a couple of possible issues and fixes for the Tracking add-on.

Also, check out the common issues on this page.

Please read this first

To be more performant, Advanced Ads Tracking does not deliver live stats everywhere. Impression and Click counts are only live on the internal and public stats pages, but not on the ad overview or the ad edit page.

You can change the time this cache renews on Advanced Ads > Settings > Tracking > Recalculate Sums.

Impressions missing completely

Please see the following potential causes of impressions not being tracked at all:

  • Keep in mind that the value for impressions might be cached in the backend of Advanced Ads. The updated numbers are always visible under Advanced Ads > Stats.
  • Check if impression tracking wasn’t disabled under Advanced Ads > Settings > Tracking or for individual ads.
  • Check if the tables for tracking were created. See Tables not created for more details.

Impressions too low

If you have the feeling that impressions are too low, then please consider the following ideas.

General issues

  • Double-check your settings. Is the ad visible for all users on all pages where you want them?
  • Please be aware that 20 to 60% of website users have ad blockers installed. Blocked ads result in lower ad impressions. But Advanced Ads provides different features to deal with ad blockers. Learn more about it in our ad blocker tutorial.
  • There is no tracking tool like the other, so minor differences are very normal.

Google Analytics tracking

Google Analytics has a limit of 20 events per page impression. Each ad impression is a single event. Other plugins or custom code might also add events that add up to the limit. Analytics might also limit the number of total hits per month. Please choose your property in this tool to see the current limits on your website.

Tip: In some situations, you might want to create a new property for tracking ad impressions and clicks.

  • Before Tracking 2.0, Analytics tracking does not work on AMP pages

Other tracking methods

  • With cache enabled, you need to select the track with JavaScript (AJAX) tracking method or use cache-busting in Advanced Ads Pro.
  • Tracking is by default disabled for bots. Bots can make up to over 50% of web traffic, and some statistic tools don’t exclude them.
  • Some features, like the limit for ad impressions, are using a cached value for impressions that is not updated for each impression for performance reasons. You can set the update interval on Advanced Ads > Settings > Tracking > Recalculate sums.
  • If you see the advads_tracking_methods is not defined error in the browser’s developer console then it is likely that some script optimization removed part of our code from your site. At this point, this is a known issue with ezoic. Please reach out to them for a solution.

Impressions too high

General issues

  • Each ad is tracked individually. If you use the same ad multiple times per page, every one of its impressions is tracked.
  • Each ad in an ad slider is tracked once with the page load. In comparison to this, ads loaded using the refresh on the same spot option are tracked the first time they become visible.
  • Make sure that Settings > Tracking > Track bots is disabled

Google Analytics tracking

  • The Google Analytics tracking method could push impressions from multiple sites into the same Analytics report if they use the same Analytics ID. This is especially common if you are actively using a test site.
  • Go to your Analytics account, navigate to Admin > [choose the property] > [choose the view] > [go to View Settings] and enable Bot Filtering.

Other tracking methods

  • Tracking is by default disabled for known bots. However, there could still be a large amount of bot traffic unrecognized as such. Switching to the frontend tracking method with AJAX could help in this case.
  • Ads that show up in a delayed sticky position or in a popup are tracked even if they didn’t show up unless you choose the AJAX or Analytics tracking methods (a fix for that is intended)
  • If you are using the AMP technology then our tracking falls back to the default method. This allows bots to be tracked as well. You can analyze the impact of this in the tracking debug log (see below).

Different Impressions compared to Analytics

If you notice a huge difference between impressions from ads and page impressions or ad impressions in your page analytics (e.g., Google Analytics) you should be aware of a few things:

  • Only compare impressions of pages with ads that are reliably on those pages all the time (e.g., without visitor conditions)
  • Be aware of the differences between the tracking methods. E.g., track on load could count every visitor, even bots, and therefore result in much higher ad impressions
  • If you are using AMP, make sure that AMP is configured correctly for page impression tracking
  • If you are using a consent-gathering tool, make sure it is correctly configured for ads as well as for page tracking
  • Google Analytics only tracks the first 20 events per page impression. If you have more events per page, including ad impressions and other custom events, then you will notice lower impressions compared to local ad impression tracking

Clicks not tracked

Please make sure that you have set up the target URL like described in the documentation (section Click target URL).

In a nutshell:

  • The URL you want to link to must be inserted into the URL field in the ad parameters box of the single ad
  • If you already have a link within the ad code (especially in Rich Media or Plain Text ad type) you need to replace the value of the href attribute with %link% .

Another reason why clicks are not tracked is that your ad code might not support it. Especially JavaScript based ads that come from ad networks (e.g. AdSense) have tracking included and don’t allow click tracking from other scripts. This would also break the ad technically since these codes already contain a link and adding our tracking link might break that.

Tracking might not work for ad types from third-party plugins like the Advanced Ads integration for PeepSo. They told us that they won’t be able to work on the compatibility.

Clicks too low

We are not aware of a general problem causing too few clicks to be tracked locally. However, it can happen that an advertiser sees fewer visits from your site in their Analytics account under Acquisition > All Traffic > Referral than Advanced Ads recorded clicks on banners that lead to their website.

There are various potential causes on your and the client’s website, including redirects from HTTP to HTTPS and vice versa. The most reliable method to track referrals from your website on the advertiser’s site is adding utm parameters to the target link. Find more information on how to use them in the Google manual.

Clicks too high

The most common reason for too many clicks is bots following the links.

Advanced Ads comes with a filter for the most common bots, but you might want to add more using the advanced-ads-bots filter.

Use the debug mode to identify the user agents of the bots.

Google Analytics has its own bot filter and should not report too many clicks.

Make sure that Settings > Tracking > Track bots is disabled

Moving your blog

If you are using the frontend tracking method and move your blog to another URL (e.g. after moving from development to production environment) you need to save the Advanced Ads settings again.

Tables not created

If you get a warning that the tables are not created, please disable and enable the plugin again. If that doesn’t help, please try to create them manually using the SQL query below. You might have to adjust the table prefix from wp_  to yours before using the query.

CREATE TABLE `wp_advads_clicks` (
  `timestamp` int(10) unsigned NOT NULL,
  `ad_id` int(10) unsigned NOT NULL,
  `count` mediumint(8) unsigned NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `wp_advads_impressions` (
  `timestamp` int(10) unsigned NOT NULL,
  `ad_id` int(10) unsigned NOT NULL,
  `count` mediumint(8) unsigned NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

ALTER TABLE `wp_advads_clicks`
  ADD PRIMARY KEY (`timestamp`,`ad_id`);

ALTER TABLE `wp_advads_impressions`
  ADD PRIMARY KEY (`timestamp`,`ad_id`);

In case your tables don’t support utf8mb4, try utf8.

Debug tracking

Debug mode

You can enable the tracking debug mode if you are not sure about where your impressions or clicks are coming from. This mode logs every impression and click with additional information, like the exact time, IP address, page URL, or user agent.

You can find the debug mode under Advanced Ads > Stats > Open database management > Debug mode.

Option to enable the tracking debug mode in Advanced Ads

The debug mode logs all events for 24 hours. You can also stop it before that period expires or use the manual debug mode described below to log over a longer period.

The debug file has the CSV format which you can open in a plain text editor or spreadsheet software like Excel or Open Office.

You might need to update your privacy policy to inform your visitors about the information logged. When it comes to personal information, this concerns the log of IP addresses.

The debug mode only works for local tracking methods, i.e., not for Google Analytics tracking.

We have seen security plugins preventing the log file from being written. At this point, there is no general solution to this, but some plugins might have options to temporarily disable such a feature or whitelist certain files.

Enabling the debug mode manually

You can enable the debug mode for a longer period than 24 hours by following the information below.

Just enter the following line into your `wp-config.php` file.


You can also just track impressions and clicks for a specific ad by defining the constant with the ad ID as a value.


The plugin will now log all impressions and clicks together with the URL, IP address, user agent and ad ID into wp-content/advanced-ads-tracking.csv.

Please make sure to disable this logging and remove the log file after you are finished since it takes extra performance.

It might be useful to also log page impressions in this log file in order to find out if there are specific pages or user agents that don’t see ads. You can use this plugin to add page impression logging to the debug file. Follow the instructions in that plugin to set it up.

What to look for in the debug file

Here are a few things you can look at to see if they indicate an issue:

  • Does a certain number of impressions or clicks come from the same IP address? This could indicate a bot or manual click fraud.
  • Are many impressions or clicks made within seconds from the same IP address or user agent? This could indicate a bot.
  • All clicks should be accompanies by at least one impression from the same IP address recorded before the click. Otherwise, it could indicate a bot or broken impression tracking.
  • Do you see user agents that belong to a service? You can normally identify them by a URL or a name that stands out. Inform them if you don’t want them to crawl your site. If this is a bot, let us know so we can add them to our general block list.

Google Analytics tracking

You can debug Analytics tracking in your browser error console.

Go to the Network tab, filter the XHR requests. Impressions are tracked in a batch call while clicks are sent to Analytics using collect. When debugging clicks on ads, make sure to enable the Preserve log option (Chrome) in the Network tab so that the call is visible also when you are forwarded to the target URL.

In the Headers section of these calls, you should scroll down to Form Data, which list all calls, the ad name, IDs, etc.

There can be multiple calls to the batch script, one for cache-busted ads and for non-cache-busted.

Issues with email reports

If emails are not sent at all, please check if your WordPress site can send them using one of the following methods:

  • send the test email under Advanced Ads > Settings > Tracking
  • try the password recovery function on the login screen
  • use Settings > Tools > Site Health > Tools > Mail Check

If neither of the last two work, then the issue is with your WordPress site. Reach out to your hosting provider to solve this or try an SMPT plugin.

If email reports are sent too often or at the wrong time, disable the Tracking plugin and re-enable it again. This will reset the cron job that schedules the report.

You can check the status of the cron jobs using the Crontrol plugin. After enabling the plugin, go to Tools > Cron Events and find advanced_ads_daily_email for the full report and advanced_ads_daily_report for the individual ad reports. You can trigger them manually for debugging.

Please notice that no ad reports are sent if you only use the Google Analytics tracking method.

Please also check if cron jobs are executed on your site at all. The mentioned Crontrol plugin can also help you with that since it lists the time when all cron jobs were last executed.

For further debugging of the reports cron jobs, you can enable the cron debug file by adding the following line to your wp.config.php.
This will log all cron activity under wp-content/advanced-ads-tracking-cron.csv.