Ad Refresh Control


There is always a drive for more page views to bring more ad impressions, but publishers can often leverage their current traffic and ad slots in order to further increase ad impressions by refreshing the ad slots after a given amount of time.

Previously this required a site’s ad implementation code be modified, but not every publisher has the budget or engineers to enable this. Now with the 10up Ad Refresh Control Plugin publishers can enable the refreshing of their ads without needing to make any modifications to their existing ad implementation.

The increase in impressions will vary from site to site, depending largely on how quickly visitors scroll and how long they spend on each page. Impressions can often be improved with the use of sticky ads, allowing an ad(s) to be sticky on the screen and have a better chance of being visible long enough to be refreshed, but enabling the 10up Ad Refresh Control Plugin will allow publishers to get started immediately.

A settings page will allow adjustments such as the time between refreshes, the maximum number of refreshes, and even list advertisers who would not be happy if their ads were refreshed, but smart defaults will be active for all settings out of the box so you can feel safe activating the plugin without consulting an ads expert first.


  • Ad Refresh Control plugin settings.


Manual Installation

  1. Download a zip file and install via the WordPress plugin installer.
  2. Go to the WP-Admin > Settings > Ad Refresh Control settings page within the WordPress admin in order to adjust the settings to meet your specific needs. Settings that we’ve found useful for most sites will be used by default.


Viewability Threshold: The percentage of the ad slot which must be visible in the viewport in order to be considered eligible for being refreshed. It is recommended you do not lower this below 50 or you risk third-party viewability tracking platforms flagging your ad impressions as not having been viewed before refreshing.

Refresh Interval: The number of seconds that must pass between an ad crossing the viewability threshold and the the ad refreshing. The plugin enforces a minimum of 30 in order to avoid your site being flagged for abusing ad refreshes by advertisers.

Maximum Refreshes: The number of times each ad slot is allowed to be refreshed. If this is set to 4 then an ad slot could have a total of 5 impressions by combining the initial loading of the ad with the 4 times it can refresh.

Excluded Advertiser IDs: Prevent ad refreshes for specific advertiser IDs in the format of a comma-separated list (e.g., 125,594,293). If an ad slot ever displays an ad creative from one of the listed advertiser IDs then that ad slot will stop refreshing for the remainder of the page view.

Line Items IDs to Exclude: Prevent ad refreshes for specific line item IDs in the format of a comma-separated list (e.g., 125,594,293).

Sizes to Exclude: Prevent ad refreshes for specific sizes in the format of a comma-separated list (e.g., 125,594,293). Sizes can be specified by name “fluid” or size 300×250, e.g. fluid,300×250.

Slot IDs to Exclude: Prevent ad refreshes for specific slot IDs in the format of a comma-separated list based on the ID of the div, e.g. div-gpt-ad-grid-1.


oktober 16, 2022 1 reply
Really this plugin useful for websites like mine that use ad manager ads to increase revenue thanks you plugin authors
Read all 0 reviews

Contributors & Developers

“Ad Refresh Control” is open source software. The following people have contributed to this plugin.


Translate “Ad Refresh Control” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


