Skip to main content
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

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.
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.

Logout Callback Listener

Clearing user data and resetting the SDK state is an asynchronous process natively on Android and iOS, you should wait for the SDK to complete the logout before navigating the user away or clearing your app’s local state. You can listen for successful logout operations by registering a listener for the logoutCompleted event. This ensures you prevent cross-contamination of user data and safely handle UI navigation.
import { MoECapacitorCore, MoELogoutCompleteData } from 'capacitor-moengage-core';

MoECapacitorCore.addListener("logoutCompleted", (data: MoELogoutCompleteData) => {
    console.log("Received callback 'MoELogoutComplete', data: " + JSON.stringify(data));
    // Safe to navigate to login screen or clear local app state
});

Logout Callback Data

/**
 * Data returned when a logout operation is successfully completed.
 */
export interface MoELogoutCompleteData {
  /**
    * Account information
   */
    accountMeta: MoEAccountMeta;

  /**
   * Platform type
   */
    platform: MoEPlatform;
}

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. 
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.
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:  
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 a boolean.  Refer to the initialization code snippet below.
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.

// 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
  • 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
  • INSTALL
  • UPDATE
  • MOE_ISLAT
  • status
  • user_id
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.