Rheo CLI is live. Let your agents be your growth engine.

Learn more
Rheo flow canvas with onboarding screens connected in the visual editor
Product

ATT pre-prompt optimization: a testing framework for mobile apps

Structure tests for iOS App Tracking Transparency pre-prompts, timing, and copy so you improve opt-in without sacrificing onboarding conversion or trial starts.

iOS App Tracking Transparency (ATT) forced every growth team to relearn measurement. The system dialog is fixed; the pre-prompt screen before it is yours. That screen, its timing in onboarding, and what happens on deny vs allow drive opt-in rates and downstream campaign performance.

This post offers a testing framework for ATT pre-prompts: principles, variants to try, metrics, and how to run experiments in Rheo alongside RevenueCat paywalls and your MMP (AppsFlyer, Adjust, etc.).

ATT basics (what you control vs what you do not)

LayerWho controls it
System ATT dialog copy and buttonsApple
Pre-prompt screen copy, design, and timingYour app
When requestTrackingAuthorization is calledYour app (via Rheo OS permission step or host code)
Post-deny product experienceYour app

Apple expects pre-prompts to explain why you ask, without mimicking the system dialog or offering incentives for tracking. Rheo's builder warns when flows mix attribution-sensitive steps without guidance; treat that as a compliance nudge, not legal advice.

Why pre-prompt testing belongs in onboarding experiments

ATT is not independent of monetization:

  • Showing ATT before a paywall can reduce trial starts (friction and privacy salience).
  • Showing ATT after purchase may improve trials but delay attribution for paid campaigns.
  • Denied users may still convert organically but look worse in ROAS reports.

Testing ATT in isolation on a test build while production onboarding changes invalidates learnings. Include ATT position in full-flow experiments when possible.

Rheo flow canvas with screens connected in the visual editor

The framework: four dimensions

Structure tests across four dimensions. Change one dimension per variant when starting out.

Dimension 1: Timing in the funnel

PositionTrade-off
Early (after splash)Maximum attributed installs; highest funnel risk
After value (post preview or personalization)Better context; fewer starts see ATT
After trial / purchaseProtects conversion; hurts paid UA measurement
On second sessionMinimal first-session friction; delayed attribution

Document primary metric upfront: opt-in rate, trial starts, or CAC payback from MMP dashboards.

Dimension 2: Pre-prompt creative

Elements to test on the Rheo screen before the OS permission step:

  • Headline clarity: "Help us keep the app free" vs "Support relevant ads"
  • Length: One sentence vs three bullets
  • Visual: Illustration vs plain text
  • CTA on pre-prompt: Continue vs "Next" (system dialog follows)

Do not replicate Apple's dialog. Do not gate core features on tracking consent.

Dimension 3: Deny and allow branches

Wire OS permission outcomes in the flow graph:

OutcomeBranch behavior
AuthorizedContinue to next onboarding step or paywall
DeniedSame path vs reduced personalization vs explicit "you can change in Settings"

Denied users should still complete onboarding unless product policy says otherwise. Measure completion by ATT outcome to detect punitive branching.

Dimension 4: Coupling with other permissions

ATT plus push plus location in one session stacks friction. Test:

  • Staggered: One permission per session
  • Bundled pre-prompt explaining multiple asks (still separate system dialogs)
  • Paywall first: Monetize before any permission

Metric matrix

Track all of the following per experiment variant:

MetricSource
ATT opt-in rateOS outcome events in Rheo timeline
Flow completionRheo flow analytics
Trial startsRheo iap_purchase + RevenueCat
Paywall dismissRevenueCat surface_outcome
Installs attributed (delayed)MMP, with SKAN where applicable
If opt-in rises but trials fallInterpretation
YesTiming too early or pre-prompt scary
Opt-in flat, trials upTiming helped; keep variant
Both riseRare win; promote quickly

Suggested test sequence (12 weeks)

WeekTestVariants
1-2Timing baselineEarly vs after screen 2 value
3-4Pre-prompt copyShort vs bullet benefits
5-6Post-deny pathSame path vs settings education
7-8Paywall interactionPaywall before vs after ATT
9-10Second session ATTSession 1 skip vs show
11-12Winner validationHoldout 10% on old control

Adjust length to traffic. Low volume: run timing and paywall interaction as one combined experiment with fewer arms.

