Ad Revenue Crisis at Scale - Product Strategy
Product Strategy Question: You are the PM for a B2C product with ad-based monetization. One day, no ads are served and revenue drops to zero. What would be your strategy?
Table of Content:
Clarify the Situation
Analyse Two-Sided Marketplace
Root Cause Analysis
Crisis Management Plan
Build a Long-Term Strategy
Step 1: Clarify the Situation
Before jumping into root causes or solutions, I would first focus on sharply defining the problem. This is a high-severity incident, and it’s critical to align everyone on what exactly happened, to whom, and where.
Here are the clarifying questions I would ask:
1. Was the drop sudden or gradual?
This helps me determine whether this is a technical issue or operational oversight.
If it was sudden (cliff drop), it suggests a production bug, infrastructure failure, or abrupt advertiser behavior (e.g., campaigns ending, third-party outage).
If it was gradual, this could indicate systemic issues in product quality, user engagement, advertiser churn, or reputation damage.
Q) “Can you confirm if ad revenue dropped all at once or tapered off over days?”
2. Which metric dropped? Ad impressions or ad clicks?
The phrase “no ads served” could mean:
No impressions (ads not displayed at all) – likely a rendering, integration, or backend issue.
No engagement (clicks = 0) – could indicate broken CTA, irrelevant targeting, or low-quality ads.
Q) “Are we seeing zero impressions (ads not shown) or are ads shown but not clicked at all?”
3. Is the issue platform-specific?
I would check if the issue is isolated to:
Web vs. Mobile
iOS vs. Android
Specific app versions
This narrows it down to frontend, SDK, or integration issues.
Q) Is this affecting all platforms equally or limited to any particular platform, OS, or app version?”
4. Is this geographically isolated?
Government bans, region-specific outages, or policy compliance issues (like GDPR or Indian ad regulations) could cause region-specific failures.
Q) “Is the revenue drop seen across all geographies or is it concentrated in specific markets?”
5. Is this product-wide or limited to specific segments/pages?
Sometimes a change in user segmentation (e.g., new targeting rules) or layout/UI for a specific page (e.g., search feed only) may accidentally cause ad placements to break or disappear for a subset of users.
Q) “Are we seeing a total drop in ad revenue or is it limited to specific modules, user segments, or entry points?”
6. Any known infra or release activity around this time?
Checking with engineering for recent:
Backend deployments
Ad SDK updates
Feature flags
Helps rule out code regressions or broken configurations.
Q) “Was there any deployment, hotfix, or release around the time this issue began?”
7. Were there any internal or external alerts triggered?
A robust product setup should include monitoring:
Ad fill rate
Ad request failures
API timeouts
Revenue drop thresholds
The absence of an alert indicates a gap in observability which must also be fixed post-mortem.
Q) “Were there any monitoring alerts (internal or from ad partners) that signaled this anomaly?”
8. Any changes on the advertiser/supply side?
Ads are only served if campaigns are available and targeted correctly. Any bulk campaign expiry, compliance block, or blacklisting could cause revenue to fall.
Q) “Do we have confirmation from our ad partners or ad ops teams that campaigns are still active and being served?”
Step 2: Analyse Two-Sided Marketplace
In ad-monetized B2C products, revenue generation doesn’t come from a single entity — it's the outcome of successful interaction between two key players facilitated by the product platform:
The Two-Sided Marketplace Framework:
Demand Side: The Users/Consumers — these are the people using your product and generating impressions (eyeballs).
Supply Side: The Advertisers — these are businesses paying to show ads to your users.
Platform/System: The Product + Infra Layer — it orchestrates targeting, matching, serving, measurement, and revenue attribution.
To solve the “no ads served = zero revenue” problem, you must investigate all three layers systematically.
1. Demand Side: User Traffic (Eyeballs/Impressions)
Users represent the demand for ad content — their presence enables impressions and monetization. If users are not eligible, or not triggering ad units, no ads are served.
Ask:
Has there been a drop in traffic or session volume on the platform?
Is there a drop in specific segments? (e.g., new users, certain geos, logged-out users)
Are users unable to log in, view content, or reach ad-eligible screens?
Are ad blockers increasingly active due to recent changes (e.g., a UI redesign breaking placement rules)?
Did a recent app version make users skip ad-eligible screens, e.g., onboarding or feed?
📌 Example Root Cause: A bug in the latest Android release causes infinite loading for logged-in users — users never reach the home feed, where ads are shown → impressions = 0.
2. Supply Side: Advertisers (Ads to Serve)
Advertisers fund the ecosystem. If they pull back, pause, or are blocked, no ads are available to serve, regardless of user activity.
Ask:
Did any major campaigns expire or pause abruptly?
Were advertiser campaigns flagged for compliance or policy violations?
Was there an API failure or integration issue with third-party ad platforms (Google, Meta, etc.)?
Did we recently increase floor prices or CPMs, making campaigns uncompetitive?
Did a contract lapse or a billing/credit card issue prevent campaigns from going live?
Are segmentation rules too restrictive, inadvertently disqualifying all users from being targeted?
📌 Example Root Cause: Due to a misconfigured pricing rule, all ad bids under $5 CPM are rejected — 90% of advertisers fall below that threshold → supply exists, but none qualifies → ads not served.
3. Platform/System Layer: Matching Engine, SDKs, Infra
The product/platform acts as the “marketplace engine” — if matching, serving, rendering, or tracking fails, the transaction doesn’t complete, and no revenue is recorded.
Ask:
Was there a recent deployment or A/B test impacting the ad rendering component?
Is the ad-serving SDK (e.g., AdMob, MoPub) initializing properly on app launch?
Are API calls for ad requests failing due to auth/token or timeout errors?
Are we correctly passing user attributes for targeting (e.g., geo, age, interest)?
Are impression and click events being tracked and sent for billing and analytics?
Are feature flags controlling ad modules accidentally turned off?
📌 Example Root Cause: The ad engine depends on the user_context.geo_location
attribute for targeting. A recent backend change stops populating this field → no match → no ad served.
Why This Framework Matters?
Framing this as a two-sided marketplace ensures you don’t fall into the trap of assuming it’s just a “tech bug.” Many ad issues are rooted in business logic, user flows, or partner-side decisions.
A great PM doesn’t just check if the API broke — they look at whether advertisers still trust the platform, whether users are seeing value, and whether targeting logic is effectively matchmaking both.
Metrics to Track
Ad Request Volume: Is the product requesting ads at all?
Ad Fill Rate: Are those requests being fulfilled?
Ad Impressions: Are the ads actually rendering on-screen?
Ad CTR: Are users interacting? (if relevant for monetization)
Revenue per Mille (RPM): Are we earning anything from shown ads?
Errors per Request: System health of ad-serving calls
Step 3: Root Cause Analysis
Investigate Across 3 Layers
We'll use a three-layer diagnostic model aligned to the ad monetization ecosystem:
Client Side (Users/Traffic)
Advertiser Side (Supply)
Platform/System Side (Matching Engine + Infra)
1. Client-Side Analysis (Users, Traffic, Eligibility)
This step focuses on understanding if users are still engaging with the product in ad-eligible scenarios and whether we’re generating valid ad requests.