Low CPI, Flat Revenue? A Stage-by-Stage Funnel Diagnosis

See why low CPI can mean flat subscription revenue, and compare equally aged cohorts to find the first funnel bottleneck, from activation to renewals.

Low CPI, Flat Revenue? A Stage-by-Stage Funnel Diagnosis

Find the step between a cheap install and subscription revenue.

  • CPI describes the cost of acquiring an install, while activation, retention, conversion, and revenue describe what users do afterwards.
  • Compare attributed-install cohorts at the same age and through the same trial and renewal windows.
  • Find the first stage where a campaign falls behind: activation, retention, trial start, paid conversion, or realized revenue.
  • Use product analytics for in-app behavior and connected billing events for subscription outcomes.

Cheap installs can coexist with flat subscription revenue because CPI describes what you paid to acquire an install, not the value that install produces later. Adjust’s CPI definition describes CPI as a user-acquisition cost model and recommends reading it alongside revenue and engagement measures. For a lean subscription team, the practical answer is to follow each attributed-install cohort forward and identify the first stage that weakens.

Compare each metric across campaigns or cohorts using the same event definition and observation window.

Funnel stageMetric to comparePattern that points to a bottleneckFirst cut to inspect
AcquisitionCPI and attributed installsInstalls become cheaper while downstream conversion or revenue per install fallsChannel, campaign, creative, platform, and install date
ActivationActivated users ÷ attributed installsOne source sends installs that reach the app’s first useful action less oftenOnboarding step, activation event, creative, and platform
RetentionReturning users ÷ users who entered the cohortAn initially healthy activation rate is followed by fewer meaningful returnsCohort age, return event, campaign, and first-use experience
Trial or paywallTrial starts or initial purchases ÷ activated usersUsers reach the app but fewer begin the purchase pathPaywall views, trial starts, offer, and app version
Paid conversionFirst payments ÷ eligible trial startsTrial starts hold steady while paid starts lag after the full trial periodTrial length, eligible start dates, payment status, and offer
Renewal and revenueRenewals and realized revenue per attributed installFirst payments arrive, but repeat payments or net revenue stay weakRenewal age, refunds, cancellations, and revenue definition

A campaign can have a low CPI and a high cost per subscriber at the same time. That pattern means the install price looks attractive while fewer acquired users reach the paid event, or the customers who do pay produce less observed revenue during the window. Start at the top of the table, then move down until the first meaningful drop appears.

1. Make cohort comparisons fair

A cohort is a group of users who share a starting point. For this diagnosis, use the attributed install date as the start and keep the acquisition source attached to each user, so you can compare cohorts by channel, campaign, creative, or platform.

The word “age” means elapsed time since that starting event. A cohort that is 10 days old has had more time to start and finish a trial than one that is 3 days old. Comparing their cumulative subscription revenue as if they had equal opportunity to generate it will make the newer cohort look weaker by construction.

Set up the comparison in three steps

  1. Choose one cohort start. Use attributed install as the cohort start when the question is whether acquisition quality changed. Use a different starting event only when the decision calls for it, such as comparing trial starters’ later payment behavior. Record the start event in the chart title or analysis note.
  2. Choose a common age and window. Compare each cohort at the same elapsed age, such as day 7 or day 30 after install. For trial conversion, include only users whose trial could have reached its conversion point by the report cutoff. For renewals, include only subscribers old enough to reach the renewal date being measured.
  3. Hold the event and denominator steady. Use the same definitions for an install, activation, trial start, first payment, refund, and revenue in both groups. A rate needs a stated numerator and denominator, so write them beside the result rather than relying on a chart label alone.

This rule matters even when the reporting tool groups time differently from your spreadsheet. Amplitude’s explanation of retention-analysis time says its default day is a rolling 24-hour window from each user’s starting event. A reporting setup that uses calendar dates can place users with different amounts of elapsed time into the same day label, so use one time convention for every cohort in a comparison.

For example, assume Campaign A’s users were acquired 30 days ago and Campaign B’s users were acquired 12 days ago. A day-30 cumulative revenue comparison gives Campaign A 18 more days to collect trial conversions and renewals. Compare both campaigns at day 12 for an early read, or wait until Campaign B reaches day 30 for a day-30 decision.

