Collect user emails for Adapty Mail
Adapty Mail needs a stable customer_user_id and an email for every user it delivers to. Wire both up in your app code before launching a campaign.
Collect user emails
Two values must reach Adapty per user: a stable customer_user_id that identifies the user, and the email itself. Identification has to come first — without it, Adapty has no profile to attach the email to.
-
Identify the user. Pass a stable ID — your backend user ID, Firebase UID, or similar — either by passing it as
customerUserIdto.activate()at SDK startup, or by callingAdapty.identify()later (for example, at login). Either way, the ID must be set before any paywall is shown.Platform guides: iOS, Android, React Native, Flutter, Unity, Kotlin Multiplatform, Capacitor.
-
Pass the email. As soon as the user provides their email, send it to Adapty via
updateProfileusing theemailparameter.Platform guides: iOS, Android, React Native, Flutter, Unity, Kotlin Multiplatform, Capacitor.
- Always pass a stable
customer_user_id, never an anonymous identifier. If a user uninstalls and reinstalls your app, Adapty uses this ID to link the reinstall to the existing profile and attribute purchases back to the correct user. - Get explicit user consent before collecting and sending emails to Adapty. You are responsible for compliance with GDPR, CAN-SPAM, and similar regulations in your target markets.
Verify your email coverage
After implementing collection, check coverage in Adapty:
- Go to Customers → Profiles.
- Filter by profiles that have an email set.
Target at least 30–50% email coverage among your active users before launching your first campaign. You don’t need to wait for 100% — launch as soon as you reach 30%. Users who provide their email later are automatically enrolled in active campaigns when they qualify.
Email collection strategies
Most apps don’t collect emails by default. Pick the approach that matches your app’s current state.
| Strategy | Best for | How it works |
|---|---|---|
| Existing authentication | Apps with any form of login | You already have the email — pass it to Adapty after the user authenticates. See the auth-method reference below for where to read it. |
| Email gate before the paywall | Apps without auth — health, wellness, astrology, photo editors | Add a single email input screen between onboarding and the paywall. Conversion typically runs 70–90% because users have already invested time. |
| Web paywall builder checkout | Minimal SDK work; email captured on web | The first screen of the web paywall builder collects the email and passes it to Adapty — useful for users who click a campaign before an in-app gate is live. |
| Onboarding step | Quiz-based onboarding (fitness, nutrition, education) | Place an email input 2–3 steps into onboarding. Frame it as value delivery (“We’ll email your personalized plan”) and avoid making the step skippable. |
| Server-side API import | Apps with an existing email list on another platform | Use the Update profile endpoint with email and external_profile_id to match records to existing profiles. |
Limitations
- Anonymous users: Users without a stable
customer_user_idcan’t receive campaigns. Identify them when they create an account or log in — from that point, any email they provide is matched to their Adapty profile. - Users without an email: Profiles with no email are excluded from campaign delivery and don’t appear in campaign analytics. As soon as they provide an email, they become eligible for future campaigns.