[go: up one dir, main page]

Skip to main content

Profiles/CRM

Profiles is a CRM for your users. With Profiles, you can:

  1. Find specific users by profile ID, customer user ID, email, or transaction ID.
  2. Explore the full payment path of a user including billing issues, grace periods, and other events.
  3. Analyze user's properties such as subscription state, total revenue/proceeds, and more.
  4. Grant the user a subscription.

Subscription state

In a full table of subscribers, you can filter, sort, and find users. The state describes the user state in terms of a subscription and can be:

User stateDescription
SubscribedThe user has an active subscription with auto-renewal enabled.
Auto-renew offThe user turned off auto-renewal but still has access to premium features until the end of the subscription period.
Subscription cancelledThe user canceled their subscription, and it has fully ended.
Billing issueThe user couldn’t be charged due to a billing issue, either after their subscription or trial expired.
Grace periodThe user is currently in a grace period due to a billing issue that occurred when attempting to charge them after their subscription or trial expired.
Active trialThe user has an active subscription that is currently in its trial period.
Trial cancelledThe user canceled the trial and does not have an active subscription.
Never subscribedThe user has never subscribed or started a trial and remains a freemium user.

User attributes

You can send any properties that you want for the user.

By default, Adapty sets:

PropertyDescription
Customer user IDAn identifier of your end user in your system.
Adapty IDInternal Adapty identifier of your end user, called Profile ID.
IDFAThe Identifier for Advertisers, assigned by Apple to a user's device.
CountryCountry of your end user.
OSThe operating system used by the end user.
DeviceThe end-user-visible device model name.
Install dateThe date when the user was first recorded in Adapty:
  • The date the user was created.
  • If the user installed your app before you integrated Adapty, it reflects the date of their first transaction.
  • If applicable, the date provided during a historical data import.
Created atThe date the user was created.

For a better understanding of your user, we suggest sending at least your internal user ID or user email. This will help you to find a user.

After installing SDK, Adapty automatically collects user events from the payment queue and displays them in a user profile.

Custom attributes

You can see custom attributes that were set either from SDK or manually assign them to the user using the Add attribute button in the Attributes section on the profile page.

Grant a subscription

In a profile, you can find an active subscription. At any time you can prolong the user's subscription or grant lifetime access.

It's most useful for users without an active subscription so you can grant the individual user or a group of users premium features for some time. Please note that adjusting the subscription date for active subscriptions will not impact the ongoing payments.

note

Expires at must be a date in the future and can't be decreased ones set.

Profile record creation

Adapty creates an internal profile ID for every user to track their purchases, events, and subscription state. You can optionally set a Customer User ID to identify users in your own system.

Without a Customer User ID, a new profile is created each time:

  • A user launches your app for the first time after installation
  • A user reinstalls the app
  • A user logs out of your app

With a Customer User ID, profile behavior depends on when you identify:

  • Identify during SDK activation: Adapty uses the existing profile with that customer user ID (for returning users) or creates a new profile (for first-time users).
  • Identify after SDK activation: Adapty creates an anonymous profile on activation. When you later identify the user, it links that customer user ID to the anonymous profile (for first-time users) or switches to the existing profile with that ID (for returning users).

Using a customer user ID gives you several advantages:

  1. You can track a user across app reinstalls and multiple devices, making it easier to maintain a complete user history.
  2. You can find users by their customer user ID in the Profiles section and view their transactions and events.
  3. You can use the customer user ID in the server-side API.
  4. The customer user ID will be sent to all integrations.

Parent and inheritor profiles

When multiple profiles are connected to the same subscription (through the same Apple/Google ID), Adapty tracks them using a parent-inheritor relationship. This happens when a user reinstalls the app without identifying, or when different identified users restore purchases on the same device.

The parent profile is the one that made the purchase—not necessarily the first profile created. For example, if you install the app, don't buy anything, then reinstall and purchase a subscription, your second profile becomes the parent (it made the purchase), while your first profile becomes the inheritor (it gains access through sharing).

How events are distributed:

  • Transactional events (purchases, renewals, cancellations, billing issues, grace periods, refunds): Only appear on the parent profile that made the purchase. All subscription renewals and updates continue appearing on this profile.
  • access_level_updated events: Appear on both parent and inheritor profiles whenever the access level state changes, ensuring all connected profiles stay updated about their current access status.

This means the parent profile (the one that purchased) shows the complete transaction history, while inheritor profiles show only their access level updates along with a link to the parent profile in the Access level section.

