---
title: "Collect user emails for Adapty Mail"
description: "Pass user emails and stable identifiers to Adapty so campaigns can reach your users."
---

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.

1. **Identify the user.** Pass a stable ID — your backend user ID, Firebase UID, or similar — either by passing it as `customerUserId` to `.activate()` at SDK startup, or by calling `Adapty.identify()` later (for example, at login). Either way, the ID must be set before any paywall is shown.

    Platform guides: [iOS](identifying-users), [Android](android-identifying-users), [React Native](react-native-identifying-users), [Flutter](flutter-identifying-users), [Unity](unity-identifying-users), [Kotlin Multiplatform](kmp-identifying-users), [Capacitor](capacitor-identifying-users).

2. **Pass the email.** As soon as the user provides their email, send it to Adapty via `updateProfile` using the `email` parameter.

    Platform guides: [iOS](setting-user-attributes), [Android](android-setting-user-attributes), [React Native](react-native-setting-user-attributes), [Flutter](flutter-setting-user-attributes), [Unity](unity-setting-user-attributes), [Kotlin Multiplatform](kmp-setting-user-attributes), [Capacitor](capacitor-setting-user-attributes).

:::important
- 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.
:::

<Details>
<summary>Verify your email coverage</summary>

After implementing collection, check coverage in Adapty:

1. Go to **Customers → Profiles**.
2. 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.

</Details>

## 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](api-adapty/operations/updateProfile) endpoint with `email` and `external_profile_id` to match records to existing profiles. |

## Limitations

- **Anonymous users**: Users without a stable `customer_user_id` can'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.