Skip to main content

Audiences

Cohort, save, and export customer audiences

AIAsk AIChatGPTClaude

RevenueCat Audiences allow you to cohort, save, and export groups of customers based on interactions with your app and purchase behavior.

Audiences are segments of your customers inside RevenueCat. They can include both paying and non-paying users. Some audiences are created automatically for every project (see Default audiences below), and you can also create custom audiences with your own filter logic.

๐Ÿ“˜Sandbox Customers

The Customers dashboard tab doesn't support toggling the 'View sandbox data' switch as there is no concept of a sandbox customer in RevenueCat, only sandbox transactions.

To view customers who have made sandbox transactions you can use the default Sandbox audience or apply the Has made sandbox purchase filter to an audience.

Find an Individual Customerโ€‹

To find an individual customer, use the search bar or the hotkey (โŒ˜K on Mac and iPad, Ctrl+K on other devices) to search by an exact match of their App User ID, Transaction ID, Email Attribute, or Order ID (iOS only).

Looking up customers is real-time. They will be searchable here as soon as a customer exists in RevenueCat.

Find a customer using the global search

Find a customer results in the global search dialog

iOS Order IDโ€‹

To find a customer via Order ID, you can follow our guide on setting up In-App Purchase Keys to unlock this feature. The transaction must show as completed in the Apple Purchase History to be considered a valid Order ID. Note that Transaction ID refers to the identifier in Google Play console and order emails of GPA.1234.1223โ€“, and for Stripe si_abcefg, whereas Order ID refers to the identifier from Apple's order emails.

โš ๏ธSandbox transaction search

Customer lookup by Transaction ID and Order ID works for production purchases only.

Viewing an audienceโ€‹

Choose a projectโ€‹

Audiences are scoped to the project you have selected in the dashboard.

Choose a project

Default audiencesโ€‹

Default audiences

RevenueCat creates default audiences for every project. Default audiences give you insight into customers with subscription, non-subscription, or sandbox purchase activity.

Default audienceDescription
All customersA live preview of every customer in the project. Use this as the starting point to filter customers without saving an audience.
Active subscriptionAny customer with a production subscription or trial status that has not expired, including cancelled, intro period, grace period, and billing issue.
SandboxAny customer with a sandbox subscription or non-subscription purchase.
Non-subscriptionAny customer with a production non-subscription purchase.
ExpiredAny customer whose production subscription or trial has expired and who does not also have another active production subscription or trial.
๐Ÿ“˜Granted Entitlements alone are not considered 'Active'

If a customer only has a Granted Entitlement, they are not counted in the Active subscription default audience.

Custom audiencesโ€‹

In addition to default audiences, you can create new custom audiences with the audience builder. Custom audiences are saved filter definitions that appear in the Audiences sidebar.

Custom audiences

๐Ÿ“˜Custom audiences are shared across collaborators

Any custom audiences you create will also be visible to any project collaborators with Read or Admin privileges.

Creating a custom audienceโ€‹

To create a custom audience:

  1. Open Audiences.
  2. Open All customers or click New audience.
  3. Click Filter and add one or more audience conditions.
  4. Use Add condition to narrow the current group.
  5. Use Add group to add another set of matching rules.
  6. Click Save audience, then name the audience.

Saved custom audiences can be reopened, edited, and exported. Updating the filters changes which customers match the audience.

Overview statsโ€‹

For each audience, RevenueCat computes overview stats for the cohort of customers.

Overview stats

MetricDescription
CustomersThe total number of customers in the audience.
Active TrialsThe total number of active trials. This includes trials which are cancelled, or in their grace period, and have not yet expired.
Active SubscriptionsThe total number of active subscriptions. This includes subscriptions which are cancelled, or in their grace period, and have not yet expired.
Total RevenueThe total revenue (USD) that the audience has generated, minus refunds.
๐Ÿ“˜Active Subscribers vs. Active Subscriptions

Active "subscribers" may be lower than your count of all active "subscriptions" (e.g. in Overview or Charts) if some customers have multiple active subscriptions.

Audience dataโ€‹

For each audience, RevenueCat displays a live preview of matching customers in the dashboard. Audience stats and the customer preview update in real time as you add, remove, or change filters.

The stats cards show Customers, Active Trials, Active Subscriptions, and Total Revenue for the current filter set. You can view these totals on All customers without saving an audience.

Audience customers table

The preview table shows a sample of matching customers. If the audience has more customers than shown in the preview, use Export all to download all matches.

The dashboard table includes:

