Many publishers either add sophistication too early because someone intelligent (but with very different traffic than yours) said it would improve their viewability/ECMPs/overall ad earnings/content quality/love life. Or, they wait too long and lose potential ad spend as each competitor defaults to the rules of their auction system.
Start With One Network and Get an Honest Baseline
Before you get started with header bidding, refresh rules, or direct deals, you need a baseline RPM, Revenue Per Mille, or the revenue you’d expect to generate for every 1000 views of a page with ads. To calculate RPM, divide your total earnings by the number of page views or impressions in thousands. This will give you a solid, fact-based foundation to make decisions on since you’ll be able to measure exactly how much your revenue has increased after each step you take.
This is often overlooked, mainly because it requires patience. To determine a reliable RPM, you need to give your chosen ad network time to test, adjust, and learn how best to fill your inventory. This typically takes weeks, even a month or more with smaller publishers or many page templates. One of the main reasons publishers venture down this road is that their chosen ad network never really optimised for their traffic sources and ad sizes. So yes, this is a vital step if you want to make your header bidding experiment a successful one.
Track the Metrics That Actually Tell You Something
Monitoring Revenue per session can be seen as an important measure, but it conceals a lot of information. It is preferable to monitor RPM, eCPM, fill rate, and viewability separately. It is highly recommended to monitor these metrics in Google Ad Manager or any dashboard that directly fetches realtime data from your ad network.
Here’s why each metric is important in its own right:
RPM: It indicates how much the ad network is ready to pay per 1000 sessions. This is the metric that advertisers and ad networks cannot wangle. eCPM: eCPM is the effective potential earnings per 1000 impressions. This is what you get in your hand after fees and revenue share. Fill rate: Not every served request results in an impression. Fill rate gives you the percentage of your available impressions that’s being sold. Viewability: This is how IAB describes it ‘An ad is considered viewable when 50% of the ad’s pixels are in view for a minimum of one second’. Advertisers don’t pay for non-viewable impressions.
If you are not monitoring these through your GAM’s dashboard or a simple JSON API script around your Ad Network’s reporting service, you are probably still in the dark regarding the actual performance on at least 3 out of these 4 important metrics.
Place Ads Where They Earn Without Wrecking the Page
Placing ads is often where sites lose out on potential revenue, and where they provide a bad reading experience for users. The best-performing units are those above the fold, right after the first paragraph of content, and a sticky footer unit on mobile. These placements are in the user’s line of sight.
The percentage that holds this together is the ad density: it’s the percentage of your total page space that is occupied by ads. You want to keep that under 30%. Go over this limit, and you’re not just losing readers, you’re losing out because ad networks and search engines are abandoning your pages. Excessive ads render a poor user experience and search engines, and ad networks demote or cancel pages that deliver this.
Diversify Demand, But Match Networks to Your Actual Audience
Once you have consistent traffic and header bidding set up, the next step is to introduce demand sources beyond your original network. This doesn’t mean adding as many networks as possible. It means identifying partners whose advertiser demand is a good fit for your audience’s geography, device mix, and content niche.
A general news site and a niche B2B blog have very different ideal demand partners, even if they’re both at the same approximate level of traffic. When you’re ready to start scaling up, researching the best display ad networks for publishers helps you identify partners that mesh with your traffic quality, niche, and geographic mix, rather than simply adding another source of impressions for its own sake. A network that pays well for US desktop impressions may perform poorly if your site is 70% mobile and international.
This is also the stage at which you should start renegotiating your revenue share. Networks that offer default rates on low volume often have higher rates they can offer you once your traffic becomes steady and reaches a certain size. Most publishers never think to ask. Don’t be one of them.
Move to Header Bidding Once Traffic Justifies it
A single network running in a waterfall setup, where demand sources get called one at a time in a fixed order, leaves money on the table because it never lets your best-paying advertisers compete against each other in real-time. Header bidding fixes this by letting multiple demand partners bid on the same impression simultaneously, either through your existing Prebid.js setup or via a managed wrapper if you don’t have in-house dev resources.
The lift here is real: publishers commonly see revenue increase 20-40% moving from waterfall to header bidding, simply because the auction dynamic replaces a fixed pecking order. But this step only makes sense once you have enough traffic to attract multiple demand partners worth bidding. Setting up header bidding for a site doing a few thousand sessions a month adds complexity without adding meaningful competition, since there won’t be enough bid density to matter. Wait until your baseline data shows consistent volume before adding this layer.
Use Ad Refresh Carefully, Not Aggressively
Ad refresh, or reloading a unit to create a new impression during the same page view, is one of the tools that’s most often either outright banned or explicitly frowned upon in a publisher’s toolbox. Done right, it’s a legitimate way to increase impressions on long-session content like articles or forums. Done wrong, it violates network policy and turns your page into a slot machine that readers learn to ignore.
The best compromise solution, and the lowest risk, ties the refresh strictly to viewability thresholds. Since you can’t guarantee a viewable ad was seen if an adjacent ad unit refreshes, only refresh when an ad unit has been at least 50% in view for 10 seconds or more. Then, if you want to allow multiple refreshes over the course of a long session, cap the number of refreshes and keep the new impression at or above the 50/10 threshold. Voila! The new impressions are about as legitimate as they’re ever going to get from a viewability standpoint, and the experience is still tolerable for anyone that’s actually reading the page. Refresh timers that are purely clock based, with no viewability check, and you might as well be setting your entire ad network earnings on fire.
Protect Page Speed While You Scale Monetization
Adding more demand partners means more ad scripts, and more ad scripts mean more load time. This is the main trade-off of the approach, but it’s often the one that gets forgotten when the revenue is rolling in. There’s no easy answer to how much to cut back without losing revenue, but a total load time of three seconds or less is the requirement if you want to keep more than half your audience on mobile.
Lazy-loading ads below the fold is one of the simplest ways to minimize impact: if the ad isn’t viewable anyway, why load it? This also means not charging for those ads, so it’s not a perfect solution. But it’s more than nothing. It also tends to be something people agree on, it just rarely makes the to-do list.
Build Direct Sales Packages Once You Have Segmented Data
Programmatic demand reliably fills your inventory, but it seldom meets your ceiling rate. Direct ad sales, where you sell inventory directly to advertisers with no network intermediary, can bring in 2-5x the CPM of programmatic fill, but only if you can segment your inventory in a way that’s valuable to a buyer.
That means bucketing your traffic by geography, device, and content category, and then bundling and selling the segments that perform the best or attract the most relevant advertisers. A site with a loyal, well-defined niche audience has more leverage here than you might think from your raw traffic numbers. Advertisers pay a premium to know exactly who they’re reaching. Programmatic exchanges can’t offer that certainty the way a direct placement can.
You don’t need a sales team to get started with this. A simple media kit, your segmented traffic data, and a few direct outreach emails to relevant advertisers can get you an entirely network-free revenue stream.
Test Placements Against Retention, Not Just Revenue
Any modification in this playbook needs to be tested and not solely implemented. Conduct A/B tests on layout and placement alterations, but in addition to RPM, monitor bounce rate and time-on-page as key metrics when making modifications. For instance, if a layout modification increases RPM by 15%, but bounce rate doubles, then that should not be considered a successful change. Instead, convert bounce rate and time-on-page as well as RPM into important performance values and monitor all three.
The same goes for ad density modifications and refresh timing. Revenues may increase during the first week with a more invasive layout, which could be viewed as a successful alteration, but the number of returning visitors may decrease. Time will allow tests to reveal this type of delayed impact, so you can make that call before pushing the changes into your production environment.
The Sequence Matters More Than Any Single Tactic
None of these tactics work in isolation, and none of them work well if they’re deployed before your traffic and data can support them. A baseline network gives you a number to measure against. Metrics tracking tells you where the real gaps are. Placement and density decide whether readers stick around long enough to see the ads at all. Header bidding, refresh, diversification, and direct sales are layers you add as the previous ones prove out. Skip the sequence and you’ll either overbuild a stack your traffic can’t support, or leave revenue sitting on the table because you never moved past the basics.