Implementation in Rheo

  1. Add an OS permission step for App Tracking Transparency on the canvas (enabled under App settings → Canvas controls if restricted).
  2. Place pre-prompt screen immediately before the permission step.
  3. Connect branches on grant vs deny.
  4. Publish variant flows and assign to a channel experiment.
  5. Filter analytics by experiment variant and compare opt-in from customer timelines.

Pair with AppsFlyer (or your MMP) via Rheo integrations for attribution context on decisions. Attribution is cached client-side (~24 hours) to avoid hammering the MMP.

iOS review and privacy

Align timing with Apple guidelines. Flows that branch on attribution for pricing or sensitive treatment may trigger review questions. Use builder validation messages as a pre-flight check.

Pre-prompt copy patterns (starting points)

Test legally reviewed copy for your app. Patterns that often test well:

Transparency:
"We use data to measure which ads bring people to the app and to improve your experience. On the next screen, you can choose whether to allow tracking."

Outcome-focused:
"Allowing tracking helps us show you more relevant offers and keep subscription prices lower."

Short:
"Tap Continue, then choose whether to allow tracking on the next screen."

Avoid: "Allow tracking to unlock features" (incentive). Avoid fake system dialogs.

SKAN and MMP reality check

Even perfect ATT opt-in does not restore pre-iOS 14 granularity. Pre-prompt tests optimize fraction of IDFA-bearing users, not perfect cohorts. Combine with:

  • SKAN campaign structure from your MMP
  • Broad vs narrow campaign evaluation windows
  • On-platform metrics (trial starts) as guardrails

Rheo does not replace SKAN modeling. It keeps in-app outcomes visible while you tune ATT.

Sample size and ethics

ATT opt-in is binary per user. Use standard proportion power calculators. Typical apps need thousands of starts per arm for a few-point lift detection.

Do not dark-pattern. Sustainable opt-in comes from timing and honest copy, not trick screens.

Troubleshooting

SymptomCheck
Opt-in 0% on TestFlightATT prompt may not show in some test builds
Different opt-in iOS versionsOS adoption mix in segment filters
MMP mismatch vs RheoEvent order and 24h attribution cache
Completion drop only on iOSATT position or pre-prompt load

Checklist before launch

  • Legal reviewed pre-prompt copy
  • Primary metric chosen (opt-in vs trials vs composite)
  • Variants differ on one dimension
  • Deny branch is non-punitive
  • Experiment end date set UTC
  • MMP dashboard aligned on date range
  • Post-test promote plan documented

Regional and demographic notes

ATT applies to iOS only, but onboarding tests often run on both platforms. Report:

Report sliceInclude
Executive summaryiOS opt-in + global trial starts
Product deep diveiOS ATT branch vs Android same funnel step
UA teamMMP opt-in cohorts by campaign

Android does not use ATT, but parallel permission tests (notifications, location) benefit from the same timing framework.

Advanced: coupling with AppsFlyer decisions

With Rheo + AppsFlyer enabled, decision nodes can branch on attribution context cached client-side. Example: show a shorter pre-prompt for users already attributed from a trusted campaign. Test carefully; over-personalization can confuse holdout analysis.

See Rheo + AppsFlyer for setup. Align ATT timing with AppsFlyer's iOS guidance.

Post-test playbook

OutcomeAction
Winner clearPromote flow version; update internal wiki
InconclusiveExtend 7-14 days
Opt-in up, trials downRevert timing; try copy-only variant
Trials up, opt-in downAccept if UA uses SKAN; else compromise timing

Schedule a holdout (5-10% on old control) only if compliance allows continuous assignment splits.

Long-term governance

Name ATT experiments att-timing-2026q3 in your experiment titles. Privacy and growth leads should co-sign pre-prompt copy changes. Re-test after major iOS releases (Apple occasionally adjusts ATT UX surrounding the dialog).

Store results in the same repo as onboarding experiments so institutional memory survives team changes.

Bring ATT into the same experiment as onboarding

The teams that win treat ATT as a funnel step, not a compliance checkbox. Model it in the same graph as your paywall, measure it with the same rigor, and ship improvements OTA when Apple and your lawyers agree. Combined with RevenueCat for trials and your MMP for campaigns, you get a complete picture: opt-in, completion, and revenue in one assignment.

Start for free