Guide

Ad refresh: when refreshing ads helps revenue, and the rules to follow

What ad refresh is, what Google Ad Manager and AdSense actually allow, how to refresh with Prebid, and how to tell from your own data whether refresh is earning money or just adding impressions.

Updated · 6 min read

Ad refresh means loading a new ad into a slot that is already on the page, without the reader loading a new page. Done well, it earns from readers who stay on one page for a long time. Done badly, it adds impressions nobody sees, can lower what buyers pay and can break platform rules. This guide covers what Google allows, how to set refresh up, and how to check whether it is helping.

What ad refresh is

A refreshing slot requests another ad later in the same visit and replaces the first one. What causes the new request is the trigger. Google Ad Manager recognizes three kinds:

  • User action: the reader brings up substantially new content. Google's examples include the next article loading in an infinite scroll page, filtering shopping results and clicking to reveal hidden content. A gallery or slideshow where each click shows a new slide can fit here.
  • Event-driven: the publisher changes the page content and the ads change with it, such as a new clip in an auto-playing playlist or a new score in a live sports tracker.
  • Time-based: the ad changes after a set interval.

Google says some things do not count as user actions or events: a reader merely being active on the page, mouse movements or scrolls that don't bring up substantially new content, new comments, small updates made only to generate new ads, and events that typically happen less than 120 seconds apart.

On infinite scroll pages, new ad slots added with each new article are new slots, not refreshes. Refresh means an existing slot gets a new ad.

Why publishers refresh, and the downside

A reader who spends five minutes on a long article or a live blog sees the same few ads the whole time. Refresh turns that time into more impressions. But more impressions do not automatically mean more revenue:

  • Buyers can value refreshed inventory less. Ad Manager tells buyers which inventory refreshes, what triggers it and the minimum interval. Google's guidance says that, in general, the longer the interval between refreshes, the more desirable your inventory is to buyers. Ad Manager also applies buyer demand restrictions to requests covered by a refresh declaration.
  • Viewability can fall. Google warns that refreshing slots that are never viewable "can significantly lower your ActiveView rate". See our guide to ad viewability.
  • Each refresh is a new ad request, and with header bidding a new auction: more network requests and more work in the browser.
  • Too fast gets throttled. Google says refreshing too quickly may cause ad requests to be throttled.

Refresh always adds impressions. The question is whether they earn more than they cost in price, viewability and speed.

What Google allows

Google Ad Manager: declare it and keep to the minimums

Ad Manager lets refreshing inventory compete, but you must declare inventory that refreshes:

  • Where: Inventory, then Inventory rules, then Publisher declarations. Target only the ad units, placements or key-values that actually refresh. Demand restrictions apply to everything a declaration targets, whether or not a slot really refreshes.
  • Minimum intervals on desktop and mobile web: none for user action refreshes; 30 seconds for event-triggered and time-based refreshes.
  • Declare honestly: never declare a longer interval than your page uses. If your real interval isn't offered, pick a shorter one. Google's example: refreshing every 220 seconds, declare 180, not 240.
  • Not declaring, or declaring the wrong trigger or interval, is a policy violation. Declarations apply to Open Auctions, Private Auctions, First Look and Open Bidding.
  • A declaration does not make anything refresh. The refresh itself is code on your page, and it must match what you declared.

Google recommends user action or event-driven refreshes where possible.

Google Publisher Tag: how refresh is coded

In Google Publisher Tag (GPT), a refresh is a call to googletag.pubads().refresh(), which fetches new ads for the slots you pass it. The slot must have been displayed first. GPT's guide to controlling ad loading and refresh sets three best practices:

  1. Don't refresh a slot more often than once every 30 seconds.
  2. Don't call clear() before refresh(); it only leaves the slot blank for longer.
  3. Only refresh viewable slots, using GPT's impressionViewable event to know when a slot has become viewable.

Google's sample marks refreshable slots with a key-value (refresh=true), waits for impressionViewable, then refreshes 60 seconds later. The same key-value lets you target your declaration at only the slots that refresh.

AdSense: no automatic refresh

AdSense is much stricter. Its ad placement policies say publishers "are not permitted to refresh a page or an element of a page without the user requesting a refresh". Its rules on modifying ad code also prohibit changes that artificially inflate ad performance. Do not add a refresh timer to AdSense code.

Timeline of a four-minute visit. The ad slot is in view from 0:00 to 1:20, scrolled away until 2:10, then in view until 4:00. A timer that refreshes every 30 seconds loads seven new ads, two of them while the slot is out of view. Refreshing 60 seconds after the ad is seen, only while it is on screen, loads two new ads, both in view.
One illustrative visit. Google Ad Manager's minimum for timed refresh on the web is 30 seconds; Google's code sample refreshes 60 seconds after the ad becomes viewable. Open the full-size diagram.

Refresh with header bidding (Prebid)

