Refreshing ad units, so that a new ad impression is created after a given delay, is a sure-fire way to increase the size of your ad inventory. More impressions usually mean more money; so refreshing units offers an enticing opportunity to do that without adding more units to a page.
As with most things related to ad monetization, the reality is a little more complex. Refreshing ad units can increase revenue, but it can also have the opposite effect – or even get you banned if you do it wrong.
Policy varies between AdSense and AdX when it comes to ad refreshes. The short version is that AdSense is mostly against it, whilst AdX allows it if you declare it. Let’s look at both cases in more detail:
Refreshing AdSense ads
Generally, the rule here is “don’t”. The exception is when the ad refresh is user-initiated. This means that you can load a new ad into a unit when the user interacts with the page, but can’t reload based just on elapsed time.
The wording of some articles on the DFP help pages often confuse publishers on this issue, but AdSense policy is quite clear:
“Publishers are not permitted to refresh a page or an element of a page without the user requesting a refresh. “
Refreshing DoubleClick Ad Exchange ads
The Ad Exchange (AdX) provides more flexibility through the rules system. With AdX you can automatically reload or refresh ad units, as long as you declare that this is what you do. This declaration allows buyers to choose whether or not to have their ads appear in refreshing ad units.
The declaration can be made in by navigating to RULES > PUBLISHER DECLARATIONS then adding a new display rule to identify your refreshing units.
The declaration asks you to identify what triggers a refresh:
User actions: Ads only change based on a user initiated navigation. There is no minimum refresh interval for ads triggered in this way. This method might apply to single-page-applications that allow the user to navigate without loading a new URL.
Event driven content changes: Ads are refreshed based on a user initiated action that triggers a change in content. Such triggers can only be used to refresh ads after a minimum of 30 seconds. This action might be used in a page that allows the user to click to “read more” or flick between gallery images
Time intervals: The ad refreshes based solely on elapsed time. There must be a minimum of 30 seconds between refreshes.
Having your ad unit refresh is not guaranteed to increase revenue, even in the short term. Some factors worth considering include:
Some advertisers will not bid: Declaring refreshing units will stop some advertisers bidding on them. This could reduce impression CPM.
Bids could be reduced: Impressions on refreshing units may be less effective for some advertisers and bids could be reduced as a result of performance even when auto-refreshing ads are acceptable to them.
CPC ads likely to perform worse: Each unit can only get clicked once, so publishers with a large proportion of CPC bidders may see little benefit from refreshing ads, or even a reduced yield if the highest-winner bidder’s ads go unseen.
How long are users spending on page: If few users are spending 30 seconds or more on page then the results from auto-refreshing will be minimal.
User experience considerations
Refreshing ads means loading more creatives, which creates extra load for the user. Poor user experience reduces visitor loyalty and can send users reaching for their ad blocker, so the additional load from refreshing units needs to be considered.
This is particularly true on sites with significant mobile usage (particular users accessing outside of Wi-Fi), those that already have heavy pages and those who’s users are likely to have slow connections. The types of ads you accept should also be considered as the load from a refreshing text unit vs a refreshing rich media unit can differ greatly.
How to refresh ad units
All of that considered, auto-refreshing units are a viable approach for many and something that we encourage publishers to test. The easiest way to implement it is to use the mechanism built into DFP (click here for instructions)
This requires use of asynchronous GPT tags. This allows you to set a custom refresh period in milliseconds, so be sure to stick to the minimums outlined above.