If an offer includes a 7-day trial, an install cohort that is only 4 days old cannot yet include a complete seven-day trial-to-paid path for every user who started a trial after installing. Match trial starters by start date and give each the same seven-day conversion opportunity, then wait longer when billing retries or later renewal behavior is part of the question.

Keep the paid-media reporting window and the subscription event window distinct in your notes. The campaign report answers which acquisition source received credit under the selected attribution setup; the subscription report answers which billing events have occurred by a given date. A useful comparison records both the cohort start and the last event date included.

Retention reports also offer different ways to count a return. Amplitude’s calculation guide distinguishes “Return On,” which counts a user returning on the exact interval, from “Return On or After,” which counts a return on that interval or any later one. Choose the version that matches the question: exact-day return describes behavior on a particular day, while return-on-or-after answers whether the user came back by at least that point.

Amplitude’s retention FAQ defines Return On as unique users who trigger the return event during a specified interval divided by unique users who triggered the starting event in the specified initial period. In practice, write down both events and the interval. “Day 7 retention” is hard to interpret if one report uses “opened app” as a return and another uses “completed a workout,” or if one uses calendar dates and the other uses rolling 24-hour periods.

Keep sample size visible when reading a rate. A campaign with a few trial starts can swing sharply when one person converts or refunds. A useful working report shows the raw counts beside each percentage, such as 18 paid users from 60 eligible trial starters, rather than showing “30%” alone.

Example calculation: Assume 18 of 60 eligible trial starters in Campaign A make a first payment, and 12 of 40 in Campaign B do. Both cohorts have completed the same trial window. The trial-to-paid rate is 18 ÷ 60 = 30% for A and 12 ÷ 40 = 30% for B. The equal rates mean this stage does not explain a revenue difference by itself; inspect their acquisition volume, retention after payment, refunds, renewal timing, or revenue per payer next.

2. Check whether lower-cost installs activate

Activation is the first in-app action that shows a user reached meaningful value in your product. The event depends on the app: a finance app might define it as completing a first budget, while a language app might use finishing a first lesson.

A first open is useful for measuring that an app launched, but it may not capture whether a person experienced the reason they installed it. Name one activation event that represents a real step toward the product’s core value. Keep the event narrow enough that the team can tell what happened and when.

Firesbase Analytics’ event documentation says teams can log custom events when recommended event types do not cover a specific application need. That supports an app-specific activation event: define the meaningful action for your own product, then instrument that action so it appears in analytics.

Activation checklist

  • Pick an observable action. Tie activation to a completed user action, such as finishing onboarding or saving a first item. A completed user action gives a clearer activation signal than a screen view alone.
  • Set a clear event boundary. Specify what counts as complete. If “profile created” requires a saved profile, fire the event after a successful save, not when the user opens the form.
  • Keep names and parameters consistent. Firebase’s Flutter event guidance notes that event names are case-sensitive, so first_value and First_Value become distinct event names. Use one spelling across app versions and platforms.
  • Add useful breakdowns. Track parameters that explain where activation changes, such as onboarding step, selected plan, app version, or acquisition campaign where the analytics setup supports them. Firebase’s iOS event guidance explains that custom parameters can serve as report dimensions or metrics, and that teams register custom definitions so those parameters appear in reports.
  • Validate the event with real test flows. Complete the action in a test build and confirm the event fires once at the intended point. Repeat for each platform and app version before comparing a channel that sends traffic to those versions.

Calculate the install-to-activation rate as activated users divided by attributed installs for the same cohort and age window. If Campaign A generates 1,000 attributed installs and 300 users activate within the first 24 hours, its example activation rate is 300 ÷ 1,000 = 30%. If Campaign B generates 800 installs and 160 activate in that same window, its rate is 20%.

Inspect the activation funnel from both sides. In product analytics, look at the steps a new user completes before activation and find the earliest step where completion falls. In acquisition reporting, compare the same event rate by channel, campaign, creative, platform, and install cohort. A weak campaign-specific rate points toward traffic mix or the promise-to-product handoff; a similar drop across every source points toward an app-wide experience or measurement change.

A low-cost ad may attract many installs while setting an expectation that the first session does not meet. Compare the ad’s stated promise with the first useful action in the app, then inspect whether the user can reach that action with the current onboarding, sign-in, and permissions flow.

