Tracking User Attributes

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

TypeScript
import { MoECapacitorCore } from 'capacitor-moengage-core'
MoECapacitorCore.setUniqueId({ uniqueId: "abc@xyz.com", appId: YOUR Workspace 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"

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.

TypeScript
import { MoECapacitorCore } from 'capacitor-moengage-core'
MoECapacitorCore.logoutUser({ appId: YOUR Workspace ID });

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.

 

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.

Use the following helper methods to set User attributes like Name, Email, Mobile, Gender, etc.

TypeScript
import { MoECapacitorCore, MoEProperties, MoEUserGender, MoEAppStatus } from 'capacitor-moengage-core'
      

MoECapacitorCore.setUserName({ userName: "John Doe", appId: YOUR Workspace ID });
MoECapacitorCore.setFirstName({ firstName: "John", appId: YOUR Workspace ID });
MoECapacitorCore.setLastName({ lastName: "Doe", appId: YOUR Workspace ID });
MoECapacitorCore.setEmailId({ emailId: "johndoef@xyz.com", appId: YOUR Workspace ID });
MoECapacitorCore.setMobileNumber({ mobileNumber: "1234567890", appId: YOUR Workspace ID });
MoECapacitorCore.setGender({ gender: MoEUserGender.FEMALE, appId: YOUR Workspace ID });
MoECapacitorCore.setBirthDate({ birthdate: "1970-01-01T12:00:00Z", appId: YOUR Workspace ID });
MoECapacitorCore.setUserLocation({ location: { latitude: 25.2311, longitude: 73.1023 }, appId: YOUR Workspace ID });

For setting other User Attributes you can use the generic method setUserAttribute(key, value)

To set custom user attributes, you will have to provide the attribute name as shown below:

 

TypeScript
import { MoECapacitorCore } from 'capacitor-moengage-core'

// For generic user attributes
MoECapacitorCore.setUserAttribute({ name: "Attribute Name", value: "AttributeValue", appId: YOUR Workspace ID }); // For Time attribute use ISO-8601 format
MoECapacitorCore.setUserAttributeDate({ name: "Date Attribute Name", value: "1970-01-01T12:00:00Z", appId: YOUR Workspace ID }); // For Location, use MoEGeoLocation instance
MoECapacitorCore.setUserAttributeLocation({ name: "Location Attribute Name", location: { latitude: 25.23, longitude: 73.23 }, appId: YOUR Workspace ID });

Custom Boolean User Attribute

iOS

Starting from version 5.x.x of capacitor-moengage-core, the default tracking for the custom boolean attribute will be changed to boolean from double. To configure this, use MoEAnalyticsConfig and pass true to track the boolean as double or pass false to track it as boolean. 

Refer to the initialization code snippet below.

TypeScript
import { MoECapacitorCore, MoEAnalyticsConfig, MoEInitConfig} from ‘capacitor-moengage-core’

const analyticsConfig: MoEAnalyticsConfig = {shouldTrackUserAttributeBooleanAsNumber: false};
const initConfig: MoEInitConfig = {analyticsConfig: analyticsConfig};
MoECapacitorCore.initialize({ appId: “YOUR_Workspace_ID”, initConfig: initConfig });

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

TypeScript

// If shouldTrackUserAttributeBooleanAsNumber is passed as ‘true’ in MoEAnalyticsConfig then ‘Boolean Attribute True’ will be tracked as 1 else true
MoECapacitorCore.setUserAttribute({ name: "Boolean Attribute True", value: true, appId: YOUR Workspace ID });

// If shouldTrackUserAttributeBooleanAsNumber is passed as ‘false’ in MoEAnalyticsConfig then ‘Boolean Attribute False’ will be tracked as false.
MoECapacitorCore.setUserAttribute({ name: "Boolean Attribute False", value: false, appId: YOUR Workspace ID });

 

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.

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?
0 out of 0 found this helpful

How can we improve this article?