Profiles in Adapty Mail

A profile is one customer in your project. The Profiles page lists everyone Adapty Mail knows about and shows each person’s purchase outcome, email engagement, and full activity journey. Profiles arrive automatically: from emails the Adapty SDK collects, or from data you send through the Adapty Mail API.

To group profiles into reusable audiences for flows and A/B tests, see Segments.

How profiles get into Adapty Mail

Adapty Mail creates profiles automatically from two sources:

Adapty Mail links every email, click, and purchase to a profile by its stable external_profile_id. The Profiles page is read-only. You can view profiles and unsubscribe them, but you can’t create, edit, or delete them. The source app or the API owns that data.

The Profiles list

The list shows one row per profile, newest first. Use the search box to find a profile by email, profile ID, or external profile ID.

ColumnShows
ProfileThe customer’s email and the campaign that has sent them the most emails.
StatusThe profile’s purchase state. See Profile status.
CountryThe customer’s country.
Open rateOpened divided by sent across all emails. A dash means no emails were sent yet.
LTVLifetime value — total revenue from this profile across all sources.
JoinedWhen the profile first entered Adapty Mail.
Last activityHow recently the profile engaged with an email, such as a send, open, or click.

Joined is the date the profile first entered Adapty Mail, used as the “customer since” date. It is the ingest time, not the original signup date from your app.

Adapty Mail Profiles list with Status, Country, Open rate, LTV, and Joined columns

Profile status

The Status column shows the profile’s purchase state — where the customer stands with subscriptions and one-time purchases.

StatusMeaning
Never purchasedThe profile hasn’t bought anything.
PurchasedThe profile made a one-time purchase.
Active subscriberThe profile has an active subscription.
CancellingAuto-renew is off; access lasts until the current period ends.
Billing issueA renewal payment failed.
Grace periodPayment failed, but access continues during the store’s grace period.
ChurnedThe subscription expired and access ended.
RefundedA purchase was refunded.

Purchase status is separate from email subscription status. A profile can be an Active subscriber yet Unsubscribed from your emails, or Churned yet still Subscribed. The email status appears on the profile page and controls whether Adapty Mail can send to the profile.

Profile details

Click a profile to open its detail page. The header shows the email, country, platform, and “customer since” date. It also shows three status badges: the purchase status, the open rate, and whether the profile is Subscribed or Unsubscribed.

Five engagement metrics run across the top:

  • Sent: Emails sent to the profile.
  • Delivered: Emails the mailbox provider accepted.
  • Opened: Emails the profile opened.
  • Clicked: Emails where the profile clicked a link.
  • Revenue: Two figures — attributed revenue and lifetime value.

Attributed revenue is revenue driven by your emails: purchases the profile made after engaging with a campaign. Lifetime value (LTV) is the profile’s total revenue across all sources, whether or not email played a part. The header shows attributed revenue first, then LTV.

The Profile card lists the customer’s attributes:

  • Platform: The customer’s device platform, such as iOS or Android.
  • Country: The customer’s country.
  • Store country: The country of the customer’s App Store or Google Play account.
  • Gender: The customer’s gender, if known.
  • Age: The customer’s age, if a birthday was provided.
  • Profile ID: Adapty Mail’s internal identifier for the profile.
  • External ID: The external_profile_id from your app or backend.
  • Custom attributes: Any key-value pairs you sent with the profile.
Profile detail page showing engagement metrics, the Profile card, and the Purchase state card

Purchase state

The Purchase state card shows the profile’s revenue and purchase history. Lifetime value appears at the top, followed by up to two sections:

  • Subscription: Price, store, start date, renewal or expiry date, and product ID for the profile’s subscription.
  • One-time purchase: Price, store, purchase date, and product ID for the most recent one-time purchase.

If the profile hasn’t bought anything, the card shows No purchase yet.

The Segments card lists every segment the profile currently matches, or Not in any segment if none apply. Membership is evaluated live, so it always reflects the latest profile data. See Segments for how to build them.

The activity journey

The Journey section is a timeline of everything that happened to the profile. It starts with Profile created and then interleaves two kinds of events:

  • Email events: Each email sent to the profile, with its delivery, open, and click activity. Expand an email to see the links the profile clicked and any purchase the email drove.
  • Transaction events: Subscription and one-time purchase milestones, such as starts, renewals, cancellations, billing issues, expirations, and refunds.

Transaction events map to these journey labels:

event_typeJourney label
subscription_startedSubscription started
subscription_renewedSubscription renewed
subscription_renewal_cancelledRenewal cancelled
subscription_renewal_reactivatedRenewal resumed
billing_issue_detectedBilling issue
entered_grace_periodEntered grace period
subscription_expiredSubscription expired
subscription_refundedSubscription refunded
non_subscription_purchaseOne-time purchase
non_subscription_purchase_refundedPurchase refunded

These events reach Adapty Mail automatically through the Adapty SDK, or you can send them yourself through the API. See Send transaction events for the event reference.

Profile Journey timeline showing Profile created followed by subscription transaction events

Unsubscribe a profile

To stop sending emails to a profile, open its page, click , and select Unsubscribe. Adapty Mail marks the profile as unsubscribed and adds it to your suppression list, so campaigns and flows skip it.

The action is idempotent: a profile that is already unsubscribed stays unsubscribed. For the full picture of suppression and how profiles unsubscribe themselves, see Unsubscribe and suppression.

Profile header with the actions menu open and the Unsubscribe option