ColumnDescription
CustomerApp User ID or email, with country
Subscription StatusCurrent subscription status, such as Active, Trialing, In Grace Period, or Expired. See Subscription status filter below.
Auto-Renewal StatusWhether the customer's subscription is set to renew or cancel. Blank if not applicable.
SpentTotal revenue from the customer
Latest PurchaseMost recently purchased product identifier

Additional columns are available when exporting data.

Filtersโ€‹

Filters allow you to choose which customers appear in your audience. Within a filter group, conditions are applied as AND filters. When you add another group, customers can match the first group OR the next group.

For example, you can create an audience for customers who are active subscribers on iOS, or active subscribers on Android, by creating one group for each platform.

Audience filters

See the table below for all filters you can apply to your audiences. The Operators column lists the operator values accepted by the audience builder API.

FilterTypeOperatorsDescription
AdMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe $ad Attribute for the customer.
Ad groupMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe $adGroup Attribute for the customer.
All purchased product identifiersStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyA comma-separated list of all product identifiers the customer has purchased.
App IDStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe ID of the app the customer was last seen using.
App nameStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe name of the app the customer was last seen using.
App user IDStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe customer's user identifier in RevenueCat.
App versionStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe version of the app that the customer was last seen using.
Auto-renewal statusBoolis, isNotWhether the customer's subscription is set to renew (true) or cancel (false).
CampaignMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe $campaign Attribute for the customer.
CreativeMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe $creative Attribute for the customer.
Currently trialingBoolis, isNotWhether the customer is currently in a free trial (true or false).
EmailStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe $email Attribute for the customer.
First purchase dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe date of the customer's first transaction, including free trials.
First seenDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe date the customer was first seen by RevenueCat.
GPS ad IDStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe $gpsAdId Attribute for the customer.
Has been granted entitlement via RCBoolis, isNotWhether the customer's latest transaction is a RevenueCat Granted Entitlement.
Has made non-subscription purchaseBoolis, isNotWhether the customer has made any non-subscription purchases (true or false).
Has made sandbox purchaseBoolis, isNotWhether the customer has made any sandbox purchases (true or false).
IDFAStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe $idfa Attribute for the customer.
IDFVStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe $idfv Attribute for the customer.
KeywordMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe $keyword Attribute for the customer.
Last seenDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe date the customer was last seen by RevenueCat.
Last seen countryMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe country where the customer was last seen, determined by IP address.
Latest entitlementsStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe customer's most recently unlocked Entitlement identifiers.
Latest expiration dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe latest expiration date of the customer's Entitlement.
Latest offerStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe identifier of the latest offer the customer used to make a purchase, if applicable.
Latest offer typeMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe type of the latest offer the customer used to make a purchase, if applicable.
Latest ownership statusMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe ownership type of the customer's latest purchase, used to distinguish family sharing purchases.
Latest productMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe customer's latest purchased product identifier.
Latest purchased offeringStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe offering that the customer's latest purchase was made from.
Latest storeMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe latest store the customer purchased from.
Latest store countryMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe latest store country that the customer purchased from.
LocaleStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe customer's last seen locale.
Media sourceMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe $mediaSource Attribute for the customer.
Most recent cancellation dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe date the customer unsubscribed from their subscription. Will be set back to null if the customer later resubscribes.
Most recent purchase dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe customer's latest transaction date.
Most recent renewal dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe customer's latest renewal date. This could be the same as the most recent purchase date.
Most recent trial cancellation dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe date the customer unsubscribed from their free trial. Will be set back to null if the customer later resubscribes.
Original app user IDStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe customer's original user identifier in RevenueCat.
Phone numberStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe $phoneNumber Attribute for the customer.
PlatformMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe platform that the customer was last seen using.
Platform versionStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe version of the platform that the customer was last seen using.
Price experiment IDMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe unique ID of the experiment that the customer was enrolled in, if applicable.
Price experiment variantMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe variant in the experiment that the customer was enrolled in, if applicable.
Project IDStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe ID of the project in RevenueCat.
Project nameStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe name of the project in RevenueCat.
SDK versionStringis, isNot, contains, doesNotContain, isEmpty, isNotEmptyThe RevenueCat SDK version being used in the customer's last seen app version.
Store countryMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe customer's latest storefront.
Subscription statusMulti Selectis, isNot, isAnyOf, isNotAnyOf, isEmpty, isNotEmptyThe customer's current subscription status.
Total number of renewalsNumberequal, notEqual, greaterThanOrEqual, lessThanOrEqual, greaterThan, lessThan, isEmpty, isNotEmptyThe total number of renewals the customer has had. A trial conversion is considered a renewal.
Total spentNumberequal, notEqual, greaterThanOrEqual, lessThanOrEqual, greaterThan, lessThan, isEmpty, isNotEmptyThe total revenue spent by the customer.
Trial end dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe date the customer's free trial expires.
Trial start dateDatebefore, beforeOrOn, on, after, afterOrOn, within, between, notBetween, isEmpty, isNotEmptyThe date the customer started their free trial.
๐Ÿ“˜Operator value formats
  • Bool filters use true or false.
  • Date filters use ISO dates (YYYY-MM-DD) for absolute operators. within uses a relative duration ({"value": 30, "unit": "days"}). between and notBetween use {"from": "YYYY-MM-DD", "to": "YYYY-MM-DD"}.
  • Number filters use numeric values.
๐Ÿ“˜Date filters are start of day

Selecting any date filters will apply to the start of the day. For example, 2021-01-01 will be 2021-01-01T00:00:00 under the hood.

๐Ÿ“˜Relative date filters

Date filters such as Last seen, First seen, First purchase date, Most recent purchase date, Most recent renewal date, Latest expiration date, Trial start date, Trial end date, Most recent cancellation date, and Most recent trial cancellation date support relative ranges, such as customers seen within the last 30 days. Relative date filters are evaluated when the audience is previewed or exported.

Subscription status filterโ€‹

The Subscription status filter provides these options:

  • Active: The customer has an active paid subscription.
  • Trialing: The customer is in a free trial period.
  • In grace period: The customer's subscription is in a grace period after a billing issue.
  • In billing retry: The customer's subscription is in a billing retry period.
  • Paused: The customer's subscription is paused.
  • Expired: The customer's subscription has ended and is no longer active.
  • Incomplete: The customer's subscription setup is incomplete.
  • Unknown: The customer's subscription status could not be determined.

Platform filterโ€‹

The Platform filter provides these options:

  • iOS
  • Android
  • Web
  • macOS
  • Amazon
  • Roku
  • tvOS
  • visionOS
  • watchOS

Latest store filterโ€‹

The Latest store filter provides these options:

  • App Store (app_store)
  • Play Store (play_store)
  • Promotional (promotional)
  • Mac App Store (mac_app_store)
  • Stripe (stripe)
  • Amazon (amazon)
  • Roku (roku)
  • RevenueCat Billing (rc_billing)
  • Paddle (paddle)
  • External (external)

Latest ownership status filterโ€‹

The Latest ownership status filter provides these options:

  • Purchased (PURCHASED): The customer purchased the subscription directly.
  • Family shared (FAMILY_SHARED): The customer received access through family sharing.

Price experiment variant filterโ€‹

The Price experiment variant filter provides these options:

  • a
  • b
  • c
  • d

Exporting Dataโ€‹

All customers matching an audience's filters can be exported. Exports are delivered as a .zip file containing a .csv. Exports are processed in the background, and you'll receive an email with a link to download the file. Emails are sent to the logged in account that requested the export. The download links are shareable and available for 30 days.

Below is a description of the .csv format for the exported data. Columns appear in this order in the export file.

Column NameDescription
project_idThe ID of the project in RevenueCat.
project_nameThe name of the project in RevenueCat.
app_idThe ID of the app the customer was last seen using.
app_nameThe name of the app the customer was last seen using.
first_seen_atEpoch timestamp in milliseconds when the customer was first seen by RevenueCat.
last_seen_atEpoch timestamp in milliseconds when the customer was last seen by RevenueCat.
last_seen_app_versionThe version of the app that the customer was last seen using.
last_seen_ip_countryThe two-letter ISO 3166-1 alpha-2 code of the country where the user was last seen, determined by IP address of the customer API request.
last_seen_platformThe platform that the customer was last seen using.
last_seen_platform_versionThe version of the platform that the customer was last seen using.
last_seen_sdk_versionThe RevenueCat SDK version being used in the customer's last seen app version.
last_seen_localeThe device locale that the customer was last seen using.
price_experiment_idThe unique ID of the experiment that the customer was enrolled in (if applicable).
price_experiment_variantThe variant of the experiment that the customer was enrolled in (if applicable).
emailThe $email Attribute for the customer, if set.
phone_numberThe $phoneNumber Attribute for the customer, if set.
media_sourceThe $mediaSource Attribute for the customer, if set.
campaignThe $campaign Attribute for the customer, if set.
ad_groupThe $adGroup Attribute for the customer, if set.
adThe $ad Attribute for the customer, if set.
keywordThe $keyword Attribute for the customer, if set.
creativeThe $creative Attribute for the customer, if set.
idfaThe $idfa Attribute for the customer, if set.
idfvThe $idfv Attribute for the customer, if set.
gps_ad_idThe $gpsAdId Attribute for the customer, if set.
custom_attributesJSON representation of any custom Attributes set for the customer.
has_made_sandbox_purchaseT or F indicating whether the customer has made any sandbox purchases.
latest_entitlementThe most recently unlocked RevenueCat Entitlement identifier.
latest_entitlementsA comma-separated list of the customer's most recently unlocked Entitlement identifiers.
latest_productThe most recently purchased product identifier.
is_rc_promoWhether the most recent transaction was a RevenueCat Granted Entitlement.
first_purchase_atEpoch timestamp in milliseconds of the customer's first transaction.
trial_start_atEpoch timestamp in milliseconds when the customer started a free trial.
trial_end_atEpoch timestamp in milliseconds of the customer's free trial expiration date.
most_recent_purchase_atEpoch timestamp in milliseconds of the customer's most recent transaction.
most_recent_renewal_atEpoch timestamp in milliseconds of the customer's most recent renewal transaction.
latest_expiration_atEpoch timestamp in milliseconds of the customer's latest expiration date. If greater than now, then the customer has an active subscription.
subscription_opt_out_atEpoch timestamp in milliseconds when a subscription or trial cancellation was detected by RevenueCat.
trial_opt_out_atEpoch timestamp in milliseconds when the latest trial cancellation was detected by RevenueCat.
total_renewalsThe total number of subscription renewals for the customer.
total_spentThe total amount spent by the customer, shown in the currency selected in your Account Settings.
latest_storeThe latest store that the customer purchased from.
latest_store_countryThe latest store country that the customer purchased from.
latest_auto_renew_intentT or F indicating whether the customer has chosen to have their subscription or trial auto-renew.
all_purchased_product_idsA comma-separated list of all the product identifiers purchased by the customer.
most_recent_billing_issues_atEpoch timestamp in milliseconds when a subscription billing issue was detected by RevenueCat.
statusThe customer's legacy export status. See Export status values below.
has_made_a_non_subscription_purchaseT or F indicating whether the customer has made any non-subscription purchases.
latest_offerThe identifier of the latest offer that the customer used to make a purchase (if applicable).
latest_offer_typeThe type of the latest offer that the customer used to make a purchase (if applicable).
latest_purchased_offeringThe offering that the customer's latest purchase was made from.
latest_ownership_typeThe ownership type of the customer's latest purchase, such as PURCHASED or FAMILY_SHARED.
app_user_idThe customer's user identifier in RevenueCat.
currencyThe currency that total_spent is provided in, based on the Display Currency you've configured in Account Settings.

Export status valuesโ€‹

The status column in exports uses these values:

  • active: The customer has an active paid subscription.
  • free_trial: The customer is in a free trial period.
  • intro_period: The customer's subscription is in a discounted introductory (non-free) period.
  • promotional: The customer's latest transaction is a RevenueCat Granted Entitlement.
  • billing_issue: The customer's subscription is experiencing a billing retry period.
  • billing_issue_trial: The customer is in a trial period experiencing billing issues.
  • cancelled: The customer has cancelled their subscription, but it has not expired yet.
  • cancelled_trial: The customer has cancelled their trial, but it has not expired yet.
  • expired: The customer's subscription has ended and is no longer active.
๐Ÿ“˜"The last successful export finished recently. Please, wait some minutes before submitting another export."

Note that there is a wait time of 30 minutes between each export.

Exported filesโ€‹

Audience exports are delivered as a .zip file containing a single .csv. The CSV uses a semicolon delimiter, so if the file is not formatted correctly when viewed as a spreadsheet, you may need to change your delimiter settings in the spreadsheet software.

Note that the timestamps in the exports are measured in milliseconds since Unix epoch. To convert these timestamps into a readable date, the formula is (A1รท86400000)+(DATE(1970,1,1)) where A1 is the corresponding cell.

macOS Can be opened by Archive Utility, included in macOS by default. Extract the .csv from the .zip before opening it in a spreadsheet app.

Windows Can be opened with a third party utility like WinZip or 7-Zip. Extract the .csv from the .zip before opening it in a spreadsheet app.

Next Stepsโ€‹

  • Learn how to view the purchase history of a specific user and grant them promotional access via the Customer View โ†’
Was this page helpful?