User attributes are specific traits of a user such as an email, username, mobile, gender and so on. User Attributes helps target users based on these attributes across devices or installs or to personalize the messages.
User Login and Logout
It is important that you handle user login and logout as mentioned below. There is a definite possibility that your data gets corrupted if this is not done properly.
Ensure that you have the unique id for your app users and pass that information to MoEngage SDK using the setUniqueId(). The unique id is used to identify a user across installs and platforms and provide a unified view. After the user logs out of your app, it is necessary to call logout() so that we create a new user.
Ensure that you call the following methods on user log in or log out.
Login
MoEAnalyticsHelper.setUniqueId(context, UNIQUE_ID)
MoEAnalyticsHelper.INSTANCE.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
|
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.
MoECoreHelper.logoutUser(context)
MoECoreHelper.INSTANCE.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.
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.
MoEAnalyticsHelper.setAlias(ALIAS)
MoEAnalyticsHelper.INSTANCE.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.
MoEAnalyticsHelper.setFirstName()
MoEAnalyticsHelper.setLastName()
MoEAnalyticsHelper.setUserName()
MoEAnalyticsHelper.setLocation()
MoEAnalyticsHelper.setGender()
MoEAnalyticsHelper.setMobileNumber()
MoEAnalyticsHelper.setBirthDate()
MoEAnalyticsHelper.setEmailId()
MoEAnalyticsHelper.INSTANCE.setFirstName();
MoEAnalyticsHelper.INSTANCE.setLastName();
MoEAnalyticsHelper.INSTANCE.setUserName();
MoEAnalyticsHelper.INSTANCE.setLocation();
MoEAnalyticsHelper.INSTANCE.setGender();
MoEAnalyticsHelper.INSTANCE.setMobileNumber();
MoEAnalyticsHelper.INSTANCE.setBirthDate();
MoEAnalyticsHelper.INSTANCE.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>.
// 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"))
// Tracking a String Attribute
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"locality", "SF");
// Tracking a Date Attribute
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context, "signedUpOn", new Date());
// Tracking a location attribute
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"lastLocation", new GeoLocation(40.77, 73.98));
// Tracking Array Attributes
// Supported Types - long[],int[],double[],short[],float[],Long[],Integer[],Double[],Short[],Float[],String[]
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"int_array",new int[]{1,2,3});
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"string_array",new String[]{"English","French"});
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"double_array",new double[]{1.5,2.5});
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"double_array",new double[]{1.5,2.5});
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"json_array", new JSONArray());
MoEAnalyticsHelper.INSTANCE.setUserAttribute(context,"json_object", new JSONObject());
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. |