User Properties

Set custom user properties

User properties are attributes you can set on a user level. You can send user properties to third-party platforms and use them in Qonversion for customer segmentation and analytics.
Here is an example of user properties:


User Properties


There are two types of user properties: Qonversion-defined and custom user properties.

Defined User Properties

We defined some common case properties and provided API for adding them:

Qonversion.shared().setProperty(.email, value: "[email protected]")
[[Qonversion sharedInstance] setProperty:QONPropertyEmail value:@"[email protected]"];
Qonversion.getSharedInstance().setProperty(QUserProperty.Email, "[email protected]");
Qonversion.shared.setProperty(QUserProperty.Email, "[email protected]")
Qonversion.getSharedInstance().setProperty(, '[email protected]');
Qonversion.getSharedInstance().setProperty(UserProperty.EMAIL, '[email protected]');
Qonversion.GetSharedInstance().SetProperty(UserProperty.Email, "[email protected]");

The full list of the defined properties is provided below:

Email_q_emailUser Email. It can be used for cross-platform authorization and integrations with Qonversion.
Name_q_nameUser Name
KochavaDeviceId_q_kochava_device_idKochava Unique Device ID
AppsFlyerUserId_q_appsflyer_user_idCustomer user ID. It can be used to cross-reference your in-house data with AppsFlyer attribution data.
AdjustAdId_q_adjust_adidAdjust Advertising ID
CustomUserId_q_custom_user_idYour Internal User ID. Use this key only for analytical purposes, whereas implement User Identity for entitlements matching. Learn more.
FacebookAttribution_q_fb_attributionMobile Cookie from the user's device
FirebaseAppInstanceId_q_firebase_instance_idThe identifier for a Firebase app
AppSetId_q_app_set_idUnique user identifier for all the developer's applications on Android

Custom User Properties

Additionally, you can add custom user property. Qonversion can send them to third-party integrations as well. For example, you can add user details and use that data to send personalized emails or push notifications via Mailchimp and OneSignal integrations.

Qonversion.shared().setUserProperty("liked-app", value: "yes")
[[Qonversion sharedInstance] setUserProperty: @"liked-app" value: @"yes"];
Qonversion.getSharedInstance().setUserProperty("liked-app", "yes");
Qonversion.shared.setUserProperty("liked-app", "yes")
Qonversion.getSharedInstance().setUserProperty('liked-app', 'yes');
Qonversion.getSharedInstance().setUserProperty('liked-app', 'yes');
Qonversion.GetSharedInstance().SetUserProperty("liked-app", "yes");

You can use letters A-Za-z, numbers, and the following symbols _.:- as a property key.


Property setting order

To successfully set either Defined or Custom User Properties, launch Qonversion SDK first. Learn more.

(Optional) Set User ID

If you want to implement cross-platform (Android, IOS, and Web) user entitlement management, please, follow the User Identity guide.

To match Qonversion revenue events to users in third-party tools, you need to set the identical user IDs in all of them:

Qonversion.shared().setProperty(.userID, value: "yourSideUserId")
[[Qonversion sharedInstance] setProperty:QNPropertyUserID value:@"yourSideUserId"];
Qonversion.getSharedInstance().setProperty(QUserProperty.CustomUserId, "yourSideUserID");
Qonversion.shared.setProperty(QUserProperty.CustomUserId, "yourSideUserID")
Qonversion.getSharedInstance().setProperty(QUserProperty.customUserId, 'yourSideUserId');
Qonversion.getSharedInstance().setProperty(UserProperty.CUSTOM_USER_ID, 'yourSideUserId');
Qonversion.GetSharedInstance().SetProperty(UserProperty.CustomUserId, "yourSideUserId");

The user ID improves the quality of events matching to the platforms where event attribution is not exclusively based on IDFA or GAID.

(Optional) Set IDFA (Identifier for Advertisers, iOS 14.5+ only)

On iOS 14.5+, after requesting the app tracking permission using ATT, you need to notify Qonversion if tracking is allowed and IDFA is available. This will help to have precise attribution in Adjust, AppsFlyer, Singular and other Qonversion integrations.

ATTrackingManager.requestTrackingAuthorization { status in
    switch status {
    case .authorized:
    // handle other states below
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
    switch (status) {
        case ATTrackingManagerAuthorizationStatusAuthorized:
            [[Qonversion sharedInstance] collectAdvertisingId];
        // handle other states if needed

(Optional) Set ASID (App set ID, Android 12+ only)

On Android 12+, you can provide an App set ID to have it used in Qonversion integrations.

Add as the dependency to your project and write the following code.

final AppSetIdClient client = AppSet.getClient(context);
final Task<AppSetIdInfo> task = client.getAppSetIdInfo();
task.addOnSuccessListener(info -> {
    final String id = info.getId();
    Qonversion.getSharedInstance().setProperty(QUserProperty.AppSetId, id);
val client = AppSet.getClient(requireContext())
client.appSetIdInfo.addOnSuccessListener { info: AppSetIdInfo ->
Qonversion.getSharedInstance().setProperty(QUserProperty.appSetId, appSetId);
Qonversion.getSharedInstance().setProperty(UserProperty.APP_SET_ID, appSetId);
Qonversion.GetSharedInstance().SetProperty(UserProperty.AppSetId, appSetId);