Campaign analytics in Adapty Mail
Adapty Mail tracks every SES delivery event and every revenue event attributed to an email click. Metrics are exposed per variation row in two places:
- Flows page: Inline with each segment row in a trigger view, regardless of whether the row’s content is a campaign or an A/B test.
- A/B Tests page: For A/B tests only — this is where you compare variations side by side.
The metric set is identical in both views. There’s no standalone Analytics dashboard; analytics live next to the rows being measured.
What’s tracked per variation
Each variation row exposes the following raw counts:
- Sends: Emails dispatched to SES.
- Deliveries: SES-confirmed inbox deliveries.
- Bounces: SES-reported bounces. Hard and soft bounces aren’t distinguished — both count as one Bounce.
- Opens: Pixel loads. Apple Mail Privacy Protection pre-fetches images on iOS 15+ and inflates this count — rely on clicks and revenue for stronger signals.
- Clicks: Link clicks in the email body.
- Unsubs: Unsubscribes from the footer link or the
List-Unsubscribeheader. - Purchases: Attributed purchase events, counted uniquely per scheduled email. A recipient who makes multiple purchases from the same scheduled email counts once.
- Revenue: Sum of attributed revenue (USD) across subscription starts, renewals, and one-time purchases.
Derived rates
Each rate is computed from the raw counts. Denominators vary — pick the one that matches the funnel step you’re measuring.
| Rate | Formula |
|---|---|
| Del Rate | Deliveries / Sends |
| Bounce Rate | Bounces / Sends |
| Open/Send | Opens / Sends |
| Open/Del | Opens / Deliveries |
| Click/Send | Clicks / Sends |
| Click/Del | Clicks / Deliveries |
| Click/Open | Clicks / Opens |
| Purch/Send | Purchases / Sends |
| Purch/Del | Purchases / Deliveries |
| Purch/Open | Purchases / Opens |
| Purch/Click | Purchases / Clicks |
| Unsub/Send | Unsubs / Sends |
| Unsub/Del | Unsubs / Deliveries |
| Unsub/Open | Unsubs / Opens |
| Rev/Send | Revenue / Sends |
Revenue attribution
Revenue is attributed via last-click on a tracked link:
- When a recipient clicks any link in an email, Adapty Mail stores the
scheduled_email_idagainst that profile in a short-term store. - If a purchase event arrives afterward with no existing attribution, Adapty Mail back-fills the stored
scheduled_email_idonto the transaction — provided the purchase timestamp is after the click. - Purchases without a preceding tracked click stay unattributed.
The tracked parameter is scheduled_email_id. The checkout URL also carries the recipient’s identity via the {email} and {external_profile_id} placeholders so the web paywall can personalize the flow — that’s a separate mechanism from attribution. See Set up checkout.
Limitations
- No consolidated dashboard: Metrics are surfaced inline in the Flows editor and on the A/B Tests page — there’s no cross-project or cross-campaign rollup view.
- A/B Tests page hides campaign rows: Single-campaign flow rows are stored as internal A/B-test wrappers, but the A/B Tests page filters them out. To see their metrics, open the flow they’re attached to.
- No date filter: The counts are cumulative from the first SES event on the variation — you can’t narrow to “last 7 days” in the UI.
- No per-recipient drill-down: The analytics view doesn’t expose individual user email histories.
- No soft vs hard bounce distinction: Every bounce, temporary or permanent, collapses into a single Bounce count.
- Purchases count unique scheduled emails, not recipients: A recipient who matches multiple emails in the sequence can contribute more than once in aggregate across the variation.
- Eventual consistency, not real-time: Data is aggregated from ClickHouse event tables. Fresh events usually appear within minutes, but there’s no streaming guarantee.