Ad Refresh: What It Is and How to Implement It Safely

Ad refresh is one of the most effective ways publishers can increase ad impressions and revenue from existing traffic. Instead of showing one ad per page load, a refreshed ad slot serves multiple creatives during a single session, multiplying your available inventory without requiring additional pageviews.
But ad refresh is not a simple “turn it on and watch revenue grow” feature. Implemented poorly, it can tank your eCPMs, violate ad network policies, and degrade user experience. Implemented well, it can meaningfully increase total revenue while maintaining healthy viewability metrics and advertiser satisfaction.
This guide covers how ad refresh works, the different trigger types, what Google allows and prohibits, how refresh interacts with header bidding and Core Web Vitals, and the best practices every publisher should follow.
What Is Ad Refresh?
Ad refresh (also called ad reload or auto-refresh) is the practice of loading a new ad creative into an existing ad slot without the user navigating to a new page. After a defined trigger, the current ad is replaced by a new one, generating an additional impression from the same placement.
Here is a simplified example. A user reads a long-form article. A banner ad in the sidebar displays a creative from Advertiser A. After 30 seconds (or after the user scrolls past a certain point), the slot refreshes and displays a new creative from Advertiser B. The publisher has served two impressions from a single ad slot on a single page.
The key distinction: ad refresh happens within a page session, not on page navigation. It is managed by JavaScript that calls the ad server to request a new creative and render it in the same DOM element.
Types of Ad Refresh
There are two main approaches to triggering ad refresh, each with different use cases and policy implications.
Time-Based Refresh
The most common type. An ad refreshes automatically after a set interval, typically 30 to 120 seconds. A timer starts after the ad first renders (or becomes viewable), and when the interval elapses, a new ad request fires.
Time-based refresh works best on pages where users spend significant time, such as long articles, forums, or streaming content. It is the simplest to implement but also the most scrutinized by ad networks because it can generate impressions even when users are not actively engaged.
Event-Based Refresh
An ad refreshes in response to a specific user interaction or page event. Common triggers include:
- Clicking a tab or navigating between sections on the same page
- Advancing to the next slide in a gallery or slideshow
- Switching between items in a product comparison tool
- Interacting with an embedded game, quiz, or calculator
- Scrolling past defined content milestones
Event-based refresh ties impressions directly to engagement, making it more defensible from a policy standpoint. Demand partners tend to view event-triggered inventory more favorably because every impression correlates with a real user action.
In practice, most publishers use time-based refresh combined with viewability conditions (the ad must be in the viewport and the tab must be active). Event-based refresh is common on content-heavy sites with paginated or interactive layouts.
Ad Refresh Policies: What Google Allows
Google’s policies are the most important ones to understand, since Google Ad Manager and Google Ad Exchange handle the majority of programmatic ad serving for publishers.
Google AdSense: Refresh Is Prohibited
Google AdSense does not allow publishers to initiate ad refreshes. According to Google’s AdSense program policies, ads must not be reloaded programmatically. The only exception is when the entire page reloads as a result of user navigation. If a user manually refreshes the browser, that counts as a normal new page load and is permitted.
Publishers using AdSense exclusively cannot implement ad refresh. This is one reason why publishers looking to maximize revenue often move to more advanced monetization solutions that support refresh through Google Ad Manager.
Google Ad Manager and AdX: Refresh Is Allowed With Declarations
Google Ad Manager allows ad refresh, but publishers must declare it. Google requires publishers to:
- Declare which inventory refreshes using Inventory Rules in Google Ad Manager
- Specify the triggers that cause each refresh (time-based, event-based, or user-action)
- Specify the minimum interval between refreshes (Google recommends 30 seconds or more for web, 30 to 120 seconds for mobile apps)
Failing to declare refresh inventory is a policy violation that can result in penalties including reduced demand or account suspension. The declaration ensures that demand partners know they are bidding on refreshed inventory and can adjust their bids accordingly.
Other Demand Partners
Beyond Google, most major DSPs and SSPs have their own refresh policies. Some accept refresh inventory at standard rates, while others discount it or opt out entirely. In general, demand partners prefer refresh implementations that include viewability thresholds and active engagement checks. Transparency is key: partners should know up front that inventory refreshes, and at what intervals.
How Ad Refresh Affects Revenue
The appeal of ad refresh is straightforward: more impressions from the same traffic means more revenue. But the relationship between refresh and revenue is not linear.
The Impressions vs. eCPM Tradeoff
Each time an ad slot refreshes, it generates a new impression. But the eCPM (effective cost per mille) of refreshed impressions is typically lower than the first impression in that slot. This happens because:
- Advertisers value first impressions more. The first ad a user sees on a page has the highest attention and engagement potential. Subsequent refreshed ads compete for diminishing attention.
- Frequency capping kicks in. Many advertisers cap how often a single user sees their ad. After the first impression, fewer advertisers are eligible to bid, reducing auction pressure.
- Some demand partners discount refreshed inventory. Buyers who know they are bidding on a third or fourth refresh may bid less aggressively.
The goal of ad refresh is to generate enough additional impressions that total revenue increases, even though per-impression revenue declines. In most well-implemented setups, the total revenue per session goes up, typically by 20 to 50 percent, depending on the site’s content type, session duration, and refresh configuration.
Viewability and Advertiser Value
A critical factor is viewability. An ad is considered viewable when at least 50 percent of its pixels are visible in the viewport for at least one continuous second (the MRC standard). If refresh fires on ads that are not in view, those impressions have near-zero viewability, which drags down your site’s overall viewability score and makes your inventory less valuable to advertisers over time.
This is why smart ad refresh implementations only trigger a refresh when the ad slot is actively in view. If the user has scrolled past the ad or switched to a different browser tab, the refresh timer should pause.
Ad Refresh and Header Bidding
For publishers using header bidding (and most should be), ad refresh adds a layer of complexity that is often overlooked.
A New Auction for Every Refresh
When an ad slot refreshes, a new programmatic auction must run. In a header bidding setup (such as Prebid.js), this means the refresh triggers new bid requests to all configured demand partners, collects their responses, passes the winning bids as key-values to Google Ad Manager, and then calls the ad server to make the final allocation decision.
Each refresh cycle goes through the full auction path. This is important because it means:
- Latency per refresh matters. If your header bidding timeout is two seconds, each refresh takes at least two seconds to complete. During that time, the slot may be blank or show a placeholder.
- Server-side bidding helps. Server-to-server header bidding has lower latency per request than client-side bidding, making it better suited for frequent refreshes.
- Bid density may decline. Not all demand partners respond to every request. On second and third refresh cycles, some partners may not bid, particularly if they have frequency caps or if the user has already seen their campaign.
Correlator and Session Tracking
Google Ad Manager uses a correlator value to group ad requests from the same page view. When refreshing, publishers need to update the correlator so that Ad Manager treats each refresh as a new set of requests. If the correlator is not updated, competitive exclusion and roadblocking rules may prevent new ads from serving. Prebid.js handles this automatically when you use its built-in refresh methods, but custom implementations need to manage it explicitly.
Ad Refresh and Core Web Vitals
Core Web Vitals measure real-user loading performance, interactivity, and visual stability. Ad refresh can impact one of these metrics in particular: Cumulative Layout Shift (CLS).
Preventing Layout Shift
CLS measures unexpected visual movement on the page. If a refreshed ad has different dimensions than the original ad, the slot may resize, pushing surrounding content up or down. This creates layout shift that hurts your CLS score and frustrates users.
To prevent this:
- Fix the ad slot dimensions. Set explicit width and height (or min-height) on the ad container so that it maintains its size regardless of which creative loads.
- Use consistent ad sizes. Configure the slot to accept only one size or a set of sizes that share the same height. This prevents taller or shorter creatives from altering the layout.
- Refresh only in-view slots. CLS is measured based on user-visible shifts. If the ad slot is well outside the viewport when it refreshes, layout shift from that slot will not impact your CLS score.
Lazy Loading and Refresh
Many publishers use lazy loading to defer ad requests until the slot is near the viewport. When combining lazy loading with ad refresh, the interaction is straightforward: the initial ad loads lazily when the user scrolls near it, and the refresh timer starts only after the ad has rendered and is in view. This is actually a natural fit, since both lazy loading and viewability-gated refresh share the same principle: only load or refresh ads when the user can actually see them.
Best Practices for Ad Refresh
Follow these guidelines to maximize revenue from ad refresh while staying compliant and maintaining healthy inventory metrics.
1. Require Viewability Before Refreshing
Never refresh an ad that is not in the user’s viewport. The refresh timer should only run while the ad meets the viewability threshold (at least 50 percent visible). If the user scrolls away, pause the timer. If they switch to another browser tab, pause it. Resume only when the ad is back in view.
2. Set Appropriate Refresh Intervals
Google recommends a minimum of 30 seconds between refreshes. Many publishers find that 30 to 60 seconds strikes the best balance between additional impressions and maintaining eCPM. Refreshing more frequently (for example, every 15 seconds) may generate more impressions, but eCPM will drop sharply and you risk violating ad network policies.
3. Declare Refresh Inventory
In Google Ad Manager, use Inventory Rules to declare which ad units refresh, what triggers the refresh, and the minimum interval. This is not optional. Undeclared refresh inventory is a policy violation. Beyond Google, communicate your refresh setup to all demand partners so they can make informed bidding decisions.
4. Detect Active Tab and User Engagement
Refreshing ads when the user has switched to a different tab or left the page idle generates worthless impressions that drag down viewability. Use the Page Visibility API to detect tab switches and consider tracking mouse movement, scrolling, or keyboard activity to confirm the user is actively engaged.
5. Exclude Certain Campaign Types
Direct-sold campaigns and private marketplace (PMP) deals often have specific delivery guarantees. Refreshing slots that serve these campaigns can distort delivery pacing and impression counts. Exclude guaranteed and reservation campaigns from refresh behavior unless the advertiser has specifically agreed to it.
6. A/B Test Refresh vs. No Refresh
Before rolling out refresh site-wide, test it. Run a controlled A/B test comparing sessions with refresh enabled versus disabled. Measure total session revenue (not just per-impression metrics), viewability rates, and user engagement signals like bounce rate and pages per session. The goal is to confirm that refresh increases session RPM without degrading the user experience.
7. Monitor eCPM Decay Across Refresh Cycles
Track eCPM for each refresh cycle separately (first impression, second, third, and so on). If eCPM drops below a threshold where the additional impression no longer generates meaningful revenue, cap the number of refreshes per session. Most publishers find diminishing returns after three to five refreshes per slot.
How Clickio Handles Ad Refresh
Implementing ad refresh correctly requires managing viewability detection, active-tab monitoring, header bidding coordination, price floor adjustments, CLS prevention, and demand partner compliance, all at once. For most publishers, building and maintaining this in-house is impractical.
Clickio’s monetization platform includes Smart Ad Refresh as a built-in feature across all compatible ad formats. The system applies advanced refresh rules automatically: ads refresh only when they are actively in view, the browser tab is focused, and the user is engaged. Refresh intervals and behavior are optimized per format, device, and page context to maximize total session revenue without compromising viewability scores or violating ad policies.
Because Clickio manages the full ad stack, including header bidding via Prebid, Google Ad Exchange, and premium demand partners, refresh auctions are handled seamlessly. There is no additional integration work. Smart Ad Refresh is part of the platform, configured by Clickio’s AdOps specialists as part of your site’s tailored setup.
Key Takeaways
- Ad refresh loads new ads into existing slots without a page reload, increasing impressions per session.
- Two trigger types exist: time-based (most common) and event-based (tied to user interactions like tab clicks or gallery navigation).
- Google AdSense prohibits refresh. Google Ad Manager allows it but requires full inventory declaration.
- Refresh increases total impressions, but eCPM per impression declines with each cycle. The net effect should be positive.
- Header bidding runs a new auction for each refresh, so latency and bid density matter.
- Fix ad slot dimensions and refresh only in-view ads to protect Core Web Vitals (especially CLS).
- Always A/B test before rolling out, and monitor eCPM decay across refresh cycles.