Track User Attributes

User Attributes are pieces of information you know about a user which could be demographics like age or gender, account-specific like plan, or even things like whether a user has seen a particular A/B test variation. It's up to you! It is basically a customer identity that you can reference across the customer’s whole lifetime.

Implementing Login/Logout

  • It's important to set the User Attribute Unique ID when a user logs into your app.
  • This is to merge the new user with the existing user, if any exists, and will help prevent creation of unnecessary/stale users.
  • Setting the Unique ID is a critical piece to tie a user across devices and installs/uninstalls as well across all platforms (i.e. iOS, Android, Windows, The Web). Set the USER_ATTRIBUTE_UNIQUE_ID attribute as soon as the user is logged in. Unique ID can be something like an email ID, a username (unique), or a database ID or any Backend generated ID.
  • Do not set this for the user who not logged in.

Login

Kotlin Java
MoEAnalyticsHelper.setUniqueId(context, UNIQUE_ID)

Note: The following values are not allowed in the UniqueID field: "unknown", "guest", "null", "0", "1", "true", "false", "user_attribute_unique_id", "(empty)", "na", "n/a", "", "dummy_seller_code", "user_id", "id", "customer_id", "uid", "userid", "none", "-2", "-1", "2"

warning

UNIQUE ID chaos

  • When you go live with MoEngage Android SDK for the first time, please ensure that you are setting the Unique ID of the already logged-in user along with other user attributes.
  • Kindly make sure that you are not using a single UNIQUE ID for all the users, this can happen if you hardcode the value, instead of fetching it from your servers.
  • If you pass 2 different UNIQUE ID information without calling the logoutUser method in between, the SDK will internally force the logout of the existing user.

Logout

The application needs to notify the MoEngage SDK whenever the user is logged out of the application. To notify the SDK, call the API whenever the user is logged out of the application.

KotlinJava
MoECoreHelper.logoutUser(context)

In case the application is registering for push token it should pass the new push token to MoEngage SDK after user logout. For more information about passing push tokens, refer to Push Configuration for Android SDK.

warning

Warning - Unique ID Restrictions

  • Using Moengage.add_unique_user_id(NEW_UNIQUE_ID);:
    • Creates a new unique id for the user and this user is added as a new user
    • If you do not use log out and use Moengage.add_unique_user_id(NEW_UNIQUE_ID); the current user is forcefully logged out and a new user with a new unique id is created.
    • New user creation resets the current user and creates unintended users in our system.
  • Use Moengage.update_unique_user_id(NEW_UNIQUE_ID); to update the existing user Unique ID User Attribute.

Updating User Attribute Unique Id

Use the method setAlias() to update the user attribute unique id instead of setUniqueId() with a different value. Using the method setUniqueId() with a new value creates unintended users in MoEngage.

KotlinJava
MoEAnalyticsHelper.setAlias(ALIAS)

Tracking User Attributes

The SDK provides APIs to track commonly tracked user attributes like First Name, Last Name, Email-Id, etc. Please use the provided methods for tracking these attributes.

For more information on supported data types and data tracking policies, please refer to Data Tracking Policies.

KotlinJava
MoEAnalyticsHelper.setFirstName()
MoEAnalyticsHelper.setLastName()
MoEAnalyticsHelper.setUserName()
MoEAnalyticsHelper.setLocation()
MoEAnalyticsHelper.setGender()
MoEAnalyticsHelper.setMobileNumber()
MoEAnalyticsHelper.setBirthDate()
MoEAnalyticsHelper.setEmailId()

 For setting other User Attributes, use the generic method setUserAttribute(key, value). 
Supported types for attribute value are String, int, double, num, bool, List<int>, List<String>, List<double> & List<num>.

Kotlin Java
// Tracking a String Attribute
MoEAnalyticsHelper.setUserAttribute(context,"locality", "SF")
// Tracking a Date Attribute
MoEAnalyticsHelper.setUserAttribute(context,"signedUpOn", Date())
// Tracking a location attribute
MoEAnalyticsHelper.setUserAttribute(context,"lastLocation", GeoLocation(40.77, 73.98))
// Tracking Array Attributes
// Supported Types - LongArray,IntArray,DoubleArray,ShortArray,FloatArray, Array<Long>,Array<Int>,Array<Double>,Array<Short>,Array<Float>,Array<String>
MoEAnalyticsHelper.setUserAttribute(context,"int_array",arrayOf<Int>(1,2,3))
MoEAnalyticsHelper.setUserAttribute(context,"string_array",arrayOf<String>("English","French"))
MoEAnalyticsHelper.setUserAttribute(context,"double_array",arrayOf<Double>(40.0,20.0))
MoEAnalyticsHelper.setUserAttribute(context,"json_array", JSONArray(listOf(1, 2, 3)))      
MoEAnalyticsHelper.setUserAttribute(context,"json_object", JSONObject().put("key", "value"))      
    


For more information about the detailed list of user attributes, refer to the API reference.

Reserved keywords for User Attributes

Below is the list of keys that should not be used when tracking user attributes.

  • USER_ATTRIBUTE_UNIQUE_ID
  • USER_ATTRIBUTE_USER_EMAIL
  • USER_ATTRIBUTE_USER_MOBILE
  • USER_ATTRIBUTE_USER_NAME
  • USER_ATTRIBUTE_USER_GENDER
  • USER_ATTRIBUTE_USER_FIRST_NAME
  • USER_ATTRIBUTE_USER_LAST_NAME
  • USER_ATTRIBUTE_USER_BDAY
  • MOE_TIME_FORMAT
  • MOE_TIME_TIMEZONE
  • USER_ATTRIBUTE_NOTIFICATION_PREF
  • USER_ATTRIBUTE_OLD_ID
  • MOE_TIME_FORMAT
  • MOE_TIME_TIMEZONE
  • USER_ATTRIBUTE_DND_START_TIME
  • USER_ATTRIBUTE_DND_END_TIME
  • MOE_GAID
  • MOE_ISLAT
  • status
info

Note

You can not use "moe_" as a prefix while naming events, event attributes, or user attributes. It is a system prefix and using it might result in periodic blacklisting without prior communication.

 

Previous

Next

Was this article helpful?
1 out of 3 found this helpful

How can we improve this article?