RevenueHogdocs
Dashboard

Funnel

The Funnel page: impressions to paid from Apple's reports, net installs, the log and linear silhouette, step conversion math and the real trial cohort from S2S.

The Funnel page (/funnel) follows the App Store funnel from impressions to paid subscribers: a freshness callout, reach tiles, net installs, the funnel silhouette, a step-by-step breakdown and the real trial cohort. It honors the app filter and period, except that 24h is shown as 7d: Apple's analytics run about two days behind, so a 24-hour funnel would show trials against zero impressions.

Stages

StageSource
ImpressionsApp Store Analytics Reports
Product page viewsApp Store Analytics Reports
DownloadsFirst-time downloads, Analytics Reports
OnboardingSDK onboarding signposts; only for apps that instrument onboarding
TrialsTrial and intro-offer starts, Subscription Event report
PaidIntro to paid conversions (including early upgrades), Subscription Event report

An app whose products have no free trial goes downloads to paid directly: when trials are 0 while downloads and paid are both non-zero, the Trials stage is dropped and Paid is measured against Downloads.

This is not a cohort funnel

Every stage is an independent, pre-aggregated Apple report. There is no user-level key to join them on, so RevenueHog cannot follow a person from an impression to a subscription. Each percentage is a ratio of two daily aggregates over the same window. Stages are not strictly nested (a download can happen with no product page view, for example a direct search install), so a later stage can exceed its predecessor. The trial to paid step spans a trial length. These ratios will not match App Store Connect's own conversion rate, whose method Apple does not document.

Formulas

conversion % (step) = stage count / previous stage count × 100   # 1 decimal; null on the first stage or a zero base
drop-off %          = 100 − conversion %                        # negative when a stage exceeds its predecessor
share of top %      = stage count / first stage count × 100     # null when the top is 0
net installs        = downloads − deletions

Freshness callout

STORE DATA reads Through Oct 24 · 2 days behind (amber when more than 4 days behind) or "Waiting on Apple". Apple publishes App Store analytics daily and two to three days behind live; that is Apple's schedule, not a sync delay. A newly connected app takes one to two days before its first report exists. The trial and paid stages come from Sales and Trends, which lag about one day, so they are fresher than the store stages.

Tiles and net installs

IMPRESSIONS, PAGE VIEWS and DOWNLOADS (first-time) for the period. NET INSTALLS ("downloads minus deletions") appears only once Apple's installation and deletion report has delivered for the scope, with paired daily bars: downloads muted, deletions in red. Days without a red bar are days Apple reported no deletions data, not zero-deletion days.

Silhouette

One bar per stage with a sheet flowing between bars. Toggle Log (default) or Linear. Linear bar length is the share of the top: truthful, but past stage two every bar is a sliver, since impressions can be thousands of times paid. Log keeps every stage visible but overstates the late ones, which is why each count and its share of the top sit beside the bars. Shares display as 100%, 4.2%, 0.35%, or <0.01%.

Steps

One row per step (Downloads → Trials) with the percentage kept, a bar of that width, and the share of the funnel top lost at this step. A stage that exceeds its predecessor shows 0 lost rather than a negative.

Cohort

COHORT / S2S appears when at least one trial started in the window on an app with server notifications wired. Unlike the step ratios, it follows each trial started in the window, by its original transaction ID, to its own outcome:

converted = cohort trials with a conversion at or after their start
churned   = cohort trials with a churn at or after their start
maturing  = trials − converted − churned
converted % = converted / trials × 100      # "No outcomes yet" when null

The line reads 12 of 40 trials converted · 20 maturing · 8 churned · median 7.0d to convert. Maturing trials have not decided yet and are not failures. Family-shared copies are excluded. The cohort only sees events from the day notifications were wired (or from a history import), so an older cohort is incomplete rather than bad.

Last updated on

On this page