Madar AI
← Back to blog
Technical

How to read your AppsFlyer LTV vs predicted LTV gap in MENA

AppsFlyer's predicted LTV model is calibrated against a global behavioural baseline. In MENA the ATT opt-in is below that baseline and SKAN coverage is patchier, which makes the predicted-vs-actual gap behave differently than the docs suggest. When to trust pLTV, when to override with cohort-based modelling, and how to do it.

How to read your AppsFlyer LTV vs predicted LTV gap in MENA

AppsFlyer’s predicted LTV is one of the most-used and least-questioned numbers in the subscription growth dashboard. The team optimises Meta and Google bid strategies against it. The board pack quotes it as forward-looking revenue. The growth lead trusts it because AppsFlyer surfaces it with confidence intervals attached.

In MENA that trust is misplaced, in specific and predictable ways. The pLTV model is calibrated against global behavioural data — early-window conversion patterns, retention curve shapes, payment success rates — that look meaningfully different in the markets MENA founders actually serve. The gap between AppsFlyer’s predicted LTV and the actual LTV you eventually realise is not random noise. It is patterned, and the patterns are knowable.

Here is what those patterns are, when the AppsFlyer number can be trusted, and how to override it when it cannot.

How pLTV is calculated (the short version)

AppsFlyer’s predicted LTV combines three signals: the user’s behaviour in the first 24-72 hours after install (sessions, key events, in-app purchase events, subscription starts), a cohort-similarity match against historical users who exhibited similar early-window behaviour, and a curve-fit against the eventual LTV those historical cohorts actually realised.

The model is well-calibrated when:

  • The early-window signal is rich (high ATT opt-in rate, complete SKAN postbacks, deterministic deep-link attribution).
  • The historical cohort it matches against is large and behaviourally similar to your user base.
  • The downstream payment funnel converts at rates similar to the historical baseline.

In most US and Western European markets these three conditions hold reasonably well. The model has been trained on enough of that data that the pLTV number it returns is genuinely useful for bid optimisation and forecasting.

In MENA all three conditions are weakened simultaneously.

Why MENA breaks the pLTV calibration

ATT opt-in is structurally lower. Industry-wide iOS ATT opt-in settled around 25% globally; in KSA and UAE the figure is materially lower. The early-window behavioural signal — the input the pLTV model feeds on — is thinner per install. The model is forced to lean more heavily on cohort similarity, which itself is degraded.

SKAN coverage is patchier. Apple’s SKAN postbacks fire on a delay and can be dropped at low-volume thresholds. In MENA the iOS share is high (Gulf 55-65%), which makes the SKAN gap more consequential to the input signal. Where the global pLTV model has full deterministic data for most users, the MENA version operates on a substantially noisier input.

Historical cohort match is weaker. AppsFlyer’s historical training base for MENA-specific subscription apps is smaller than for US apps in the same vertical. When the model looks for “users behaviourally similar to this one,” it finds fewer matches in-region and falls back to global cohort patterns that don’t reflect MENA-specific retention shapes.

Payment funnel conversion deviates. The historical baseline AppsFlyer’s curve-fit projects against assumes trial-to-paid conversion rates and renewal success rates near US norms. In MENA the conversion rates trend lower (PPP-driven price sensitivity in Egypt, alternative-payment-rail friction in KSA) and the renewal success rates trend lower (Iyzico decline rates, Mada routing issues — see the post on three churn rates for the full picture). The model that expected $9.99/month at a 78% D30 renewal rate is projecting against the wrong baseline.

How the gap presents in practice

Across MENA subscription audits, the AppsFlyer pLTV vs actual LTV gap tends to show two patterns:

Pattern A: pLTV overstates by 15-40%. This is the more common direction. The model assumes the trial-to-paid conversion and renewal rates of the global baseline; the actual MENA realisation comes in below. The team optimises Meta bids against the inflated pLTV, hits the target on paper, and three months later notices the actual realised revenue from those cohorts is meaningfully below what the dashboard projected.

Pattern B: pLTV understates for Ramadan-acquired cohorts. Users acquired during Ramadan show weak early-window engagement signals (the inverted-hour engagement, the trial-decision deferral). The pLTV model reads this as “low-value users” and projects a depressed LTV. Six months later the same cohort has actually retained well (after the Eid welcome and the post-Ramadan re-engagement) and their realised LTV is meaningfully above what was projected. The team that paused acquisition based on the depressed pLTV missed the cheapest acquisition window of the year.

The fact that both directions exist is what makes this hard. A single global correction factor will not fix it.

When to trust pLTV

Despite the patterns above, AppsFlyer’s pLTV is still useful in MENA in three specific situations:

  1. Smooth, non-seasonal months for mature apps. If you have 6+ months of history, no major pricing changes, no Ramadan or Eid overlap in the projection window, and a cohort size of 1,000+ per geo, pLTV is usually within 10-15% of the actual figure that eventually realises.
  2. Relative comparisons between campaigns. Even when the absolute pLTV number is off, the relative pLTV between campaigns is usually directionally right. Campaign A’s pLTV being 1.4x Campaign B’s pLTV usually does mean Campaign A is the better cohort, even if both absolute numbers are inflated.
  3. Android-heavy markets. Egypt’s Android share is much higher than the Gulf’s. Where iOS makes up less than 30% of installs, the SKAN and ATT issues bite less, and pLTV calibration is closer to global norms.

When to override with cohort-based modelling

In every other situation — Ramadan/Eid windows, recently-changed pricing, small cohorts, KSA/UAE iOS-heavy mixes, paywall A/B test windows — the pLTV number is worth less than a cohort-based model you build yourself from your own retention curve.

The simplest version of that model:

  1. For each historical cohort you have at least 90 days of data on, calculate the realised D7, D30, D60, D90 retention as a percentage of D0 paid subscribers.
  2. Apply those retention percentages to your current ARPU to project the LTV per paid subscriber from each cohort.
  3. Compare that against AppsFlyer’s pLTV for the same cohort. The gap is your override factor for that geo + season combination.
  4. Apply the override factor to AppsFlyer’s pLTV for any future cohort acquired in similar conditions.

This is not sophisticated modelling. It is one cohort-level multiplier per geo per season window. It outperforms AppsFlyer’s pLTV in MENA because it is built from your data, not a global behavioural baseline that doesn’t apply.

A worked example

Numbers chosen for illustration, not from a specific account:

  • AppsFlyer pLTV for your March KSA Snapchat cohort: $42
  • Cohort size: 800 paid trial starts
  • Actual D90 paid-subscriber retention from your last comparable cohort (Feb KSA Snapchat): 64% (vs global baseline assumption of 78%)
  • Override factor: 64 / 78 = 0.82
  • Adjusted pLTV: $42 × 0.82 = $34.50

If you optimise Snapchat bids against $42 you over-pay. If you optimise against $34.50 you bid closer to the true unit economics. The dashboard says $42, the reality is closer to $34.50, and the gap is not random — it’s structural.

How Madar handles this

Madar AI runs this cohort-level override automatically: it connects to AppsFlyer, RevenueCat, and your subscription source-of-truth, calculates your realised LTV per cohort per geo per season, and surfaces the per-geo override factor alongside AppsFlyer’s pLTV instead of replacing it. You see both numbers, the gap between them, and the confidence interval on the override.

If you want to see what your specific account’s pLTV gap looks like, the live demo runs this calculation as part of the first audit.