A media planner pulled up three tabs on a screen share a few weeks ago, one for each connected TV platform running that quarter's flight. Same major streaming apps in all three. Same premium, prime-time inventory. Same rough audience definition, tuned to reach the same kind of household. Three logos, one campaign, one screen.
Then she scrolled down to the summary row. One of the three platforms had a return that looked sick next to the other two. The room did what every room does when a channel underperforms. Someone floated a creative refresh. Someone else wanted the targeting tightened. A third person suggested cutting that platform's budget in half next quarter and letting the other two carry the flight.
I asked one question before anybody touched the plan. What was the cost per thousand impressions, on each platform, for that same inventory.
Nobody had pulled that number into the deck. When we did, the weak platform's CPM came in several times higher than the other two, for what amounted to the same show, on the same kind of screen, reaching the same kind of household. Its return wasn't bad because the ad wasn't working. Its return was bad because the team had paid several times more for the impression to run.
Read that twice, because it's the whole issue. Nothing about the media was underperforming. The purchasing was.
A pricing problem wearing a performance costume
Once you see it, the fix stops being a creative conversation and turns into a spreadsheet conversation. You don't need a new script. You don't need a tighter segment. You need to move the same budget toward the platforms already selling you that impression at a fair price. The inventory doesn't change. Only where you're buying it does.
That's a harder fix to sit with than a creative refresh, because a creative refresh doesn't ask anyone in the room to admit the plan had been mispriced for two quarters running. Blaming the ad protects the person who approved the buy. Blaming the buy doesn't.
Somebody in that room asked the obvious defensive question. Maybe the pricier platform's inventory really was better. Sometimes it is. A platform with a tighter household match or a cleaner measurement setup can be worth a premium. But that's a claim you test by holding the price constant and comparing what happens, not one you get to assume because a sales deck said so. These three platforms were selling into the same apps, the same dayparts, the same household definitions. There was no version of "better inventory" sitting on the table. There was only a higher price.
How CTV hides the difference
This isn't really a story about one platform having a bad quarter. It's a story about how CTV gets bought in the first place.
Search is an auction. You watch the cost per click move in real time, and you know immediately if you're paying more than the market for the same keyword. Programmatic display runs the same way. The price is visible, and it's visible to everyone at once.
CTV doesn't work like that. It's sold in packages, negotiated by relationship, bundled with makegoods and value-adds that make a straight price comparison feel almost rude to ask for. Every platform will tell you its inventory is premium, its audience graph is proprietary, its measurement is best in class. Some of that is even true. None of it changes the fact that three platforms selling access to the same handful of major streaming apps, against comparable households, are routinely selling the same thing at wildly different prices.
Part of why this hides so well is that the return metric absorbs the price on its own. A dashboard doesn't hand you cost and performance as two separate numbers you can weigh against each other. It hands you one blended figure, a return, that already has the price built into the denominator. Overpay for the same impression and the return drops. Read the return alone and you conclude the platform failed. Read the return next to the CPM and you see the platform priced you out of a fair comparison before the flight ever ran.
Build the comparison this week
And almost nobody checks. I mean that plainly. Teams I sit with compare platform to platform on return, on completion rate, on reach. I have rarely seen one build the comparison that would have caught this in five minutes: CPM, platform by platform, for the same streaming inventory.
You can build that comparison this week. List your CTV platforms down the side. List the major streaming services you actually run against, the same handful of apps every one of your platforms claims to reach, across the top. Fill in what each platform charges you for placement on each service.
You won't get every cell filled on the first pass. Some platforms report at the package level and won't break out service-level pricing unless you ask directly, and then ask again. Ask anyway. A platform that can't or won't tell you what it charges for a specific service is answering a different question than the one you asked, and that answer is worth noting on its own.
Wherever you do fill in a row, you'll find gaps that have nothing to do with performance and everything to do with a rate somebody negotiated eighteen months ago that nobody has revisited since.
Do this before you touch next quarter's creative brief. Fixing an ad that isn't broken wastes a production budget. Fixing a price that was never fair in the first place gets the money back.