If an app release changed an event name, event timing, or parameter, reported activation can move even when user behavior did not. Compare app version and platform, test the event in current builds, and check whether the same event is firing on the same completion condition.

Airbridge’s campaign attribution helps group downstream events by acquisition source, while product analytics should establish app-specific activation and behavior. The source of the event matters: attributed install and campaign details support acquisition comparisons; an app event supports the user-action question.

3. See whether activated users return

Activation answers whether a person reached an initial value moment. Retention asks whether they return for another useful session or action. Choose a return event that represents ongoing use in your product, then compare the same event over the same cohort age for each campaign.

A new-user retention curve can help locate when the gap appears. If campaign cohorts start at comparable activation rates but one loses more users between day 1 and day 7, examine the early experience and the promise that brought those users in. If their day-7 retention is similar but later paid revenue diverges, move the diagnosis toward paywall exposure, trial behavior, subscription terms, and realized revenue.

The return event should fit how the product creates repeat value. A daily-use app may reasonably examine daily returns; an app built around weekly planning may need a weekly meaningful action. A one-size retention benchmark can mislead when products have different natural use rhythms, so compare your own sources and product versions on a repeat-use interval that matches the product.

Slice by acquisition source only after confirming the cohort start and return event. A campaign can appear to retain poorly if its users enter the cohort later, have a different mix of platforms, or have fewer days of observation. Add one cut at a time: source, then campaign, then creative or app version. A small set of clear cuts is easier to act on than a dashboard with many overlapping filters.

Then follow the segment that has a retention gap into monetization. For the users who return, compare whether they see the paywall, begin a trial, make a first payment, and renew. This shows whether the business issue is users disappearing before the purchase path or users staying active without converting.

4. Trace trials, payments, renewals, and refunds

A subscription funnel has several separate outcomes. Count trial starts, first payments, renewals, cancellations, and refunds as distinct events, then calculate each rate from the users who had a fair chance to reach that event.

  1. Paywall exposure: Count users who reached the offer screen. Compare exposure among activated users to see whether they are reaching the purchase decision.
  2. Trial or direct purchase: Count trial starts separately from purchases without a trial. Divide by paywall viewers or activated users, and keep that denominator consistent between campaigns.
  3. First payment: Divide first payments by eligible trial starts once the full trial conversion period has passed. For users without a trial, compare initial purchases per eligible paywall viewer.
  4. Renewal: Compare subscribers who reached the renewal date with subscribers who renewed. Give each cohort the same time to reach the relevant billing date.
  5. Refunds and net revenue: Keep refunds visible beside first payments and renewals. State whether the revenue figure is gross or reflects refunds, and use the same revenue basis for each cohort.

Airbridge Core Plan can connect subscription billing data from RevenueCat, Adapty, or Superwall and attribute trial conversions, first payments, renewals, and refunds to the campaign that brought the user in. That connection makes it possible to inspect billing outcomes by acquisition source alongside the campaign’s install cost. The event still needs its own time window and definition, so compare equivalent subscription ages before reading a newer cohort as a failure.

Use the event sequence to identify the first monetization break. If paywall exposure is healthy but trial starts drop, examine offer clarity and payment flow. If trial starts hold but first payments fall, look at trial eligibility, conversion completion, and the payment outcome. If first payments are healthy and later revenue falls, inspect renewal cohorts, cancellations, refunds, and the elapsed period included in the revenue total.

The billing platform records purchase events, while attribution reporting connects those outcomes to acquisition sources. In a weekly review, record the billing source, attribution source, and reporting cutoff so mismatched event totals prompt reconciliation before a budget change.

5. Decide which campaign to keep, pause, or investigate

A campaign decision should use both the cost to acquire users and the downstream outcomes those users have had time to produce. Google Analytics for Firebase describes sending conversion data to ad networks through postbacks, connecting conversion reporting with campaign optimization.

Airbridge Core Plan’s Funnel Report shows subscription rate and cost by channel, campaign, and creative. Airbridge says the report follows users step by step from install to subscription and splits every step by channel, campaign, or creative. When a billing platform is connected, its documented campaign attribution covers trial conversions, first payments, renewals, and refunds. Pair those campaign-level subscription comparisons with product analytics for activation and retention.

