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 too low

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

  • 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. You can enable bot tracking in the settings.
  • 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.
  • 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.

Impressions too high

  • 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)

Different Impressions compared to Analytics

If you notice a huge difference between impressions from ads and page 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

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.

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

Local tracking

Enable the debug mode if you want to analyze which, where and when impressions and clicks are tracked.

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. You might need to update your privacy policy to inform your visitors about this.

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.

Google Analytics tracking

You can debug Analytics tracking in your browser error console.

Go to the Network tab, filter the XHR requests and look for batch.

In the Headers section, 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 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.

 Add-On Issues