The first time I open a new client's Ad Manager account, I skip the dashboard entirely and go straight to a saved report I've reused for eight years: ad unit, line item type, impressions, Total CPM, and unfilled impressions, filtered to the last 7 days against the previous 7. That's the whole starting point. Most publishers I audit are sitting on 30-40 custom reports built by someone who left the company two years ago, none of which answer the one question that actually matters: is a specific piece of inventory earning less than it did last week, and why did that happen.
The Reporting Tab Has Dozens Of Dimensions And You Need About Six
Open the Reporting tab in Ad Manager for the first time and you'll find over 60 dimensions and close to 100 metrics available for combination: ad unit, line item, order, advertiser, creative size, device category, operating system, custom key-values, country, and dozens more. Multiply those together and you get thousands of theoretically valid reports. I've watched ad ops hires spend their entire first week building reports that answer questions nobody asked, because the interface never tells you which handful of fields actually predict revenue problems before they show up as a smaller number in the monthly payout.
In practice, the reports that catch real problems are boring and repetitive. You want ad unit, line item type, impressions, Total CPM, unfilled impressions, and Active View viewable rate, run on a rolling 7-day window compared to the prior 7 days. If any of those terms still feel slippery, it's worth working through a proper fill rate, RPM, and CPM glossary before you build anything custom, because that combination surfaces almost everything worth knowing on a weekly basis: a demand partner going quiet, a passback loop eating fill somewhere in the waterfall, a creative rendering issue tanking viewability on a top unit. Device-level breakdowns, hourly reports, and browser-level data are useful for specific investigations later, but they're not what you should be running every week regardless of how busy your calendar is.
- Ad unit: localizes a problem to a specific page or placement instead of the whole site
- Line item type: separates Ad Exchange, Open Bidding, direct-sold, and house line items
- Impressions and Total CPM together: the actual revenue signal, not an estimate
- Unfilled impressions and fill rate: the coverage signal that flags technical gaps
- Active View viewable rate: the quality signal that predicts future CPM softness
The Monday Morning Combination: Three Reports, Fifteen Minutes
The first report I run every Monday is an inventory report broken out by ad unit, comparing this week's impressions and Total CPM against last week's. I'm not looking for anything sophisticated, just ad units where impressions dropped more than 15-20% without a matching traffic drop in your analytics platform. That gap almost always means something changed on the ad serving side: a line item got paused, a tag was removed during a template update, or a size mapping broke silently in a redesign that nobody thought to test against the ad slots. Catching it Monday instead of the following month is the difference between losing $40 a day and losing $1,200 by the time someone notices.
Second is a yield report segmented by line item type: Ad Exchange, third-party Open Bidding, direct-sold guaranteed, and house. I track revenue share and average eCPM for each bucket week over week. When Open Bidding's share of impressions climbs from 30% to 45% while its average eCPM holds flat, that's usually healthy competitive pressure doing its job. But when Ad Exchange volume collapses while Open Bidding backfills the gap at a noticeably lower eCPM, you've likely got a floor price change, a blocked category, or an account-level restriction on the AdX side quietly costing you money that nobody flagged in a changelog anywhere.
Third is a coverage report: ad requests versus unfilled impressions, again by ad unit. A publisher running a reasonably healthy setup should see unfilled rates under 2-3% on most units, assuming sensible floor prices and a handful of connected demand partners. Anything above 8-10% on a unit that used to sit at 3% tells you a chain of demand has broken somewhere: a header bidding partner timing out, a Prebid configuration error introduced in a recent deploy, or a floor price set too aggressively after a rate card update that nobody rolled back once it stopped performing.
- Impressions down more than 15% week over week with flat traffic: check ad unit configuration first
- Ad Exchange share falling while Open Bidding share rises at a lower eCPM: check AdX floors and category blocks
- Unfilled rate above 8-10% on a previously healthy unit: suspect a broken demand chain
- Viewable rate under 60% on above-the-fold units: check for layout shift or lazy-load misconfiguration
Total CPM vs Average eCPM: The Vocabulary Trap For AdSense Migrants
Publishers coming from AdSense are used to one number: RPM, sitting on a dashboard, calculated the same way every single day. Ad Manager throws several CPM variants at you at once and doesn't explain up front which one deserves your trust. Total CPM is revenue divided by total delivered impressions. It's the closest thing to "what did I actually earn per thousand ad views served," and it's calculated from confirmed data. Average eCPM is different: it's an estimated value Ad Manager assigns to a line item for auction competition and delivery ordering, and for non-guaranteed lines it often reflects historical or contracted rate estimates rather than confirmed revenue that's already settled.
This distinction matters more than it looks like it should, because publishers moving from a simple AdSense account onto a full Google Ad Manager vs AdSense setup often panic the first time a line item's Average eCPM shows $4.20 while the actual Total CPM on the delivery report comes out to $3.10 for the same period. Neither number is wrong: they're measuring different points in the pipeline, one an estimate used for ranking, the other a settled outcome once revenue is confirmed. Confusing one metric for another, in my experience, is the single most common mistake I run into during reporting audits, right before a publisher assumes something is broken when it's really just two different measurement methods disagreeing with each other.
RPM Is Still The North Star, But Which RPM
Ad Manager will happily give you an RPM figure at the ad unit level, the line item level, or the site level, and they will not agree with each other, which trips up almost everyone at some point. Ad unit RPM tells you the value of one specific placement in isolation. Site-level RPM, calculated against total page views rather than ad impressions, tells you how well you're monetizing traffic overall, factoring ad density and viewability in together rather than treating each unit as its own island. A site can carry gorgeous $6 CPMs on its top two placements and still post a mediocre page RPM because it's only running two ad units on a template that could reasonably hold four without hurting user experience.
If you're optimizing purely at the line item level without ever checking page RPM, you can end up celebrating a CPM win that didn't move total revenue at all. I've watched teams spend an entire quarter chasing a 12% eCPM lift on one unit while overall RPM stayed completely flat, because they'd quietly reduced ad density elsewhere to "protect user experience" without measuring the tradeoff. Before you set targets for the next quarter, get clear on what RPM actually measures and how to move it, then decide explicitly which layer, unit, page, or session RPM, you're trying to improve, because the tactics for each are genuinely different.
Custom Key-Values Turn One Report Into Ten
The default dimensions in Ad Manager describe your ad serving setup, not your content or your audience. If you want to know whether recipe pages monetize differently than news pages, or whether logged-in users deliver a different eCPM than anonymous visitors, you need custom key-values passed at the page or slot level and then used as a reporting dimension afterward. I typically set up three or four for a new client on day one: content category, device type when it isn't already clean in the standard device dimension, logged-in status, and traffic source bucket, organic, social, or direct.
Once those key-values are flowing through the system, a single yield report suddenly answers questions the default views never could: which content category has a viewability problem, whether social traffic is worth running against fewer, higher-floor units, whether in-app browser traffic is quietly dragging down blended RPM across the whole site. The setup cost is real: you need engineering involvement to pass the values correctly at the tag level, and Ad Manager only reports historically from the moment you start populating a key-value, never retroactively. But for any site over a few million monthly impressions, this segmentation pays for itself within the first month of proper analysis.
- content_category (news, recipes, reviews, etc.) to spot underperforming verticals fast
- login_status (logged-in vs anonymous) if you run any kind of account or membership system
- traffic_source (organic, social, direct, referral) to price floors differently by acquisition channel
- page_template (homepage, article, category, gallery) to isolate layout-driven viewability issues
Automating The Checks: Scheduled Reports And Threshold Alerts
Checking reports manually every day doesn't scale, and honestly, it's not where your attention is best spent anyway. Ad Manager lets you save any report and schedule it for automatic delivery, daily, weekly, or monthly, straight to an inbox as a CSV or spreadsheet file. Set the Monday health check combination from earlier as a scheduled report landing at 6am, and you've removed the excuse of forgetting to check it during a genuinely busy week when three other fires are already burning.
Scheduled delivery alone won't catch a same-day problem, though. By the time Monday's report lands, a Thursday outage has already cost four full days of revenue nobody noticed. For that, most of the accounts I manage pipe Ad Manager data into Looker Studio or a similar BI tool through the reporting API, then set threshold alerts: if unfilled impressions on a given ad unit exceed a set percentage, or Total CPM on a top-10 ad unit drops more than 25% day over day, someone gets a Slack ping or email within a couple of hours instead of finding out at the next scheduled review three days later.
Timezones And Comparison Windows: How Reports Quietly Lie To You
Your network's reporting timezone setting determines where the boundary between "yesterday" and "today" actually falls, and it's easy to get this wrong when a network was set up years ago by someone who picked a default without thinking about it. If your audience is mostly in one region but your network timezone is set to Pacific time, your daily reports are splitting traffic at the wrong hour relative to when your readers are actually awake, which distorts hourly and daily comparisons more than most people realize until they investigate a "drop" that's really just a timezone boundary artifact.
The other trap is comparing the wrong periods. Weekday traffic and weekend traffic often carry meaningfully different RPMs. B2B-adjacent content can see RPM drop 15-25% on weekends, while entertainment content sometimes does the opposite, so comparing this Tuesday to last Sunday tells you almost nothing useful. Always compare like weekday to like weekday, and remember that Ad Exchange revenue in particular finalizes over roughly 48-72 hours, so the last two or three days in any report are still estimates that will shift slightly once settlement completes. Treat anything inside that window as directional, not final.
Diagnosing A Sudden Line Item Delivery Drop, Step By Step
Say your weekly health check flags it: a line item that normally delivers 800,000 impressions a day dropped to 300,000 overnight, with no site changes on your end that you're aware of. The first step is isolating whether it's a demand problem or a serving problem. Pull a delivery report for that line item alone, broken out by ad unit and by hour of day. If the drop is concentrated on specific ad units rather than spread evenly across all of them, the issue is probably targeting or inventory-related rather than demand simply drying up across the board.
Next, check line item priority and what else is competing in the same ad unit. A new order with a higher priority tier or a more aggressive bid can legitimately steal delivery from an older line item without anything actually being broken. If priority and competition both look normal, check the targeting itself: an expired flight date, a frequency cap that got tightened by someone else on the team, geo or key-value targeting edited during an unrelated cleanup, or an inventory size mapping that no longer matches what's actually being requested after a template change.
If none of that explains it and the line item serves programmatic demand, the drop can originate on the demand side rather than in your own setup: a floor price change, a policy flag on the account, or reduced buyer interest in that specific inventory. Before assuming it's purely external, it's worth confirming your inventory still meets basic delivery requirements. Running the affected domain through an eligibility checker takes a few minutes and rules out policy or technical disqualification as the cause before you burn an afternoon debugging targeting rules that were never actually the problem.
The Metrics I'd Stop Checking Every Day
Most publishers check raw impressions and CTR daily out of habit carried over from display advertising's early days, and I think it's mostly wasted attention for standard programmatic display inventory. CTR on a typical display unit tells you almost nothing about revenue health on its own. A banner with a 0.03% CTR and one with a 0.09% CTR can produce nearly identical RPM once you account for viewability and CPM differences between the two placements. Watching CTR daily creates anxiety without creating decisions, because there's rarely an action you'd take based on CTR alone that you wouldn't also take based on RPM or fill rate directly.
The other overrated daily habit is watching total ad requests. It feels like a health metric because it's a big number that usually trends upward, but it conflates traffic growth with ad density changes and refresh rate settings, so on its own it tells you nothing actionable. I'd rather see a publisher check Total CPM and unfilled impressions twice a week and skip CTR and raw ad requests entirely than have them stare at a dashboard every morning tracking numbers that don't map to any specific decision they'd actually make if the number moved.
- Ask 'did Total CPM move on my top 10 ad units,' not 'did CTR move'
- Ask 'did unfilled impressions spike,' not 'did ad requests grow'
- Ask 'did viewable rate drop on above-the-fold units,' not 'did impressions grow'
Pick one report combination, ad unit, line item type, impressions, Total CPM, unfilled impressions, and viewable rate, and schedule it for Monday delivery instead of building one-off reports for questions you'll never ask twice. Add custom key-values once you've outgrown the defaults, and set a threshold alert on your top five ad units so a bad Thursday doesn't turn into a bad month.
Frequently Asked Questions
Written by Ismael Inacio
Founder, Ismael Ads
15+ years helping publishers across LATAM, North America and Europe grow ad revenue through Google AdSense, Ad Manager, AdX and header bidding. Every article here comes from work inside real publisher accounts, not secondhand research.