Helix Media

How to Reduce Unfilled Impressions Without Sacrificing CPM

By · July 8, 2025 · Updated on July 7, 2026 · Revenue Optimization

If blank ads are appearing in Google Ad Manager, start with the basics: eligibility and size mismatches. Then break out floors, backfill, and demand by ad unit, requested size, device, and geo. Don’t cut floors across the whole site until you know the blank inventory is actually a demand issue, not a setup mistake.

Key takeaways

Why unfilled impressions happen in GAM and header bidding

Unfilled impressions in Google Ad Manager usually trace back to one of two issues: no ad is eligible to serve, or eligible demand exists but can’t clear under the current rules. Google’s troubleshooting docs define a blank ad as an ad request that returned no ad because nothing was eligible, so eligibility should be your first check, not your cleanup step Google Ad Manager Help.

Start with GAM eligibility, not bidder blame

The usual operational misses are dull, but they cause real blanks: the wrong ad unit, a slot requesting a size no line item targets, or targeting keys that exclude the demand you expected to run. In a Prebid setup, bids can come back from the wrapper and GAM can still show nothing if the line item, creative size, or key-value setup doesn’t line up.

Requested ad sizes need a close look. A 300x250 slot that also requests 336x280 may look fine in the template, but if your GAM line items or creatives only support one size, the other can create unnecessary misses. Google specifically recommends pairing the Ad unit and Requested ad sizes dimensions with the Unfilled impressions metric to find where blanks are happening across the network Google Ad Manager Help.

Old DFP habits still live inside plenty of GAM accounts: vague ad unit names, inherited targeting no one checks, and line items copied across placements without confirming sizes or exclusions. Mile.tech’s DFP guidance is dated in terminology, but the ops point still applies: unfilled inventory needs ongoing monitoring and setting changes, not a one-time cleanup Mile.tech.

Separate structural demand gaps from broken setup

A real demand gap has a different shape than a setup error. If a low-viewability footer unit on an old article template blanks mostly on non-U.S. mobile traffic, weak auction pressure is plausible. If a top article rail unit blanks on U.S. desktop right after a release, treat it as configuration until the reports say otherwise.

Sitewide fill rate will hide both problems. Slice the report by Ad unit, Requested ad sizes, device category, and geography before you touch floors. Then check Google Analytics to see whether traffic shifted by page or device; a mobile spike from a new distribution source can look like monetization broke when the actual issue is inventory mix.

The practical split is straightforward. If blanks cluster around a size, ad unit, or line-item rule, debug GAM. If they cluster around weaker geos, low-viewability placements, or pages buyers don’t value, adjust your yield strategy. Calling both “low fill” pushes you toward blunt fixes that clean up the dashboard while weakening the auction.

Backfill strategies and house ads that actually improve fill

Backfill helps fill only after you’ve confirmed the slot is truly unsold. Use it before eligibility checks and you may just cover a GAM problem with a low-value ad. Google’s reporting guidance is blunt: if no eligible line items can serve to the slots in question, that’s where unfilled impressions are serving Google Ad Manager Help.

Use backfill as a segment rule, not a network default

House ads, remnant campaigns, and low-priority exchange demand belong on low-demand pages, archive content, utility pages, and placements that rarely pull premium bids. They shouldn’t be a blanket safety net for every ad unit. If a homepage leaderboard goes blank because a sponsorship ended and no eligible fallback exists, fix the priority and targeting, not the entire site with cheap remnant demand.

The clean version is placement-specific. Keep backfill limited to the ad units and geos where you’ve already ruled out size mismatches, key-value errors, and blocked line-item eligibility. That way you reduce unfilled impressions on weak inventory without training buyers to reach premium inventory through the cheapest path.

House ads are useful, but they are still inventory decisions

A house ad isn’t “free fill.” It uses an impression that might have gone to paid demand if the setup was wrong or the floor was too high. Use house ads for newsletter signups, app downloads, subscription offers, or internal promotions only where the alternative is a confirmed blank.

The guardrail is priority separation. Don’t let house ads overlap with premium sponsorship units, guaranteed campaigns, or high-value AdX competition unless line-item priority and targeting make the hierarchy clear. Geniee Group describes unfilled impressions in GAM as ad opportunities that weren’t filled; the real ad ops decision is whether that opportunity should be sold externally, used internally, or removed from the page template Geniee Group.

Also ask whether the slot should exist at all. A sticky mobile unit with strong viewability is worth demand work. A below-content unit that fires after most users are gone may add reporting noise, latency, and blank inventory. Removing a bad slot can improve the remaining auction even if total ad requests fall.

How to set floors for low-demand inventory without breaking yield

