Signs Your App Has a Bad Ad Quality Problem (Even If No One’s Complained Yet)

Most app publishers assume they’ll discover an ad quality problem when a user complains. In reality, that’s one of the last signals to appear. Long before someone leaves a one-star review or reports a disruptive ad, the numbers start moving. Revenue per user slips. Sessions get shorter. Growth slows even though nothing obvious has changed in the product or acquisition strategy. The dashboards show the symptoms, but they don’t explain the cause.

That’s the challenge with bad ads in mobile apps. They rarely announce themselves. They quietly erode the user experience through aggressive behaviors like unskippable formats, forced redirects, and deceptive creatives. Standard ad controls can stop ads altogether, but they don’t let publishers isolate the impact of specific ad types or categories. The signals are already there. The missing piece is the visibility to prove what’s causing them.

ARPU Is Down and Nothing in the Product Explains It

When ARPU declines, the first instinct is usually to look at the product. Did engagement change? Was there a weaker acquisition cohort? Did seasonality affect spending or ad demand? Those are all reasonable questions. But when the product is stable and none of the usual explanations fit, ad quality is often the variable that goes unexamined.

Bad ads reduce the value of each user in ways that aren’t immediately obvious. A forced redirect pulls users out of the app entirely, ending the session before it generates any further monetizable engagement. Financial scam ads or deceptive product offer ads erode the trust that brings users back, reducing the sessions and impressions they generate over time. The revenue impact compounds across the user base without ever producing a single complaint ticket.

The problem isn’t that ARPU is an unreliable signal. It’s that it’s non-specific. Standard ad controls allow publishers to disable ads entirely, but they don’t make it possible to compare ARPU with and without specific ad types or categories. By the time the decline is visible in a dashboard, the ad experiences that contributed to it may have already cycled through, leaving publishers with a falling metric and no reliable way to identify what moved it.

Screenshot of a financial scam ad reading "AI Money Tip From a British Tech Millionaire, If you have 200 try this"
A deceptive financial ad served inside a mobile app. Creatives like this erode user trust without triggering an uninstall and the revenue damage shows up in ARPU long before anyone complains.

Retention Is Softening

Retention is the metric most sensitive to first ad experiences, and one of the hardest to diagnose when it moves. A drop in D1 or D7 retention triggers the same investigation as ARPU: was it the onboarding flow, the content, or the acquisition channel? Ad quality rarely enters that conversation early, even though the first session is often where a single disruptive ad shapes a user’s impression of the app.

Users don’t distinguish between the ad and the experience. A deceptive creative or an aggressive format in session one doesn’t just shorten that session, it reduces the probability of a session two. Whether it’s an unskippable interstitial, a brand impersonation ad that appears to come from a trusted company, or inappropriate content that feels completely out of place, a single disruptive ad can shape a user’s perception of the app before they’ve decided it’s worth coming back to.

Retention doesn’t explain why users left. A retention curve looks the same whether users abandoned the app because of a confusing onboarding flow or because a demand partner served disruptive creatives. Publishers can disable ads altogether, but standard ad controls don’t allow them to compare retention with and without specific ad types or categories. As a result, ad quality remains a possibility rather than a measurable variable.

Screenshot of a scareware ad displaying a fake system alert reading "The phone's memory is full and a lot of cached garbage has been found" with a Clean Up button
A scareware ad served inside a mobile app. A user who encounters this in their first session isn’t just interrupted, he’s left questioning whether the app itself is safe to use.

Session Length Is Declining Without a Product Change

Session length is one of the clearest indicators that something is disrupting the user experience in real time. When users begin spending less time in the app without a corresponding product change, most publishers look at product, UX, or performance issues first. Ad quality is often overlooked, even though intrusive ad formats can end a session in seconds.

Autoplay video ads interrupt users when they least expect it. Interstitials without a close button force them to wait through an experience they can’t exit. Heavy creatives that cause endless loading or contribute to app crashes make the app feel unresponsive even when the product itself hasn’t changed. Repeated exposure to any of these conditions users to disengage earlier over time, even when they return.

A shorter session tells you something interrupted the experience. It doesn’t tell you what. A decline in session length caused by bad ads looks no different in a dashboard than one caused by weaker content or a UX regression. Publishers can see the metric moving, but standard ad controls don’t allow them to compare session length with and without specific ad types or categories. The symptom is visible immediately. The cause is not.

One-star app store review describing looping ads with no skip button that force users to watch the same ad four or five times
A real app store review describing looping unskippable ads. By the time a user writes this, the session damage has already happened repeatedly.

Impressions Per User Are Falling

Of the four metrics covered in this article, impressions per user is the one most likely to move first. It doesn’t measure whether users churned or how long they stayed. It measures how much monetizable engagement they generated during each visit. When that number starts declining, users are often disengaging before the damage becomes obvious anywhere else in the dashboard.

The dynamic is subtle. A user who had a disruptive ad experience doesn’t always uninstall the app. They return, but with less patience. Sessions that used to generate four or five impressions now end after two. The user is still counted in your retention numbers. They’re still contributing to session volume. But the monetization opportunity is already shrinking.

Impressions per user is often the earliest warning sign. By the time ARPU reflects the damage, impressions per user has often been declining for some time. By the time retention starts softening, users have already been generating less revenue per visit without any obvious change to the product. Standard ad controls don’t allow publishers to compare this metric across specific ad types or categories. The warning appears early. The attribution does not.

When Higher eCPMs Are the Warning Sign

Not every ad quality problem starts with a declining metric. Sometimes revenue appears to be improving. A sudden increase in eCPM from a specific demand partner can look like a monetization win, especially when fill rates and overall revenue remain stable. But higher eCPMs don’t always reflect higher-quality demand. In some cases, they reflect more aggressive ad experiences that users ultimately reject.

The mechanism is specific. Formats that command premium bids often extract more from each impression by demanding more from the user. High-frequency interstitials, rewarded ads with extended end cards, and non-skippable video formats can outbid cleaner alternatives while delivering exactly the kind of ad experiences that shorten sessions, reduce impressions per user, and weaken retention over time. The revenue looks healthy, but the user metrics tell a different story.

A higher eCPM doesn’t necessarily mean a healthier monetization strategy. Standard reporting shows the revenue increase but rarely explains how it was achieved. Without the ability to isolate the impact of specific ad types or demand partners, publishers can mistake short-term monetization gains for long-term optimization. In some cases, the metric that looks strongest in the dashboard is the one masking the problem.

What It Takes to Actually Make the Connection

The signals described throughout this article are already visible in the dashboards most monetization teams check every day. None of those numbers explain themselves. They show that something changed. They don’t show what caused it. By the time the connection becomes obvious through one-star reviews, ads that users can’t close, or declining app store ratings, the damage has already been compounding for some time. Reviews are confirmation, not discovery.

That connection requires more than standard ad controls allow. Publishers can disable ads entirely, but turning off monetization isn’t a diagnostic tool. What’s missing is the ability to isolate the impact of specific ad types, categories, or demand partners before the damage compounds across the user base. AppHarbr provides that visibility by detecting and blocking malicious, disruptive, and non-compliant ads at the pre-impression level, creating the baseline that standard controls don’t provide. The signals were always there. AppHarbr gives publishers the visibility to understand what those signals are actually telling them.

Sigal is a Content Writer at AppHarbr, covering mobile ad security, in-app ad quality, and the threats facing app developers and publishers in the programmatic ecosystem. You can find Sigal on LinkedIn to connect on all things AdTech.

EXPERIENCE APPHARBR’S INAPP ARMOUR

Ensure egaging experiences for engaged audiences.