<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Xia Yu</title>
    <description>The latest articles on DEV Community by Xia Yu (@mmyy).</description>
    <link>https://dev.to/mmyy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3983485%2F79fa655f-89b3-405d-ac25-9c9744a63f23.jpg</url>
      <title>DEV Community: Xia Yu</title>
      <link>https://dev.to/mmyy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mmyy"/>
    <language>en</language>
    <item>
      <title>Why eCPM Alone Can Mislead You When Mobile Game Ad Revenue Drops</title>
      <dc:creator>Xia Yu</dc:creator>
      <pubDate>Mon, 22 Jun 2026 02:16:31 +0000</pubDate>
      <link>https://dev.to/mmyy/why-ecpm-alone-can-mislead-you-when-mobile-game-ad-revenue-drops-1bio</link>
      <guid>https://dev.to/mmyy/why-ecpm-alone-can-mislead-you-when-mobile-game-ad-revenue-drops-1bio</guid>
      <description>&lt;p&gt;When mobile game ad revenue drops, it is tempting to open the ad dashboard and check one number first:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;eCPM.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If eCPM is down, it feels like the answer is obvious. Demand is worse. The network is paying less. Maybe the mediation setup is broken.&lt;/p&gt;

&lt;p&gt;But in practice, eCPM alone can be a misleading first signal.&lt;/p&gt;

&lt;p&gt;For small mobile game and app teams, the better question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which driver actually changed first?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Revenue Is Not Just eCPM
&lt;/h2&gt;

&lt;p&gt;At a simple level:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ad revenue = impressions / 1000 * eCPM&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That means revenue can drop even when eCPM is stable.&lt;br&gt;
It can also look like eCPM dropped when the real issue is that your traffic mix changed.&lt;/p&gt;

&lt;p&gt;Before changing floors, mediation settings, ad units, or user acquisition decisions, I like to split the movement into a few practical drivers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Six Drivers I Check
&lt;/h2&gt;

&lt;p&gt;When revenue drops, I usually check these in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;impressions&lt;/li&gt;
&lt;li&gt;fill rate / match rate&lt;/li&gt;
&lt;li&gt;eCPM&lt;/li&gt;
&lt;li&gt;country mix&lt;/li&gt;
&lt;li&gt;placement exposure&lt;/li&gt;
&lt;li&gt;ad source / mediation source&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not a perfect science, but it prevents a lot of premature conclusions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Case 1: Revenue Down, eCPM Stable
&lt;/h2&gt;

&lt;p&gt;Revenue: -28%&lt;br&gt;&lt;br&gt;
eCPM: stable&lt;br&gt;&lt;br&gt;
Impressions: stable&lt;br&gt;&lt;br&gt;
Fill rate: 78% -&amp;gt; 54%&lt;/p&gt;

&lt;p&gt;This is probably not an eCPM problem.&lt;/p&gt;

&lt;p&gt;If eCPM stayed stable but fill rate dropped sharply, the first checks should be serving and mediation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;did one ad source stop filling?&lt;/li&gt;
&lt;li&gt;did match rate drop in one country?&lt;/li&gt;
&lt;li&gt;did a floor or waterfall setting change?&lt;/li&gt;
&lt;li&gt;did a platform or SDK issue affect requests?&lt;/li&gt;
&lt;li&gt;did timeout behavior change?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing eCPM floors at this point may make the problem harder to diagnose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Case 2: eCPM Down, Country Mix Changed
&lt;/h2&gt;

&lt;p&gt;Revenue: -18%&lt;br&gt;&lt;br&gt;
Total eCPM: -20%&lt;br&gt;&lt;br&gt;
US eCPM: stable&lt;br&gt;&lt;br&gt;
US impressions share: down&lt;br&gt;&lt;br&gt;
Lower-eCPM countries: up&lt;/p&gt;

&lt;p&gt;At first glance, this looks like demand got worse.&lt;/p&gt;