Floor changes reduce unfilled impressions safely only when demand is sitting below the current floor and the inventory segment is too weak to support the higher price. Set floors at the inventory level. A premium U.S. article slot and a low-viewability archive unit shouldn’t inherit the same clearing logic.

Inventory segmentFloor toleranceFill sensitivityCPM riskBest operating rule
High-viewability premium slotsHigher tolerance because buyers have a reason to competeModerate; blanks matter, but cheap fill can be worseHigh if you lower floors too quicklyProtect floors and debug eligibility first. Use Ad unit plus Requested ad sizes in GAM before assuming demand is missing Google Ad Manager Help.
Mid-tier article placementsFlexible tolerance; floors should reflect device, geo, and historical auction depthHigh during soft demand periods or on mobile-heavy templatesMedium if one floor is copied across all templatesTest floor adjustments by ad unit and device, then compare net revenue on the same slice.
Low-demand placementsLow tolerance for aggressive floors because buyers may be sparseVery high; a small floor mismatch can create blanksLow to medium, depending on whether traffic has any buyer valueLower floors only after confirming the slot is eligible and the demand gap is real.
Weak geo inventoryDepends on local buyer coverage and whether U.S. demand is separatedHigh, especially outside core U.S. campaignsHigh if weak geos drag pricing rules into stronger marketsSegment geo rules instead of changing network-wide floors; add scoped demand where the report shows persistent blanks.
Experimental or new ad unitsUnknown until enough comparable requests existUnknown; early blanks may be setup noiseHigh if you price based on your best placementLaunch with conservative rules, verify eligibility, then raise floors after demand appears.

The mistake is taking the floor from a top-performing placement and copying it into a weaker one because the size matches. A 300x250 above the fold on a high-intent article is a different product from a 300x250 near the footer on a tag page. Same creative size, different auction.

A floor reset is a recovery move when bids are getting blocked just under the current threshold. It’s a concession when you lower price only to make blanks go away. You’ll see the difference in revenue, not fill rate: if fill climbs while revenue per available impression drops, you bought fill with margin.

Which fix to use first by inventory problem type

The first fix should match the inventory problem, because the same blank slot can come from completely different causes. A blank 300x250 might mean a missing creative size, a floor that’s too tight, weak demand in one geo, or a slot that shouldn’t have been requested in the first place.

Problem typeFastest diagnostic signal in reportingBest first actionExpected fill impactCPM riskWhen not to use the fix
Misconfigured slot or size mismatchUnfilled impressions cluster around one Ad unit and one Requested ad sizes valueCheck GAM ad unit targeting, creative sizes, line-item eligibility, and Prebid key-valuesHigh if the slot was ineligible by mistakeLow; you are restoring eligible demand rather than repricing inventoryDo not add backfill first. It masks the broken setup and makes the issue harder to spot Google Ad Manager Help.
No eligible line item for a known slotGAM shows blanks where no line item can serveCreate or correct fallback eligibility, or remove the ad slot if it has no monetization purposeHigh for that slotLow to medium, depending on fallback qualityDo not keep the slot just to generate requests; Google notes eliminating the ad slot is an option when no eligible line items serve Google Ad Manager Help.
Weak-demand geoUnfilled impressions over-index in a geography while U.S. inventory remains healthyAdd geo-specific demand through Prebid, Open Bidding, AdX rules, or direct packagesMedium to high inside that geoMedium if pricing leaks into stronger marketsDo not apply the same demand and floor setup globally.
Low-demand placementBlanks concentrate in low-viewability or low-engagement ad units across multiple geosUse placement-specific backfill or reduce the ad load if the unit has little buyer valueMediumMedium; cheap clears can normalize low-value inventoryDo not protect the unit with premium-like floors just because it shares a size with stronger inventory.
Excess floor pressureBid activity exists, but impressions remain unfilled after floor rules applyRun a controlled floor reset on that ad unit, size, device, or geo sliceMediumHigh if the floor cut includes premium inventoryDo not lower floors sitewide. Mile.tech’s point about continual setting adjustments supports targeted changes, not broad repricing Mile.tech.

This table is the operating order: fix eligibility before price, fix price before low-value fill, and add demand only where reporting shows a real demand gap. That sequence keeps you from treating a measurement problem like a monetization problem and giving up yield for no reason.

Adding demand sources for underperforming geos and segments

New demand sources help only when they’re aimed at the weak segment that needs them. If non-U.S. mobile web is the issue, adding more adapters to every U.S. desktop auction adds complexity where you already have competition, and it may put extra pressure on page performance.

Isolate the geo before changing the auction

Build the first cut inside GAM: Ad unit, country, device category, Requested ad sizes, Unfilled impressions, impressions, revenue, and CPM. Then check the same segment in Google Analytics for page mix and traffic source shifts. If the weak geo is concentrated on a few templates, the “demand” problem may actually be a placement problem.

