# Pixel Definitions: iOS Day-7 Subscription Promo Defined in: `iOS/PixelDefinitions/pixels/definitions/subscription.json5` Fired from: `SubscriptionPromoExistingUserCoordinator` Android equivalents: `m_privacy-pro_skipped_onboarding_promotion_*` (same modal, different audience) --- ## Pixels ### `m_privacy-pro_existing_user_promotion_impression` | Field | Value | |---|---| | Trigger | The day-7 promo half-sheet is shown to an existing user (7+ days since install) who has never seen any subscription offer | | Fired from | `SubscriptionPromoExistingUserCoordinator.markLaunchPromptPresented()` | | Frequency | Once per install (guarded by `subscriptionPromotionDialogShown`) | **Parameters** | Key | Type | Description | |---|---|---| | `appVersion` | string | App version (added by default) | | `ru` | boolean | Whether the user is a returning user (reinstall) | | `free_trial` | boolean | Whether the user is eligible for a free trial | **Suffixes:** `_ios`, `_phone` / `_tablet` --- ### `m_privacy-pro_existing_user_promotion_tap` | Field | Value | |---|---| | Trigger | User taps the CTA button ("Try It Free" or "Learn More") on the promo modal | | Fired from | `SubscriptionPromoExistingUserCoordinator.handleCTAAction()` | **Parameters** — same as impression: `appVersion`, `ru`, `free_trial` **Suffixes:** `_ios`, `_phone` / `_tablet` --- ### `m_privacy-pro_existing_user_promotion_dismiss` | Field | Value | |---|---| | Trigger | User dismisses the promo modal (taps close or swipes down) | | Fired from | `SubscriptionPromoExistingUserCoordinator.handleDismissAction()` | **Parameters** — same as impression: `appVersion`, `ru`, `free_trial` **Suffixes:** `_ios`, `_phone` / `_tablet` --- ## Funnel Origin When the user taps the CTA, the subscription flow is opened with origin `funnel_modal_ios__subscriptionnudge`. This origin flows through to two downstream pixels automatically: - `m_privacy-pro_offer_screen_impression` (param: `origin`) - `m_subscribe` (param: `origin`) — the subscription purchase success pixel Origin defined in: `iOS/DuckDuckGo/Subscription/SubscriptionFunnelOrigin.swift` Origin request subtask: https://app.asana.com/1/137249556945/task/1214800683792174 Android equivalent origin: `funnel_modal_android__subscriptionnudge` --- ## Relation to Existing Promo Pixels All three subscription promo half-sheets use the same parameter shape (`ru`, `free_trial`) to allow cross-audience comparison: | Pixel prefix | Audience | Origin | |---|---|---| | `m_privacy-pro_onboarding_promotion_*` | Users who see the promo during onboarding | `funnel_onboarding_ios` | | `m_privacy-pro_skipped_onboarding_promotion_*` | Reinstallers who skipped onboarding, 7+ days | `funnel_modal_ios__skippedonboardingupsell` | | `m_privacy-pro_existing_user_promotion_*` | Normal installers who never saw a subscription offer, 7+ days | `funnel_modal_ios__subscriptionnudge` |