Slot Audit
When one slot under-earns — low fill, low eCPM, fewer impressions than its pageviews imply — audit it end to end. This runbook walks a single slot from "does it even render" down to "is it earning what it should," in the order that catches the most problems soonest.
If the slot shows no ads whatsoever, start with Ads not showing — that's the faster path for a slot that's completely dark. Come here when it renders but under-delivers, or when you want a full config-and-performance pass.
Step 1: Scope
Name the slot and where it should appear. Have its expected page-path(s) in mind — you'll check that a layout actually places it there.
Step 2: Trace the configuration, top to bottom
Each link in this chain can silently cost the slot revenue. Check them in order; the first break explains the most.
1. Layout match
Inventory → Layouts. Is the slot a member of a layout whose page-path pattern matches the pages you expect it on? A slot that isn't in any matching layout never enters the auction on those pages. Confirm the layout's page-path against a real URL. (On a live page, the console line AAM Processing N ad slots tells you how many slots the matched layout registered — see Ads not showing.)
2. GAM ad-unit mapping
Inventory → Ad Slots → <slot> → Insert tab. Is Ad unit set to a GAM ad unit? An unmapped slot can collect bids but has nowhere for GAM to serve the winner — bids arrive and nothing renders. If the mapping is blank or points at the wrong unit, fix it here. (Symptom: populated getBidResponses() but empty getAllWinningBids().)
3. Sizes
Media tab → Sizes. Do the slot's sizes match what demand actually wants and what the mapped GAM ad unit supports? Too few sizes starves the slot of eligible demand; sizes the GAM unit doesn't carry won't serve. Keep the list tight (2–4 is the sweet spot) but make sure the high-demand sizes for the placement are present. If you use the per-device toggle, check both mobile and desktop lists.
4. Bidders and tag IDs
Demand → Prebid → Tag IDs. For each bidder you expect on this slot, is a tag ID assigned to it? A bidder with no tag ID for the slot simply won't bid on it. A slot getting bids from only one or two of your enabled bidders is usually a tag-ID gap, not a demand problem. (Confirm live with pbjs.getBidResponses() — see which bidders actually respond for this slot's ad unit.)
5. Load and refresh
Insert tab → Load and Media tab → Refresh.
- Load (eager / lazy / dynamic): an above-the-fold slot set to lazy-load may miss impressions; a below-the-fold slot set to eager hurts page speed for little gain.
- Refresh (Trigger / Interval / Times): a refresh that's too aggressive inflates impressions at the cost of viewability and eCPM; none at all leaves impressions on the table for engaged users. Refresh should be viewability-gated where possible.
6. Floor
Auction tab → Floor. A floor set too high prices out demand and depresses fill; too low leaves money on the table. Check it against what the slot actually clears (next step). See Floors.
Step 3: Read the slot's performance
Dashboard → Monetization → Supply tab, Breakout by → Ad Slots, filtered to this slot:
| Metric | What it tells you |
|---|---|
| Impressions | Low vs. the slot's pageviews → a layout, load, or fill problem upstream |
| Fill Rate | Low → bids aren't clearing (floor too high, thin bidder coverage, sizes) |
| eCPM | Low → demand or size issue; compare against your other slots in the same position |
| Viewability | Low → placement or aggressive refresh; also drags eCPM, since viewable inventory bids higher |
Supply Health and Fill Rate Trend give the trend; Refresh Analysis is worth a look if the slot refreshes.
Step 4: Attribute the weak spot
For whatever metric is off, break it down further — by device, browser, or bidder — to localize it. "Low fill" often turns out to be "low fill on mobile only," which points straight at the mobile size list or a bidder that's absent on mobile. Use the Supply and Demand breakouts together: Supply tells you the slot is weak, Demand tells you which bidder on it is.
Step 5: Verdict and fixes
| Finding | Fix |
|---|---|
| Not in a matching layout | Add the slot to the right layout |
| Unmapped GAM ad unit | Set Ad unit on the Insert tab |
| Thin sizes | Add the high-demand sizes for this position |
| Missing tag IDs | Assign tag IDs on Demand → Prebid → Tag IDs |
| Wrong load behavior | Eager above the fold, lazy below |
| Over-aggressive refresh | Lengthen the interval; gate on viewability |
| Floor too high | Lower it; re-check fill |
| A specific bidder is weak on this slot | Bidder-health runbook |
Ship changes as a release, then re-read the Supply tab after it's accumulated data. For a risky change, roll it out to a slice of traffic with an experiment first.
Let the AI Assistant run it
The Assistant has a slot-audit flow — "Audit the article_sidebar_top slot", "Why is my mobile header slot's fill rate low?" — that pulls the slot's configuration and performance, breaks down underperformance by dimension, and recommends size, load, refresh, or floor changes. See the AI Assistant guide.
Related
- Ads not showing — a slot that renders nothing at all
- Bidder-health runbook — a specific bidder underperforming
- Creating an ad slot — the tabs and fields referenced above
- Ad slot best practices — sizing, placement, refresh guidance
- Low revenue — when the problem spans more than one slot