&lt;p&gt;But if your high-value countries lost share and lower-eCPM countries gained share, total eCPM can drop even when pricing inside each country is normal.&lt;/p&gt;

&lt;p&gt;In this case, I would check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;traffic source changes&lt;/li&gt;
&lt;li&gt;user acquisition campaigns&lt;/li&gt;
&lt;li&gt;organic installs by country&lt;/li&gt;
&lt;li&gt;country-level impressions share&lt;/li&gt;
&lt;li&gt;placement exposure by region&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a traffic mix issue before it is a pricing issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Case 3: One Placement Lost Exposure
&lt;/h2&gt;

&lt;p&gt;Revenue: -22%&lt;br&gt;&lt;br&gt;
eCPM: mostly stable&lt;br&gt;&lt;br&gt;
Fill rate: mostly stable&lt;br&gt;&lt;br&gt;
Rewarded video impressions: down&lt;br&gt;&lt;br&gt;
Interstitial impressions: stable&lt;/p&gt;

&lt;p&gt;This may be a product or placement exposure issue.&lt;/p&gt;

&lt;p&gt;Maybe a button was moved. Maybe a rewarded entry point became less visible. Maybe an update changed level flow or session length.&lt;/p&gt;

&lt;p&gt;In this case, the ad dashboard alone may not explain the drop. You need to compare placement exposure with product behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Diagnosis Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What changed?&lt;/th&gt;
&lt;th&gt;More likely issue&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Revenue down, impressions down&lt;/td&gt;
&lt;td&gt;traffic, product flow, placement exposure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revenue down, fill rate down&lt;/td&gt;
&lt;td&gt;serving, mediation, source availability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revenue down, eCPM down&lt;/td&gt;
&lt;td&gt;demand, pricing, country mix, source performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total eCPM down, top-country eCPM stable&lt;/td&gt;
&lt;td&gt;country mix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One placement down&lt;/td&gt;
&lt;td&gt;UI, session flow, placement logic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One source down&lt;/td&gt;
&lt;td&gt;mediation, bidding, source status, floor setup&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The goal is not to magically increase revenue from one table.&lt;/p&gt;

&lt;p&gt;The goal is to avoid fixing the wrong thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters For Small Teams
&lt;/h2&gt;

&lt;p&gt;Large studios often have analysts, dashboards, alerting, and internal data pipelines.&lt;/p&gt;

&lt;p&gt;Small teams usually do not.&lt;/p&gt;

&lt;p&gt;They may be checking AdMob, AppLovin MAX, Unity LevelPlay, TopOn, Unity Ads, or CSV exports manually.&lt;/p&gt;

&lt;p&gt;That makes diagnosis slow. It also makes it easy to overreact to one number.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Am Building
&lt;/h2&gt;

&lt;p&gt;I am building a small tool called &lt;strong&gt;eCPM Bazaar&lt;/strong&gt; around this diagnosis workflow.&lt;/p&gt;

&lt;p&gt;The current version is intentionally simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;browser-only demo&lt;/li&gt;
&lt;li&gt;CSV templates&lt;/li&gt;
&lt;li&gt;anonymized examples&lt;/li&gt;
&lt;li&gt;copyable diagnosis output&lt;/li&gt;
&lt;li&gt;free test diagnosis by email&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not meant to replace AdMob, AppLovin MAX, Unity LevelPlay, TopOn, or any mediation dashboard.&lt;/p&gt;

&lt;p&gt;The goal is narrower:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;help small mobile game and app teams understand why ad revenue changed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you monetize a mobile game or app with ads, I would love to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what do you check first when revenue drops?&lt;/li&gt;
&lt;li&gt;do you trust eCPM as the first signal?&lt;/li&gt;
&lt;li&gt;do you look at fill rate, country mix, placement exposure, or source performance?&lt;/li&gt;
&lt;li&gt;would a short copyable diagnosis report be useful?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am looking for a few developers with anonymized ad monetization data to test the workflow.&lt;/p&gt;