With Prebid.js, each refresh needs a new Prebid auction for that slot. Prebid's individual ad unit refresh example calls pbjs.requestBids for just that ad unit, then pbjs.setTargetingForGPTAsync for it, then googletag.pubads().refresh([slot]).

Prebid warns that calling refresh() without new Prebid targeting can send the old bid to Ad Manager again, so the same ad renders over and over. Its setConfig reference describes the safeguards: a STALE_RENDER event when it happens, a suppressStaleRender option that stops a banner bid rendering twice, and, from version 11.36, clearing Prebid targeting from a slot once its bid has won. Every refresh auction also runs against your timeout; see header bidding timeouts.

The IAB Tech Lab's OpenRTB 2.6 specification has a Refresh object for bid requests, carrying the trigger type, the minimum interval and how many times the slot has refreshed since page load. Ask your partners whether they send it.

Practical rules

  • Refresh only slots that are in view. Start the clock when the slot becomes viewable, not when the page loads.
  • Require a minimum time in view, never shorter than the interval you declared. Google's sample waits 60 seconds after the slot becomes viewable.
  • Pause the clock when the slot scrolls out of view or the browser tab is hidden.
  • Cap refreshes per slot per page view, so a tab left open all afternoon does not keep requesting ads.
  • Prefer real triggers. A new article, slide or score is a better reason for a new ad than a timer.
  • Never refresh on a short timer regardless of what the reader is doing.
Refresh typeWhen it can make senseWhat to check
User action (infinite scroll, gallery, filters)The reader brings up substantially new contentEach trigger really shows new content; declared in Ad Manager; ads per page view stay reasonable
Event-driven (live scores, playlists)Live pages whose content changes while readers watchEvents typically at least 120 seconds apart; declared as event-triggered
Time-based, in view onlyLong articles, tools or live blogs where readers stay on one screenClock starts on viewability; interval at least as long as declared; a refresh cap
Timer regardless of viewNot recommendedUnseen impressions and lower viewability
Automatic refresh of AdSense codeNot permittedAdSense placement policies
Timer refresh versus refreshing after the ad is seen (narrated, with captions and music). Made-up timings: a 30-second timer loads seven new ads, two of them out of sight; waiting 60 seconds after each ad is seen loads two, both seen.
Read the transcript

Ad refresh means loading a new ad in the same spot without reloading the page. Done well, it can earn more from long visits. Done badly, it loads ads nobody sees. Here is a four-minute visit, with made-up timings. The reader sees the ad, scrolls away for a while, then comes back. The top row shows when the ad is on screen. A timer every thirty seconds loads seven new ads, and two of them load while nobody can see them. Refreshing sixty seconds after each ad is seen loads two new ads, and the reader sees both. So refresh only ads on screen, never more often than every thirty seconds, and declare refresh in Ad Manager. AdSense doesn't allow automatic refresh at all. Then judge it on revenue per visit.

How to measure whether refresh is working

  1. Label refreshed impressions. Pass a key-value with the refresh count (0 for the first ad, 1 for the first refresh and so on). In Ad Manager the key must be reportable and its values defined, and reports only include data from when you set it up, so do this first. See Google's page on reporting on targeting keys.
  2. Compare first and refreshed impressions on CPM, viewability and fill.
  3. Judge on page RPM and revenue per session, not impressions. If impressions rise and revenue per visit stays flat, refresh is not working.
  4. Watch page speed; see Core Web Vitals and ads.
  5. Test on part of your traffic, one template or a random share of page views, for at least a full week.

If revenue falls after a change, our guide on why your RPM dropped helps separate refresh from other causes.

Common mistakes

  • Refreshing slots that are out of view or in hidden tabs.
  • Declaring a longer interval than the page really uses, or not declaring at all.
  • Declaring the whole network when only a few slots refresh.
  • Calling GPT refresh without a new Prebid auction.
  • Counting impressions instead of revenue.

Common questions

Is ad refresh allowed by Google?

In Google Ad Manager, yes, if you declare it accurately and keep to the minimum intervals: none for user action refreshes, 30 seconds for event-triggered and time-based refreshes on the web. AdSense does not allow refreshing an ad without the user requesting it.

What refresh interval should I use?

30 seconds is Google's minimum for time-based refresh on the web, its code sample waits 60 seconds after a slot becomes viewable, and Google says longer intervals are more desirable to buyers. Start conservatively, label refreshed impressions, and shorten only if revenue per session rises.

Does infinite scroll count as refresh?

New ad slots for new articles are not refreshes. If an existing slot, such as a sidebar unit, gets a new ad when the next article loads, that is a user action refresh and should be declared.

Why are my refreshed impressions cheaper?

Buyers are told when inventory refreshes and how often, and refreshed impressions can be less viewable if the clock ignores whether the slot is in view. Compare the two groups in your reports before changing anything.