[2026-07-09] eagle: work/projects/ios-subscription-day7-promo-pixels.md

This commit is contained in:
Alexey Martemyanov
2026-07-09 16:26:43 +06:00
parent 76d36033b6
commit 1589a4cc3a
@@ -6,7 +6,7 @@
- **Project:** [iOS: Show subscription half-sheet promo to new installers who don't see it during onboarding](https://app.asana.com/1/137249556945/project/1202406491309510/task/1214798984829406)
- **Android counterpart:** [Grow active subscriptions by increasing paywall impressions with a day 7 promo half-sheet](https://app.asana.com/1/137249556945/project/72649045549333/task/1210994036696114) — the iOS implementation follows the same approach and target audience as Android
- **Origin request:** [Request origin for iOS subscription promo half-sheet entry point](https://app.asana.com/1/137249556945/task/1214800683792174) — origin value `funnel_modal_ios__subscriptionnudge` (Android equivalent: `funnel_modal_android__subscriptionnudge`)
- **Origin request:** [Request origin for iOS subscription promo half-sheet entry point](https://app.asana.com/1/137249556945/task/1214800683792174) — origin value `funnel_modal_ios__subscriptionnudge` (Android equivalent: `funnel_newusermodal_android`)
- We are adding a new half-sheet modal for existing users (7+ days since install) who have never seen any subscription offer. The modal reuses the pre-existing `SubscriptionPromoLaunchView` UI.
- Existing subscription promo pixels already cover related audiences:
- `m_privacy-pro_onboarding_promotion_impression/tap/dismiss` — users who see the promo during onboarding
@@ -76,6 +76,9 @@
- Pixel definitions are committed to `iOS/PixelDefinitions/pixels/definitions/subscription.json5`.
- These pixels are structurally identical to `m_privacy-pro_skipped_onboarding_promotion_*` (same parameters, same suffixes) — no new parameter types are introduced.
- Android equivalent pixels: the Android implementation fires analogous `m_privacy-pro_skipped_onboarding_promotion_*` pixels (Android reused the existing reinstaller promo pixel names for the day-7 promo since it shipped first).
- Android equivalent pixels: Android uses a **single shared pixel** (`AppPixelName.ONBOARDING_DAX_CTA_SHOWN`, ctaId `DAX_INTRO_PRIVACY_PRO`) for both the reinstaller promo and the day-7 promo — the two audiences are distinguished solely by the `origin` field:
- Reinstaller/skipped onboarding: `origin = "funnel_skippedonboarding_android"`
- Day-7 existing users: `origin = "funnel_newusermodal_android"`
iOS takes a more granular approach with separate pixel names per audience (`m_privacy-pro_skipped_onboarding_promotion_*` vs `m_privacy-pro_existing_user_promotion_*`), which allows direct per-audience funnel analysis without filtering by origin. Source: [Android PR #8369](https://github.com/duckduckgo/Android/pull/8369), `CtaViewModel.kt`.
- Origin `funnel_modal_ios__subscriptionnudge` needs formal approval via the [Origin Proposal form](https://form.asana.com/?k=Wy3aY17vglr2bihpUHoyBA&d=137249556945) — tracked in the origin request subtask above.
- Privacy triage is required for the new pixels — see `ios-subscription-day7-promo-privacy-triage.md`.