You log into the dashboard. CPM is up. oCPM is sitting at your target. And somewhere in the backend, eCPM is quietly deciding whether your ad gets shown at all.
Three metrics, all ending in "CPM," and three completely different jobs inside the ad system. Get them straight, and you stop optimizing the wrong thing.
CPM = what you actually pay. oCPM = how you tell the system what you want to pay. eCPM = how the system decides who wins. Three layers, one funnel.
💰 CPM — The Price Tag (and Why It Lies)
CPM stands for Cost Per Mille — cost per thousand impressions. It is the most visible metric on any dashboard and the first one people check.
The formula: CPM = spend ÷ impressions × 1000. If you spend ¥100 on 10,000 impressions, your CPM is ¥10.
Two flavors: In programmatic (search, social, OTT), CPM is dynamic — it fluctuates with competition, audience quality, and time of day. In brand advertising, CPM is usually fixed — you buy a rate card for a specific placement.
But here is where it gets tricky. A low CPM is not automatically good, and a high CPM is not automatically bad.
Every impression comes with a human attached. Some humans are worth ¥50 per 1,000 views. Some are worth ¥5. If you are buying the ¥5 pool, you get cheap traffic that never converts. CPM only tells you the price — it says nothing about the value.
🎯 oCPM — Your Bid, Not Your Cost
oCPM stands for Optimized Cost Per Mille. It is not a metric — it is a bidding method.
How it works: you tell the system what you are willing to pay for a desired action (a purchase, a registration, a lead). The system adjusts its bids in real time to try to hit your target.
Example: You set an oCPM bid with a target CPA of ¥100 for purchases. The system looks at every available impression, estimates the likelihood of a purchase, and decides how much to bid. If the user looks like a buyer, it might bid ¥150 CPM to win the impression. If the user looks unlikely to convert, it bids ¥20. On average, you pay ¥100 per purchase.
That is why it is called "Optimized" — the system does the heavy lifting of bid management. On Baidu, it is called oCPC or oCPM. On Douyin's Ocean Engine, it is oCPM. On Meta, it is called "Lowest Cost" or "Cost Cap." Different names, same logic.
Many people treat oCPM as a target for their actual CPM. They watch the dashboard and panic when realized CPM is above their oCPM bid. But oCPM is your bid input, not your cost output. Your actual CPM can and will vary — what matters is whether your CPA is on track.
🧠 eCPM — The System's Secret Ranking Score
eCPM stands for Effective Cost Per Mille. If CPM is surface-level data and oCPM is the advertiser's conversation with the system, eCPM is the system's internal ranking engine.
Platforms have a limited amount of ad inventory and far more advertisers who want it. So they need a way to decide: who gets this impression? The answer is eCPM.
The simplified formula:
eCPM = Bid × Estimated CTR × Estimated CVR × 1000
The system does not know for certain whether a user will click or convert — it predicts. That prediction is built from historical data on user behavior, creative performance, and ad relevance.
This is where it gets interesting: a lower bid can beat a higher bid, because eCPM is the real gatekeeper.
Advertiser A bids ¥100 but wins the impression. Advertiser B bids ¥150 but loses. Why? Because A's creative produces better CTR and CVR, which generates a higher eCPM — and the platform values revenue, not bids.
This is why "my bid is higher but they get all the traffic" is almost always a creative quality problem. The platform does not care how much you bid — it cares how much revenue it expects to make from your ad. Better creative = higher eCPM = more traffic, even at the same or lower bid.
🔗 How They Fit Together
One sentence says it all:
Advertiser bids via oCPM → System ranks by eCPM → Cost shows as CPM
💡 Practical Takeaways
Understanding the difference between these three changes how you read a dashboard and where you invest your optimization energy.
On Chinese platforms like Baidu (oCPC/oCPM) and Ocean Engine (oCPM), the same logic applies. The naming conventions differ slightly, but the bidding → ranking → pricing pipeline works the same way. Understanding it once means you can audit any platform's auction system.
We run paid media across Baidu, Douyin, WeChat, Xiaohongshu, Bilibili, and Bing China for international agencies and brands. If you want to talk through your campaign data — or just want a second set of eyes — reach out.