DecisionEvidence to line upPractical next move
Keep and carefully scaleSimilar-age cohorts show healthy activation, retention, paid conversion, and realized revenue against your targetIncrease spend in a measured step and keep the cohort cuts and conversion windows the same
Pause or reduceA mature cohort repeatedly shows weak downstream value and cost per subscriber or revenue per install misses your targetReduce spend while you verify the segment and protect budget for campaigns that meet the same maturity test
Investigate before changing budgetCohorts are too new, event instrumentation changed, source labels are inconsistent, or sample counts are thinFix the comparison first, then revisit the decision at a defined cohort age
Rework the first-use pathAttributed installs are strong but activation falls for multiple acquisition sourcesInspect onboarding completion, app versions, and the event boundary before changing targeting
Rework the offer or paywallActivation and retention are healthy while paywall-to-trial or trial-to-paid conversion weakensCompare offer exposure, trial terms, and mature conversion cohorts by source

Set your own target before calling a campaign good or bad. For example, a founder can define a maximum cost per subscriber and a day-30 revenue target based on the app’s economics. Those targets depend on subscription price, fees, refunds, retention, and the payback period the business can support; there is no single rate that makes every app’s campaign healthy.

Read the whole path for one cohort before you change several parts of the system. A sequence such as “low CPI, low activation” gives a different next test from “low CPI, healthy activation, weak trial start.” Moving targeting, onboarding, pricing, and creative at once makes it hard to learn which change affected the next cohort.

A focused weekly review can follow this order:

  1. Confirm the cohort. Set install dates, source labels, app version, platform, and cohort age.
  2. Check instrumentation. Confirm attributed installs, activation, trial, payment, renewal, and refund events mean the same thing across the compared campaigns.
  3. Find the first rate that diverges. Compare install-to-activation, activation-to-return, return-to-trial, trial-to-payment, and payment-to-renewal using the same window.
  4. Choose one next test. Change the step that corresponds to the first supported gap, such as improving onboarding completion when activation drops or testing a clearer trial offer when mature trial conversion drops.
  5. Set a review date. Choose a date after the next cohort reaches the exact age needed for the test, including its trial or renewal window.

This ordering protects a small team from reacting to the most visible number alone. CPI is immediate and easy to compare, while renewals take time to accumulate. Track early indicators to choose what to inspect now, and retain realized subscription revenue as the measure for a final value judgment.

A useful campaign table can fit in one weekly document. Include campaign and creative, attributed installs, spend, CPI, activation rate, retention at chosen intervals, trial starts, eligible trial starts, first payments, renewals, refunds, revenue per install, cohort age, and last included event date. The counts, dates, and definitions help a teammate understand why the team chose to keep, pause, or investigate a campaign.

If a campaign looks poor only on the youngest cohort, wait for that cohort’s specified milestone before acting. If it repeatedly falls behind at the same stage across comparable cohorts, address that stage. If the source-to-source difference disappears after fixing event definitions or cohort ages, correct the reporting and keep the campaign decision open until the data is comparable.

FAQ

Can low CPI still be a good result?

Yes, when the attributed-install cohort also produces the activation, paid conversion, retention, and revenue your business needs. CPI describes the acquisition cost; compare it with cost per subscriber and revenue from an equally mature cohort before increasing spend.

How long should I wait before comparing trial conversion?

Wait until the users in the comparison have reached the full trial conversion window. For a 7-day trial, compare users after they have had seven days from trial start, and keep the trial offer and conversion definition consistent.

Should activation be the same for every app?

No. Choose an event that represents the first meaningful value in your own product, then use the same event definition across campaigns and platforms. A completed lesson, saved budget, or first workout can each fit its product when it represents a real completed action.

Which metric should I use to pause a campaign?

Use the earliest mature funnel metric that falls below your business target, then confirm the later subscription outcomes. A weak activation rate points to a different investigation than a healthy trial rate followed by weak renewals.

Can Airbridge show whether campaigns led to subscriptions?

Yes. Airbridge Core Plan reports subscription rate and cost by channel, campaign, and creative, and connected RevenueCat, Adapty, or Superwall data can attribute trial conversions, first payments, renewals, and refunds to the acquiring campaign. Use product analytics separately for app-specific activation and retention.

Get Started Free

See how these criteria hold up on the real thing.

Get Started Free