
"eCPM suddenly dropped almost 20%."
No ad settings touched. No app update. But revenue is down. The first move is usually to contact your mediation platform, or to suspect something in your own setup is misconfigured.
But more often than not, the cause sits outside your app. Demand in the ad market itself has dropped. This is seasonality.

eCPM in mobile advertising is set by auction. Advertisers bid against each other for the same inventory, and the fiercer the competition, the higher the eCPM. When advertiser budgets shrink, competition weakens and eCPM falls.
The key point: advertiser spend is not constant. Most brands and performance marketers allocate their annual budgets by quarter and by month, and how aggressively they spend varies through the year. For publishers, that pattern shows up as an external variable: seasonality.
It's predictable, up to a point. The absolute numbers vary by category, region, and ad format, but the direction repeats fairly consistently.
Q4 (October–December) is the highest-eCPM stretch of the year. Ahead of Black Friday, Cyber Monday, and Christmas, e-commerce, retail, and finance advertisers concentrate their spend. Some publishers see eCPM run 20–30% above their annual average during this window.
Q1, by contrast, is the traditional low. Advertisers who burned through their Q4 budgets are rebuilding their new-year budgets, so bid competition drops sharply. Even with no changes inside the app, it's common to see eCPM fall more than 30% from late December.
The picture also differs by category. For game apps, DAU (daily active users) rises during school breaks, which expands their ad inventory; when ad demand doesn't keep pace, eCPM drops. Utility and finance apps see a clear lift in relevant advertiser demand during the January new-year-resolution season and the March–April tax-filing season.

Write seasonality off as just an uncontrollable outside force, and you miss something. Once you understand the pattern, you can do at least three things.
You get a baseline for anomaly detection. Comparing eCPM week over week isn't enough to recognize seasonality. To tell a real configuration problem apart from a seasonal effect, you have to compare against the same period last year (YoY) or a weekly average for the same season. If eCPM in the second week of January is down 25% from the prior week but in line with the same week last year, that's a normal swing.
Your performance reporting gets more accurate. You need to be able to answer "why did revenue drop so much in January?" with data. Present the year-over-year comparison alongside the seasonal pattern, and you cut unnecessary confusion out of internal reports and exec conversations.
And you prepare your ad placements before the high-revenue season. To maximize revenue when eCPM climbs, you have to be ready before the season arrives. Adding ad placements or reworking ad logic takes development resources and review time before it ships. If you only start asking "should we add more placements?" after Q4 has already begun, you let a large part of the peak slip by. Use Q1 and Q2 to refine the app while keeping testing costs low, so that when Q4 starts you can absorb the full surge in demand with an already-optimized structure. The reverse also holds: once Q4 is underway, hold off on ad-logic changes and structural experiments as much as possible. Teams introduce needless variables and end up cutting into their own peak-season revenue. It happens more often than you'd think. Knowing seasonality is more than interpreting swings in the numbers. It's knowing when to prepare and when to harvest.
You can't control seasonality. Ad market demand rises and falls no matter what settings you apply, and there's no way to stop it. But you can predict it and prepare. Read the recurring patterns in your data, tune your ad placements in the off-season, and get your structure in place before the peak. That alone produces very different revenue from the same traffic.
One last variable matters here. Some seasonality is hard to catch with your own data alone: region-specific issues, shifts in demand by ad category, industry-wide budget reallocation. At the single-app level, these can look like noise. DARO draws on ad revenue data from across many apps, so it can identify and respond to even these unexpected seasonality patterns. The difference between a team that keeps asking "why did it drop?" at every eCPM swing and a team that says "this is normal for this season, and here's how we'll capture the next peak" comes down to exactly this.