Tracking 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

JavaScript
var moe = MoECordova.init(YOUR_Workspace_ID);
moe.setUniqueId(uniqueID);

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"

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.

JavaScript
var moe = MoECordova.init(YOUR_Workspace_ID);
moe.logout();
info

Note

To clear out the existing user's data and identity, call the logout method. This will clear the data for the current user and create a new one, when you re-login as explained in the above log-in scenario your user will be merged (if already exist in our system)

Updating User Attribute Unique ID

In a scenario where you have to update the User Attribute Unique ID value for a logged-in user use setAlias() as shown below:

JavaScript
var moe = MoECordova.init(YOUR_Workspace_ID);
moe.setAlias("updatedUniqueID");
warning

Warning

Please make sure that you use setAlias() for updating the User Attribute Unique ID and not setUserAttribute() with USER_ATTRIBUTE_UNIQUE_ID attribute and a new value, as this will reset the current user and lead to the creation of unintended users in our system.

SDK User Attributes Keys

You can also set the default user attributes like mobile number, gender, user name, birthday, location, etc using the below APIs

JavaScript
var moe = MoECordova.init(YOUR_Workspace_ID);
moe.setUserName("abc");
moe.setFirstName("abc");
moe.setLastName("xyz");
moe.setEmail("abc@xyz.com");
moe.setPhoneNumber(1234567890);
moe.setGender("Male"); // OR Female
moe.setLocation(25.23, 73.23);
// Format - ISO-8601 String
moe.setBirthdate("1970-01-01T12:00:00Z");

For setting custom user attributes, use the method setUserAttribute(key, value).

JavaScript
var moe = new MoECordova.init(YOUR_Workspace_ID);
moe.setUserAttribute("<attribute_name>", "<attribute_value>");

Date attributes and Birthday in ISO-8601 format - yyyy-MM-dd'T'HH:mm:ss'Z'

JavaScript
var moe = MoECordova.init(YOUR_Workspace_ID);
moe.setUserAttributeLocation("attribute", 25.23, 73.23);

You can use the following method set the timestamp user attribute :

JavaScript
var moe = MoECordova.init(YOUR_Workspace_ID);
moe.setUserAttributeISODateString("LastPurchaseDate", "1970-01-01T12:00:00Z");
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.

Custom Boolean User Attribute

iOS(optional)

Starting from version 9.x.x of cordova-moengage-core, the default tracking for the custom boolean attribute will be changed to boolean(true/false) from double(0/1). To configure this, use analyticsConfig with shouldTrackUserAttributeBooleanAsNumber and pass true to track the boolean as double. By default, this is set as false to track boolean as true/false

Refer to the initialization code snippet below.

TypeScript
let initializationConfig = {analyticsConfig: {shouldTrackUserAttributeBooleanAsNumber: true}};
var moe = MoECordova.init(YOUR_Workspace_ID, initializationConfig);

Refer to the example code below for tracking the boolean user attribute 

TypeScript
var moe = new MoECordova.init(YOUR_Workspace_ID); 

/// If shouldTrackUserAttributeBooleanAsNumber is passed as true then `boolean attribute True` will tracked with value 1 else true moe.setUserAttribute("boolean attribute True", true);

/// If shouldTrackUserAttributeBooleanAsNumber is passed as true then `boolean attribute False` will tracked with value 0 else false moe.setUserAttribute("boolean attribute False", false);

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

Previous

Next

Was this article helpful?
0 out of 0 found this helpful

How can we improve this article?