1.1.4 – 2023-11-16

  • Changed: Bump WordPress “tested up to” version 6.4 (props @QAharshalkadu, @jeffpaul via #134, #135).
  • Security: Bump postcss from 8.4.25 to 8.4.31, css-loader from 2.1.1 to 6.8.1, postcss-import from 12.0.1 to 15.1.0, postcss-loader from 3.0.0 to 7.3.3 and stylelint-order from 1.0.0 to 6.0.3 (props @dependabot, @Sidsector9 via #127).
  • Security: Bump @babel/traverse from 7.4.3 to 7.23.2 (props @dependabot, @dkotter via #131).
  • Security: Bump browserify-sign from 4.0.4 to 4.2.2 (props @dependabot, @ravinderk via #133).

1.1.3 – 2023-10-16

1.1.2 – 2023-06-14

1.1.1 – 2023-01-05

  • Added: Release build GitHub Action (props @dkotter via #99).
  • Changed: Bump WordPress minimum version from 4.9 to 5.7 and PHP minimum version from 7.0 to 7.4 (props @jayedul, @dkotter via #72).
  • Changed: Bump WordPress “tested up to” version to 6.1 (props @jayedul, @dkotter via #97).
  • Changed: Support Level from Active to Stable (props @jeffpaul via #73).
  • Removed: simple-git as it is no longer used after updating ancestor dependency lint-staged (props @dependabot via #82).
  • Removed: is-svg as it is no longer used after updating ancestor dependency postcss-svgo (props @dependabot via #88).
  • Fixed: PHPCS workflow failures (props @peterwilsoncc, @cadic via #84).
  • Security: Bump terser from 3.17.0 to 4.8.1 (props @dependabot via #71).
  • Security: Bump loader-utils from 1.2.3 to 1.4.2 (props @dependabot via #74).
  • Security: Bump minimatch from 3.0.4 to 3.1.2 (props @dependabot via #76).
  • Security: Bump from 3.2.1 to 6.2.1 and browser-sync from 2.26.5 to 2.27.10 (props @dependabot via #78, #91).
  • Security: Bump postcss from 7.0.14 to 8.4.19 and postcss-preset-env from 5.3.0 to 7.8.3 (props @dependabot via #81).
  • Security: Bump lint-staged from 8.1.5 to 13.0.3 (props @dependabot via #82).
  • Security: Bump set-value from 2.0.0 to 2.0.1 and union-value from 1.0.0 to 1.0.1 (props @dependabot via #86).
  • Security: Bump yargs-parser from 10.1.0 to 20.2.9, stylelint from 9.10.1 to 14.15.0, and webpack-cli from 3.3.1 to 3.3.12 (props @dependabot via #87).
  • Security: Bump postcss-svgo from 4.0.2 to 4.0.3 (props @dependabot via #88).
  • Security: Bump nth-check from 1.0.2 to 2.1.1 and cssnano from 4.1.10 to 5.1.14 (props @dependabot via #89).
  • Security: Bump trim-newlines from 2.0.0 to 3.0.1 and stylelint-declaration-use-variable from 1.7.0 to 1.7.3 (props @dependabot via #93).
  • Security: Bump kind-of from 6.0.2 to 6.0.3 (props @dependabot via #94).
  • Security: Bump serialize-javascript from 1.7.0 to 4.0.0, copy-webpack-plugin from 5.0.3 to 5.1.2, and terser-webpack-plugin from 1.2.3 to 1.4.5 (props @dependabot via #95).
  • Security: Bump decode-uri-component from 0.2.0 to 0.2.2 (props @dependabot via #98).

1.1.0 – 2022-06-27

  • Added: Dependency security scanning (props @jeffpaul, @Sidsector9 via #63).
  • Changed: Bump WordPress version “tested up to” 6.0 (props @cadic via #66).
  • Fixed: PHP Warnings when pushing “Submit” on the settings page (props @sksaju, @peterwilsoncc via #60).
  • Fixed: Error when saving settings for the first time of using the plugin (props @cadic, @faisal-alvi via #67).
  • Security: Bump color-string from 1.5.3 to 1.5.5 (props @dependabot via #51).
  • Security: Bump path-parse from 1.0.6 to 1.0.7 (props @dependabot via #53).
  • Security: Bump follow-redirects from 1.7.0 to 1.14.8 (props @dependabot via #55, #57).
  • Security: Bump ajv from 6.10.0 to 6.12.6 (props @dependabot via #56).
  • Security: Bump tar from 4.4.8 to 4.4.19 (props @dependabot via #58).

1.0.5 – 2021-06-23

  • Added: avc_refresh_interval_value filter applied to default refresh interval value of 30 seconds (props @simondowdles).
  • Security: Bump y18n from 3.2.1 to 3.2.2 (props @dependabot).
  • Security: Bump ssri from 6.0.1 to 6.0.2 (props @dependabot).
  • Security: Bump lodash from 4.17.19 to 4.17.21 (props @dependabot).
  • Security: Bump hosted-git-info from 2.7.1 to 2.8.9 (props @dependabot).
  • Security: Bump browserslist from 4.5.5 to 4.16.5 (props @dependabot).

1.0.4 – 2021-03-24

  • Fixed: initializeSlotData() now correctly receives an event instead of a Slot (props @enshrined).
  • Fixed: isEligible() prevents Uncaught TypeError by checking if event.size exists before attempting to access it (props @enshrined).
  • Security: Bump elliptic from 6.5.3 to 6.5.4 (props @enshrined).

1.0.3 – 2021-03-09

  • Added: Custom callback and avc_refresh_callback filter to be used when an ad slot is ready for refresh (props @enshrined).
  • Added: Linting and testing GitHub Actions (props @jeffpaul, @dinhtungdu).
  • Changed: Bump WordPress version “tested up to” 5.7 (props @enshrined)).
  • Fixed: Issue within viewabilityHandler() where it was calling initializeSlotData() and passing the individual slot instead of the expected event (props @enshrined)).
  • Security: Bump ini from 1.3.5 to 1.3.8 (props @dependabot).

1.0.2 – 2020-11-17

  • Added: Support for additional exclusion rules – line item ID, ad unit size, and ad slot ID (props @elliott-stocks, @davidrgreen).
  • Added: WordPress VIP support and exclusion for UsingCustomConstant PHPCS rule (props @barryceelen).
  • Changed: Webpack config to use CoreJS 3 instead of 2 to handle ES7 polyfills (props @davidrgreen).
  • Removed: Unused namespace abstraction function (props @barryceelen).
  • Fixed: Add check that explicitly verifies that disable_refresh is true before saving the setting (props @barryceelen).
  • Security: Bump dot-prop from 4.2.0 to 4.2.1 (props @dependabot).

1.0.1 – 2020-09-30

  • Added: Plugin header and icon images (props @jackiekjome).
  • Added: GitHub Actions for deploys to (props @jeffpaul).
  • Added: Documentation updates (props @jeffpaul).
  • Security: Bump lodash from 4.17.15 to 4.17.19 (props @dependabot).
  • Security: Bump elliptic from 6.4.1 to 6.5.3 (props @dependabot).

1.0.0 – 2020-06-10

  • Added: Initial public release! 🎉