For U.S. publishers, keep U.S. inventory in its own pricing and demand lane. AdX, direct campaigns, and premium PMP demand often behave differently on U.S. traffic than on long-tail international traffic. A single universal setup flattens those differences and can make your strongest segment subsidize the weakest one.

Choose the demand path by inventory profile

Use Open Bidding or AdX rule work when the segment is already clean in GAM and you need more exchange competition without adding wrapper weight. Use Prebid adapters when a partner has credible demand for that geography, device, or content category, and you can keep timeout and analytics impact under control.

Direct sponsorships can work for niche non-U.S. audiences, but only if sales can package the segment clearly. A U.S. business publication with meaningful traffic from Canada or the United Kingdom may attract sponsor interest in that audience. A random spread of low-session-depth traffic is usually better handled through scoped programmatic demand or slot cleanup that reduces no-fill.

The tradeoff is auction dilution. More bidders can reduce blank ads, but every added path creates another place where floors, timeouts, privacy rules, and creative size mapping can drift apart. Add demand where the report shows the blank inventory actually lives, and keep stronger U.S. segments on their own rules.

How to measure the fill-versus-yield tradeoff after each change

A fill fix only works if the same inventory slice produces more useful revenue after the change. Measure unfilled impressions, fill rate, CPM, and revenue by ad unit, requested size, and geo before and after each adjustment. Network averages can improve while a premium segment quietly loses yield.

  1. Pull a baseline from Google Ad Manager for the exact slice you plan to change: Ad unit, Requested ad sizes, country, device category, impressions, Unfilled impressions, revenue, and CPM. Use at least one normal business cycle for your site, and avoid comparing a weekday test to a weekend baseline if traffic mix changes sharply.
  2. Make one change at a time on that slice. Examples: correct a missing size mapping, add a low-priority fallback to one ad unit, reset a floor for one mobile placement, or add a geo-specific Prebid demand partner only for the underfilled country.
  3. Hold the comparison to the same inventory. A floor test on mobile 300x250 U.S. article pages should not be judged against all mobile display or all U.S. traffic. If the slice changes, the result is contaminated by mix shift.
  4. Set a revert rule before launch. If fill improves but total revenue on the same slice drops, roll back or tighten the rule. If CPM drops but revenue rises because previously blank inventory now clears, keep testing until you find the point where added fill stops paying for the CPM loss.
  5. Check whether the fix moved the problem. A new backfill rule may reduce blanks in GAM while shifting impressions away from AdX or direct demand. A new bidder may improve weak geos while increasing timeout pressure on mobile. The report should show where the impression went, not only that it stopped being blank.
  6. Document the final rule at the segment level: ad unit, size, geo, device, demand path, floor logic, and fallback priority. The next Q1 reset, site redesign, or Prebid adapter change will be easier to diagnose if the rule explains why it exists.

Your next sequence should be tight and mechanical:

  1. Run the GAM report by Ad unit and Requested ad sizes with Unfilled impressions.
  2. Classify each major blank segment as setup, floor, demand, or low-value slot.
  3. Fix GAM eligibility and size mapping before touching price.
  4. Test floors, backfill, or geo demand only on the affected slice.
  5. Keep the change only if revenue improves on that same slice, not because fill rate looks better sitewide.

Frequently asked questions

What is the fastest way to reduce unfilled impressions in Google Ad Manager?

Start with reporting and eligibility, not floors. If an ad unit has no eligible line items, a size mismatch, or a targeting conflict, fixing the setup usually gets you farther than lowering price floors or adding more demand. The quickest win is usually a specific slot-level correction, not a sitewide yield change.

Do lower price floors always reduce unfilled impressions?

No. Lower floors help only when floor pressure is the real blocker. If the problem is a size mismatch, bad key-value targeting, or weak buyer demand in a certain geo or placement, cutting floors can just sell more inventory at a worse price without meaningfully improving fill.

Should house ads be used as the main backfill strategy?

No, not as your main strategy. House ads are useful for confirmed unsold inventory, but if you rely on them too much, you can hide GAM setup problems and push out better demand. Keep them limited to placements where you’ve already ruled out eligibility and targeting issues.

Which GAM report helps find blank inventory?

Use Google Ad Manager reporting with Ad unit and Requested ad sizes as dimensions, then sort by Unfilled impressions. That combination helps you see whether blanks are tied to a specific slot, a specific size, or both. It’s the fastest way to separate a template problem from a broader demand issue.

How do you know if a fix hurt CPM?

Compare revenue per thousand impressions before and after the change at the same inventory level, not just fill rate. If unfilled impressions drop but CPM and total revenue fall, the fix was too aggressive. You want to reduce blanks without moving too much inventory into cheaper demand.

How we researched this

Sources consulted for this article: