Subscriber attributes are useful for storing additional, structured information on a user. For example, you could store your user's email address and additional system identifiers directly in RevenueCat. Attributes will not be seen by your users unless you choose to explicitly show them yourself.
Setting Attributes
Subscriber attributes can be set through the Purchases SDK by passing a dictionary of strings to the setAttributes()
method on the shared Purchases instance.
Purchases.shared.setAttributes(["age" : "24",
"custom_group_id" : "abc123"])
[[RCPurchases sharedPurchases] setAttributes:@{
@"age": @"24",
@"custom_group_id": @"abc123"
}];
Purchases.sharedInstance.setAttributes(mapOf("age" to "24", "custom_group_id" to "abc123"))
Map<String, String> attributes = new HashMap<String, String>();
attributes.put("age", "24");
attributes.put("custom_group_id", "abc123");
Purchases.getSharedInstance().setAttributes(attributes);
Purchases.setAttributes({ "age" : "24", "custom_group_id" : "abc123" });
Purchases.setAttributes({ "age" : "24", "custom_group_id" : "abc123" });
Since subscriber attributes are writable using a public key they should not be used for managing secure or sensitive information such as subscription status, coins, etc.
Restrictions
You can specify up to 50 attributes, with key names up to 40 characters long and values up to 500 characters long. Keys cannot start with $
unless it's for one of the reserved attributes below.
Attribute key checklist:
β
Key does not contain whitespace
β
Key does not start with "$" (unless for a reserved attribute)
β
Key is not more than 40 characters
β
Value is not more than 500 characters
β
No more than 50 custom attributes
Reserved attributes
Attribute keys beginning with $
are reserved for RevenueCat. The current list of reserved keys are below:
General
Key | Description |
---|---|
| Email address for the user |
| Name that should be used to reference the user |
| Phone number for the user |
| Apple push notification tokens for the user |
| Google push notification tokens for the user |
Device Identifiers
Key | Description |
---|---|
| Apple advertising identifier |
| Apple vendor identifier |
| Google advertising identifier |
| Android device identifier |
Third-party Identifiers
Key | Description |
---|---|
| Adjust user identifier |
| Appsflyer user identifier |
| Facebook SDK anonymous user identifier |
| mParticle user identifier |
| OneSignal player identifier |
Attribution Data
Key |
---|
|
|
|
|
|
|
If you have access to install attribution data, you can set it using the reserved keys above. RevenueCat itself is not an attribution network and can not automatically populate this information.
Reserved attributes can be written directly by setting the key (don't forget the $
prefix) or with special helper methods:
Purchases.shared.setEmail("[email protected]")
Purchases.shared.setPhoneNumber("+16505551234")
Purchases.shared.setDisplayName("John Appleseed")
Purchases.sharedInstance.setEmail("[email protected]")
Purchases.sharedInstance.setPhoneNumber("+16505551234")
Purchases.sharedInstance.setDisplayName("John Appleseed")
Purchases.setEmail("[email protected]")
Purchases.setPhoneNumber("+16505551234")
Purchases.setDisplayName("John Appleseed")
Purchases.setEmail("[email protected]")
Purchases.setPhoneNumber("+16505551234")
Purchases.setDisplayName("John Appleseed")
Setting push tokens
Push tokens can be used to engage with your users through Apple apns or Google cloud messaging. These can be saved in RevenueCat through system callbacks after the user accepts the push notification permissions in your app.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Purchases.shared.setPushToken(deviceToken)
}
Purchases.sharedInstance.setPushToken(deviceToken)
Purchases.setPushToken(deviceToken);
Purchases.setPushToken(deviceToken)
Subscriber attributes are posted to RevenueCat on app launch, app backgrounded, and when purchases are made or restored.
Deleting Attributes
Any attribute can be cleared by passing null
or an empty string as the key value. Individual attributes can also be cleared for a specific user in their customer view.
Purchases.shared.setAttributes(["age" : ""])
Purchases.sharedInstance.setAttributes(mapOf("age" to ""))
Purchases.setAttributes({"age" : ""});
Purchases.setAttributes({"age" : ""})
Reading Attributes
You can access subscriber attributes through the REST API using a secret key, in webhooks, and through analytics integrations (Amplitude, Mixpanel, Segment). The customer view dashboard will also show a list of attributes for the individual user that you can edit.


Subscriber attributes are write-only from the Purchases SDK. Reading attributes should only be done server-side through the webhooks or REST API.
Subscriber attributes are also included with transaction data for ETL exports.
Next Steps
- Enrich your app by reacting to the user's current subscription status
Updated 2 months ago