Most publishers are not able to optimize their ad stacks because they have not taken a good, hard look at them for years. They are clinging to legacy network relationships or have less-than-ideal preexisting exchange contracts.
They sign up for a new network, connection, or tool, set up their passbacks, and move on.
They’re fighting the battle with one hand tied behind their back – not only leaving a few percentage points of revenue share on the table, but also losing the most out of reach, highest CPM indirect inventory down the waterfall.

Map Everything Before You Touch Anything
You can’t optimize what you can’t see. So, to begin the audit, make a comprehensive list of all demand sources that are connected to your inventory: every ad network, every SSP, every exchange, every rule inside your ad server. Detail which ad units each one serves, on which pages, in which GEOs.
Most publishers are shocked by what they uncover. Overlapping demand sources bidding on the same inventory. Ad units from a campaign two years back still in place and bidding. Google Ad Manager rules that are in direct competition, with one line item blocking a higher-paying source.
This mapping exercise doesn’t sound exciting. That’s because it’s not. But it’s the only way to distinguish between the revenue streams you actually have versus the ones you assume you have because the water’s still running somewhere.
If you can’t map it, you can’t optimize it.
Create A Source-Of-Truth Spreadsheet
Compile everything into one spreadsheet: source name, integration type (network, SSP, exchange), ad units served, average daily impressions, and current status (active, testing, dormant). This will be your day-forward spreadsheet for the audit. Keep it current as you move through the process because just altering the bid dynamics from one source immediately exposes more inventory.
Assign an owner to the spreadsheet, not just a location for it. Audits stall when the file sits in a shared drive with no one accountable for updating it, and within a month it drifts out of sync with what’s actually live in the ad server.
Whoever owns it should get a standing reminder to reconcile it against the ad server’s connected sources at least monthly, so it stays a working reference rather than a snapshot from the week the audit started.
Benchmark Every Demand Source On The Same Metrics
Once you identify what’s connected, measure it. The error numerous teams make at this stage is comparing sources on a single metric, often eCPM, and leaving it at that. But that isn’t sufficient. A source that reports a high eCPM can still lower your net yield once you incorporate fees, latency, and fraud.
Evaluate each demand source based on the following:
eCPM – this is used as a basis for revenue comparison, but it is only effective when combined with the other metrics.
Fill rate – if there is low fill for a specific placement or GEO, it indicates that the source doesn’t have genuine demand for it, regardless of how good their other headline numbers appear.
Viewability – a high CPM for an impression that no one actually viewed is not revenue, it’s a cost that is waiting to result in a buyer dispute or a bid reduction the next time.
Take rate / revenue share – certain SSPs and exchanges present you with appealing gross figures, however, they take a bigger share than you are aware of, once you determine what is actually credited to your account.
Latency – how long does it take the source to respond during an auction? Slow sources make you lose money in two ways: missed impressions due to timeouts, and the impact on page speed.
Compare these five metrics for each source side by side, and you will likely discover at least one source that appeared strong based on eCPM alone but was actually causing you a loss of revenue and loading time. This is the source you need to renegotiate with, restrict, or remove.
Check Whether You’re Still Running A Waterfall
If your stack is still built on a waterfall or sequential mediation model, that’s the first structural problem to fix. Waterfalls ask demand sources one at a time, in a fixed order, whether they want an impression at a set price.
It’s simple to set up, which is why so many legacy stacks still run on it. It’s also inherently inefficient.
The problem with waterfalls is that they don’t let sources compete against each other in real time.
A network at the bottom of the waterfall might have been willing to pay more than the one at the top, but it never gets the chance because the auction ends the moment someone higher up says yes. You end up pricing inventory on guesswork and historical averages instead of live demand.
Header bidding, or unified auction setups, solve this by letting every connected demand source bid simultaneously on the same impression. The highest real-time bid wins, not the highest bid that happened to be asked first.
An ad network platform that supports unified auctions typically delivers a meaningful lift in eCPM simply because more sources are competing for the same impression at the same moment, rather than being asked in sequence.
If you’re auditing a stack and find it’s still waterfall-only, that’s not a minor tweak. That’s a structural rebuild, and it should be prioritized above almost everything else on this list.
Clean The Data Before You Trust Any Of It
All the benchmarking above is pointless if your impression data is dirty. IVT and ad fraud will push up your impression counts, skew your fill rate numbers, and falsely credit low-quality sources for outperforming high-quality ones.
So, before you use volume or eCPM for optimization, first pass all your data through an IVT filter. Your ad server and SSP should both be able to give you your current IVT rates, but you will need to take their word with a grain of salt if it’s coming from a source that directly benefits from their performance.
This is a case where going directly to the other side for your data can give you more reliable numbers to work with.
This is more important than you’d assume. A report or audit or anything based on unscrubbed data doesn’t just not give you anything, it leads you down the wrong path.
You’d ditch a legitimate source because a fraud-heavy rival was inflating their numbers, when that source could very well be the most profitable demand partner you have.
Evaluate Your Ad Server Rules And Floor Pricing
Your advertising server, probably Google Ad Manager if you’re managing substantial traffic, is the administrator for your entire stack. Each priority rule, line item, and floor price is located here. A lot of silent revenue leakage goes on here as well since configurations are rarely reviewed after the initial setups.
Take floor pricing, for example. If you establish floors too high, you’re left with inventory that remains unsold. If you establish them too low, you’ll accept offers that are much lower than the market price would be willing to pay.
Static floors are configured once and then someone leaves them, ending up becoming incorrect within a couple of months.
Demand changes based on the season, the geographical area, and the device.
Programmatic guaranteed and private marketplace deals also must be separately tracked. These direct agreements usually have a CPM premium, however, if the prioritization ad server rules aren’t in the correct sequence against the open exchange, you may end up selling the same inventory for a cheaper bid from the usual open auction.
Review your priority sequence manually. Do not suppose the defaults are working as you imagine they are working.
Watch What The Stack Is Doing To Your Page
Optimizing yield is senseless if you’re doing it on the back of performance. The two are intertwined in ways that compound each other. If you run with an ad server that’s not focused on speed, you’re always going to struggle with latency.
If you’re going with a platform that isn’t intent on maximizing the value of every impression, then you’re going to struggle with yield.
Poor performance costs your essential time-in-view, it’ll cost you an 18% higher Bounce Rate, it’ll cost you 11% lower Page Views per Visit – all that stuff you worked so hard to build through quality content and SEO.
Yet despite this, speed typically plays second fiddle to reach and yield in the ad tech space just because it’s more straightforward to measure how many extra pennies you make for every 100 impressions by increasing the number of auctions you stick on a page than it is to figure out how many you lose as a page slowly loads.
This is also where consolidation earns its keep.
A platform that handles a broad set of demand connections through a single integration reduces the number of separate scripts fighting for load priority, which cuts latency compared to stacking five or six individual SSP tags side by side.
Fewer moving parts on the page usually means faster load times and fewer conflicts in the auction itself.
Don’t Skip Consent Management
The way you set up your CMP determines whether your inventory is even visible to certain demand sources. If the consent signals aren’t correctly being passed on through the entire stack to all the sources on the demand side that need it to bid, then those sources won’t participate in the auction.
They’ll be automatically excluded, and no fraud flag will go up when this happens. Your fill rates will just subtly decrease, and you’ll see lower bids with no apparent leakage in your floors.
Check this during every audit, not just once during initial GDPR or CCPA setup.
CMP configurations drift, integrations get added without updating the consent framework, and a broken signal can sit undetected for months while it silently caps your addressable demand.
Build In First-Party Data And Contextual Signals
With the continuing disappearance of third-party cookies, suppliers who are able to target using your first-party data or based on contextual cues generally sustain CPMs better than those using only behavioral data from other sources.
If your stack audit reveals sources that can’t take contextual or first-party signals, that’s something to address no matter what happens with cookies.
Buyers pay more for confidence, and better targeting signals are one of the more reliable avenues for providing it.
This also means your own data collection is worth auditing alongside your demand sources. If your CMS, subscription platform, or on-site behavior tracking isn’t feeding clean, structured signals into your ad stack, even a supplier that’s fully capable of using first-party data won’t have much to work with.
Check what data you’re actually passing downstream before assuming the gap is on the demand side.
Put The Audit On A Schedule
An audit that happens once fixes a moment in time. Demand shifts, new sources come online, old sources degrade, and floor prices that were right last quarter are too high this quarter.
Treat this as a recurring process and, ideally, do one quarterly. Use the spreadsheet from step one as your source-of-truth and running tally.
The stack that wins isn’t the one with the most connections. It’s the one that’s been checked recently enough to know which connections are actually earning their place.