&lt;p&gt;Public demo: &lt;a href="https://ecpmbazaar.com/demo/" rel="noopener noreferrer"&gt;https://ecpmbazaar.com/demo/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free diagnosis: &lt;a href="https://ecpmbazaar.com/free-diagnosis/" rel="noopener noreferrer"&gt;https://ecpmbazaar.com/free-diagnosis/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>mobile</category>
      <category>analytics</category>
      <category>webmonetization</category>
    </item>
    <item>
      <title>What Small Mobile Game Teams Should Check When Ad Revenue Drops</title>
      <dc:creator>Xia Yu</dc:creator>
      <pubDate>Tue, 16 Jun 2026 01:16:38 +0000</pubDate>
      <link>https://dev.to/mmyy/what-small-mobile-game-teams-should-check-when-ad-revenue-drops-2i6a</link>
      <guid>https://dev.to/mmyy/what-small-mobile-game-teams-should-check-when-ad-revenue-drops-2i6a</guid>
      <description>&lt;p&gt;When ad revenue drops in a mobile game, the first reaction is usually:&lt;/p&gt;

&lt;p&gt;“Did eCPM drop?”&lt;/p&gt;

&lt;p&gt;But in practice, eCPM is only one part of the story.&lt;/p&gt;

&lt;p&gt;For small mobile game and app teams, I think the better first question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which driver actually changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A simple diagnosis usually starts with a few checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Did impressions change?
&lt;/h2&gt;

&lt;p&gt;Revenue can drop even when eCPM is stable.&lt;/p&gt;

&lt;p&gt;If impressions fell, the issue may be traffic, retention, session length, ad placement exposure, or a recent product change.&lt;/p&gt;

&lt;p&gt;In this case, looking only at eCPM can send you in the wrong direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Did eCPM change?
&lt;/h2&gt;

&lt;p&gt;If impressions are stable but eCPM drops, the issue may be demand-side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;weaker advertiser demand&lt;/li&gt;
&lt;li&gt;country mix changes&lt;/li&gt;
&lt;li&gt;bidder/source performance changes&lt;/li&gt;
&lt;li&gt;floor price or waterfall changes&lt;/li&gt;
&lt;li&gt;seasonality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where country, ad format, and ad source breakdowns matter a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Did fill rate or match rate change?
&lt;/h2&gt;

&lt;p&gt;A revenue drop with stable traffic and stable eCPM can still happen if fill rate drops.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rewarded video requests stay stable&lt;/li&gt;
&lt;li&gt;eCPM stays similar&lt;/li&gt;
&lt;li&gt;fill rate drops from 78% to 54%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In that case, I would check mediation, ad source availability, floor settings, platform status, and country-level fill first.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Is the problem concentrated in one country?
&lt;/h2&gt;

&lt;p&gt;A global revenue chart can hide the real problem.&lt;/p&gt;

&lt;p&gt;Sometimes the total drop is mostly caused by one high-value country, such as the US, JP, KR, or DE.&lt;/p&gt;

&lt;p&gt;Checking country-level revenue, eCPM, impressions, and fill rate often makes the issue much clearer.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Is one placement or format responsible?
&lt;/h2&gt;

&lt;p&gt;Rewarded video, interstitial, and banner ads behave differently.&lt;/p&gt;

&lt;p&gt;If only one placement drops, the problem may be tied to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;placement exposure&lt;/li&gt;
&lt;li&gt;ad request logic&lt;/li&gt;
&lt;li&gt;waterfall setup&lt;/li&gt;
&lt;li&gt;user behavior&lt;/li&gt;
&lt;li&gt;one specific ad source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is more actionable than simply saying “revenue is down.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I am thinking about this
&lt;/h2&gt;

&lt;p&gt;I am building &lt;strong&gt;eCPM Bazaar&lt;/strong&gt;, a small diagnosis workflow for mobile game and app developers who monetize with ads.&lt;/p&gt;