The Sharing paid access between user accounts setting controls which profiles receive access level updates:

  • Enabled (default): Both parent and inheritor profiles receive access_level_updated events as long as access remains shared
  • Transfer access to new user: When access is transferred, the new owner becomes the active profile and receives access_level_updated events, while the previous owner stops receiving them
  • Disabled: Only the parent profile maintains the access level. Inheritor profiles don't receive access unless explicitly granted

Event timestamps with future dates

Why do events show future timestamps in profiles and integrations? Event timestamps may appear with future dates in profiles and integrations because Apple sends renewal events in advance.

  • Why it happens: Apple does this to ensure subscriptions renew automatically before expiring, preventing user service interruptions. For more details, check Apple’s Developer Forum: [Server Notifications for Subscriptions](Server Notifications for Subscriptions).
  • Event types affected: Typically, this applies to subscription renewals and trial-to-paid conversions. These events may have future timestamps because Apple notifies systems about them ahead of time. All other events—like additional in-app purchases or subscription plan changes—are recorded with their actual timestamps since they cannot be predicted in advance.
  • Impact on Analytics and Event Feed: These events will only appear in Analytics and the Event Feed once their timestamps have passed. Events with future timestamps are not shown in either section.
  • Impact on Integrations: Adapty sends events to integrations as soon as they are received. If an event has a future timestamp, it will be shared with your integration exactly as received.

Sharing access levels between profiles

When a Customer User ID tries to restore transactions or extend a subscription that is already associated with a different identified Customer User ID, you can control how Adapty responds by adjusting the Sharing paid access between user accounts dropdown in the Adapty Dashboard -> App settings -> General tab:

Enabled (default)

Identified users (those with a Customer User ID) can share the same access level provided by Adapty if their device is signed in to the same Apple/Google ID. This is useful when a user reinstalls the app and logs in with a different email — they’ll still have access to their previous purchase. With this option, multiple identified users can share the same access level.

Even though the access level is shared, all past and future transactions are logged as events in the original Customer User ID to maintain consistent analytics and keep a complete transaction history — including trial periods, subscription purchases, renewals, and more, linked to the same profile.

Transfer access to new user

Identified users can keep accessing the access level provided by Adapty, even if they log in with a different Customer User ID or reinstall the app, as long as the device is signed in to the same Apple/Google ID.

Unlike the previous option, Adapty transfers the purchase between identified users. This ensures that the purchased content is available, but only one user can have access at a time. For example, if UserA buys a subscription and UserB logs in on the same device and restores transactions, UserB will gain access to the subscription, and it will be revoked from UserA.

If one of the users (either the new or the old one) is not identified, the access level will still be shared between those profiles in Adapty.

Although the access level is transferred, all past and future transactions are logged as events in the original Customer User ID to maintain consistent analytics and keep a complete transaction history — including trial periods, subscription purchases, renewals, and more, linked to the same profile.

After switching to Transfer access to new user, access levels won’t be transferred between profiles immediately. The transfer process for each specific access level is triggered only when Adapty receives an event from the store, such as subscription renewal, restore, or when validating a transaction.

Disabled

The first identified user profile to get an access level will retain it forever. This is the best option if your business logic requires that purchases be tied to a single Customer User ID.

Note that access levels are still shared between anonymous users.

You can "untie" a purchase by deleting the owner’s user profile. After deletion, the access level becomes available to the first user profile that claims it, whether anonymous or identified.

Disabling sharing only affects new users. Subscriptions already shared between users will continue to be shared even after this option is disabled.

warning

Apple and Google require in-app purchases to be shared or transferred between users because they rely on the Apple/Google ID to associate the purchase with. Without sharing, restoring purchases might not work upon subsequent reinstalls.

Disabling sharing may prevent users from regaining access after logging in.

We recommend disabling sharing only if your users are required to log in before they make a purchase. Otherwise, an identified user could buy a subscription, log into another account, and lose access permanently.

Which setting should I choose?

My app...Option to choose
Does not have a login system and only uses Adapty’s anonymous profile IDs.Use the default option, as access levels are always shared between anonymous profile IDs for all three options.
Has an optional login system and allows customers to make purchases before creating an account.Choose Transfer access to new user to ensure that customers who purchase without an account can still restore their transactions later.
Requires customers to create an account before purchasing but allows purchases to be linked to multiple Customer User IDs.Choose Transfer access to new user to ensure that only one Customer User ID has access at a time, while still allowing users to log in with a different Customer User ID without losing their paid access.
Requires customers to create an account before purchasing, with strict rules that tie purchases to a single Customer User ID.Choose Disabled to ensure that transactions are never transferred between accounts.

Access sharing history

When access levels are shared or transferred, you might want to know who granted access to the current user or who the current user shared their access with. To find out, just open the user’s Profile and click the link to view the connected profile.