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 existing user, if any exists, and will help prevent creating 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 User

JavaScript
import ReactMoE from 'react-native-moengage'
ReactMoE.setUserUniqueID("abc@xyz.com");

Logout User

JavaScript
import ReactMoE from 'react-native-moengage'
ReactMoE.logout();

Updating User Attribute Unique ID

warning

Important

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

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

JavaScript
import ReactMoE from 'react-native-moengage'
ReactMoE.setAlias("asd@xyz.com");

Tracking User Attributes

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

JavaScript
import ReactMoE, {
  MoEGeoLocation,
} from "react-native-moengage";

ReactMoE.setUserName("abc");
ReactMoE.setUserFirstName("abc");
ReactMoE.setUserLastName("xyz");
ReactMoE.setUserEmailID("abc@xyz.com");
ReactMoE.setUserContactNumber(1234567890);
ReactMoE.setUserGender("Male"); // OR Female
// Format - ISO-8601 String
ReactMoE.setUserBirthday("1970-01-01T12:00:00Z");
// For Location use MoEGeoLocation instance
ReactMoE.setUserLocation(new MoEGeoLocation(77.3201, -77.3201));
// For array of integers
ReactMoE.setUserAttribute("arrayOfInt",[1,2,3]);
// For array of strings
ReactMoE.setUserAttribute("arrayOfString",['sample1','sample2','sample3']);
    

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:

JavaScript
import ReactMoE, {
  MoEGeoLocation,
} from "react-native-moengage";

ReactMoE.setUserAttribute("attribute name", "attribute value");

// For Time attribute use ISO-8601 format
ReactMoE.setUserAttributeISODateString(
                  "time attribute name",
                  new Date().toISOString()
                );

// For Location, use MoEGeoLocation instance
ReactMoE.setUserAttributeLocation(
                  "location attribute name",
                  new MoEGeoLocation(10.3223, -88.6026)
                );
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 11.x.x of react-native-moengage, the default tracking for the custom boolean attribute will be changed to boolean(true/false) from double(0/1). To configure this, use MoEAnalyticsConfig and pass true to track the boolean as double. By default, this is set as false to track the boolean as true/false.

Refer to the initialization code snippet below.

TypeScript
import ReactMoE from 'react-native-moengage';
import { MoEInitConfig, MoEPushConfig, MoEngageLogConfig, MoEngageLogLevel } from "react-native-moengage";
const moEInitConfig = new MoEInitConfig(
  MoEPushConfig.defaultConfig(),
  new MoEngageLogConfig(MoEngageLogLevel.DEBUG, isEnabledForReleaseBuild),
  new MoEAnalyticsConfig(true)
);
ReactMoE.initialize(YOUR Workspace ID, moEInitConfig);

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

JavaScript
iimport ReactMoE, {
  MoEGeoLocation,
} from “react-native-moengage”;
      
// If MoEAnalyticsConfig is passed as true then `boolean attribute True` will tracked with value 1 else true
ReactMoE.setUserAttribute("boolean attribute True", true);
      
// If MoEAnalyticsConfig is passed as true then `boolean attribute False` will tracked with value 0 else false
ReactMoE.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

 

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 1 found this helpful

How can we improve this article?