&lt;p&gt;The idea is not to replace AdMob, AppLovin MAX, Unity LevelPlay, TopOn, or other dashboards.&lt;/p&gt;

&lt;p&gt;The goal is simpler:&lt;/p&gt;

&lt;p&gt;Help small teams quickly understand whether a revenue change came from eCPM, impressions, fill rate, country mix, placement, or ad source performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Question for developers
&lt;/h2&gt;

&lt;p&gt;If you monetize a mobile game or app with ads:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What do you check first when revenue drops?&lt;/li&gt;
&lt;li&gt;Do you usually look at eCPM first, or fill/match rate first?&lt;/li&gt;
&lt;li&gt;Would a simple daily diagnosis report be useful, or do existing dashboards already solve this well enough?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I would love to hear how other small teams debug ad revenue changes.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>gamedev</category>
      <category>marketing</category>
      <category>mobile</category>
    </item>
    <item>
      <title>How I Built an eCPM Diagnosis Dashboard for Mobile Game Ad Revenue</title>
      <dc:creator>Xia Yu</dc:creator>
      <pubDate>Sun, 14 Jun 2026 08:01:03 +0000</pubDate>
      <link>https://dev.to/mmyy/how-i-built-an-ecpm-diagnosis-dashboard-for-mobile-game-ad-revenue-1hij</link>
      <guid>https://dev.to/mmyy/how-i-built-an-ecpm-diagnosis-dashboard-for-mobile-game-ad-revenue-1hij</guid>
      <description>&lt;p&gt;Every small mobile game team eventually runs into the same question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why did ad revenue change yesterday?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Was it because eCPM dropped, impressions dropped, fill rate changed, one country performed worse, or one ad source started underperforming?&lt;/p&gt;

&lt;p&gt;I am building a small tool called &lt;strong&gt;eCPM Bazaar&lt;/strong&gt; to make that diagnosis easier for mini-game and mobile app developers.&lt;/p&gt;

&lt;p&gt;The first version focuses on a simple workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;collect ad monetization report data&lt;/li&gt;
&lt;li&gt;normalize revenue, impressions, eCPM, fill rate, country, placement, and ad source&lt;/li&gt;
&lt;li&gt;compare the change by dimension&lt;/li&gt;
&lt;li&gt;surface possible causes when revenue drops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current version supports demo mode and a TopOn reporting API integration. The long-term goal is to support more sources such as AdMob, AppLovin MAX, Unity LevelPlay, and CSV exports.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;A lot of ad dashboards show numbers, but small developers still have to manually answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did revenue drop because eCPM fell or because impressions fell?&lt;/li&gt;
&lt;li&gt;Is the issue global or only in one country?&lt;/li&gt;
&lt;li&gt;Is one placement causing most of the loss?&lt;/li&gt;
&lt;li&gt;Did fill rate drop while eCPM stayed stable?&lt;/li&gt;
&lt;li&gt;Is the problem tied to a specific ad source?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, if US rewarded video revenue drops 25%, but eCPM is stable and fill rate falls from 78% to 54%, the first thing to check is probably fill, waterfall, floor settings, or platform status rather than pricing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I am validating
&lt;/h2&gt;

&lt;p&gt;I am not claiming this will magically increase revenue. I am trying to validate whether a clean diagnosis workflow is useful for small teams that do not have a dedicated data analyst.&lt;/p&gt;

&lt;p&gt;If you monetize a game or app with ads, I would love feedback:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When revenue drops, what do you check first?&lt;/li&gt;
&lt;li&gt;Do you care more about eCPM, fill rate, match rate, country mix, or placement performance?&lt;/li&gt;
&lt;li&gt;Would a simple daily alert be useful if it explained the most likely driver of the change?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If this resonates, leave a comment. I am looking for a few developers with real ad monetization data to test the workflow and improve the diagnosis logic.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>mobile</category>
      <category>gamedev</category>
      <category>analytics</category>
    </item>
  </channel>
</rss>
