Ad viewability and why lazy loading isn’t always the fix
Just wrote a practical guide on viewability for publishers who are looking for more than "just lazy load your ads" advice.
Here's the short version of what it covers:
- Prioritise your header script and CMP. Every millisecond of delay pushes the entire render pipeline back. If your consent manager or header bidding script is loading behind other scripts, that's the first thing to fix.
- Reduce initial load contention. Below-the-fold third-party content (commenting widgets, recommendation engines, social embeds) should not compete with your ad stack for initial load priority. On most publisher sites, they do.
- Deal with sync pixel storms. Third-party widgets trigger cascades of user sync pixels that compete for JS execution time, including the execution time viewability measurement needs. An ad can be perfectly visible and still not register because the measurement script is contending with sync traffic from something the user hasn't even scrolled to.
- Rethink Open Bidding. It adds latency at peak times and Google have said they can't make it faster. Whether the marginal revenue justifies the speed cost across every impression is worth testing.
- Smarter ad refresh. Fixed-timer refresh is blunt. Viewport-limited refresh improves viewability but can reduce impressions. Bid-aware refresh (refreshing based on demand rather than a clock) is where the real gains are, and early testing suggests it can improve viewability and yield at the same time.
The full piece goes into the mechanics of why lazy loading often hurts viewability more than it helps (creative render timing, auction cost multiplication) and includes realworld render pipeline benchmarks. Link in comments.