User object

Prev Next

Initialize user object

Whenever you initialize Insider SDK, you also initialize a new Insider user object. You can set attributes for this object and get this object with getCurrentUser method.

Insider user object represents the current user of your app. It is the main object that you can use for attribution (e.g. age, email, opt-in, etc.).

Method Signature

FlutterInsiderUser getCurrentUser()

Method Example

FlutterInsider.Instance.getCurrentUser();
The values in the method examples are sample values. While implementing these methods, you need to replace them with your own unique variables. Otherwise, the methods will not function properly, and might cause discrepancies in user unification.

Set email as user identifier

This method allows you to set the user identifier attribute of your Insider user object for data unification. With this attribute, you can unify your user data within Insider products and reach this user via different channels such as mobile app and web.

Method Signature

Future<FlutterInsiderIdentifiers> addEmail(String email) async

Method Example

FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);
All parameter types are required to be String.
Phone numbers are required to start with a + (plus) sign followed by a country code. The country code should start with a number between 1-9.
UCD listens to the IRM settings to distinguish your actual identifiers, so setting the email identifier from the SDK doesn't mean that it will be sent as an identifier.

Set phone number as user identifier

This method allows you to set the user identifier attribute of your Insider user object for data unification. With this attribute, you can unify your user data within Insider products and reach this user via different channels such as mobile app and web.

Method Signature

Future<FlutterInsiderIdentifiers> addPhoneNumber(String phoneNumber) async

Method Example

FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);
All parameter types are required to be String.
Phone numbers are required to start with a + (plus) sign followed by a country code. The country code should start with a number between 1-9.

Set user ID as user identifier

This method allows you to set the user identifier attribute of your Insider user object for data unification. With this attribute, you can unify your user data within Insider products and reach this user via different channels such as mobile app and web.

Method Signature

Future<FlutterInsiderIdentifiers> addUserID(String userID) async

Method Example

FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);
All parameter types are required to be String.
Phone numbers are required to start with a + (plus) sign followed by a country code. The country code should start with a number between 1-9.

Set name attribute

This method allows you to set the name attribute for your Insider user object.

ParameterData Type
nameString

Method Signature

Future setName(String name) async

Method Example

FlutterInsider.Instance.getCurrentUser().setName("name");

Set surname attribute

This method allows you to set the surname attribute for your Insider user object.

ParameterData Type
surnameString

Method Signature

Future setSurname(String surname) async

Method Example

FlutterInsider.Instance.getCurrentUser().setSurname("surname");

Set gender attribute

This method allows you to set the gender attribute for your Insider user object. You need to pass InsiderGender enum object as a parameter. 

ParameterEnum values

gender (InsiderGender enum) 

InsiderGenderMale
InsiderGenderFemale
InsiderGenderOther

Method Signature

Future setGender(int gender) async

Method Example

FlutterInsider.Instance.getCurrentUser().setGender(InsiderGender.OTHER);

Set age attribute

This method allows you to set the age attribute for your Insider user object.

ParameterData Type

age

Integer

Method Signature

Future setAge(int age) async

Method Example

FlutterInsider.Instance.getCurrentUser().setAge(23);

Set birthday attribute

This method allows you to set the birthday attribute for your Insider user object.

Data should be set in (YYYY-MM-DD) format.


ParameterData Type
birthdayDate

Method Signature

Future setBirthday(DateTime birthday) async

Method Example

FlutterInsider.Instance.getCurrentUser().setBirthday(new DateTime.now());

Select language attribute

This method allows you to set the language attribute for your Insider user object.

ParameterData Type
languageString

Method Signature

Future setLanguage(String language) async

Method Example

FlutterInsider.Instance.getCurrentUser().setLanguage("language");

Set email opt-in attribute

This method allows you to set the email opt-in (permission) attribute for your Insider user object.

ParameterData Type
emailOptinBoolean

Method Signature

Future setEmailOptin(bool emailOptin) async

Method Example

FlutterInsider.Instance.getCurrentUser().setEmailOptin(true);

Set sms opt-in attribute

This method allows you to set the sms opt-in (permission) attribute for your Insider user object.

ParameterData Type
smsOptinBoolean

Method Signature

Future setSMSOptin(bool smsOptin) async

Method Example

FlutterInsider.Instance.getCurrentUser().setSMSOptin(true);

Set Whatsapp opt-in attribute

This method allows you to set the whatsapp opt-in (permission) attribute for your Insider user object.

ParameterData Type
whatsAppOptinBoolean

Method Signature

Future setWhatsappOptin(bool whatsappOptin) async

Method Example

FlutterInsider.Instance.getCurrentUser().setWhatsappOptin(true);

Set push opt-in attribute

This method allows you to set the push opt-in (permission) attribute for your Insider user object.

If you pass the value as false, the respective device will not receive any push notifications unless you set the value to true.
ParameterData Type
pushOptinBoolean

Method Signature

Future setPushOptin(bool pushOptin) async

Method Example

FlutterInsider.Instance.getCurrentUser().setPushOptin(true);

Set location opt-in attribute

This method allows you to set the location opt-in (permission) attribute for your Insider user object.

If you pass the value as false, the respective device will not be targeted for Geofence unless you set the value to true.
ParameterData Type
locationOptinBoolean

Method Signature

Future setLocationOptin(bool locationOptin) async

Method Example

FlutterInsider.Instance.getCurrentUser().setLocationOptin(true);

Set promotional opt-in attribute

This method allows you to set the promotional opt-in (permission) attribute for your Insider user object. It stores the user's consent for promotional marketing messages so that it can be used for App Push targeting.

If you never call this method, or if you pass the value as false, the user is treated as not opted-in and will not be targeted by promotional App Push campaigns.

This attribute is stored at the user (profile) level, not per device, so its value applies to every device the user is identified on.

The method returns the FlutterInsiderUser object, so it can be chained with the other user attribute setters.

ParameterData Type
promotionalOptinBoolean

Method Signature

FlutterInsiderUser setPromotionalOptin(bool promotionalOptin)

Method Example

FlutterInsider.Instance.getCurrentUser().setPromotionalOptin(true);

Set login attribute

This method allows you to set the login status attribute for your Insider user object.

Once you call this method to assign its value as true, you need to call the logout method to set it false. 

Method Signature

Future login(FlutterInsiderIdentifiers identifiers) async

Method Example

FlutterInsiderIdentifiers identifiers = new FlutterInsiderIdentifiers();
identifiers.addEmail("sample@mail.com");
identifiers.addPhoneNumber("+651234567");
identifiers.addUserID("CRM-ID");
await FlutterInsider.Instance.getCurrentUser().login(identifiers);

Set logout attribute

This method allows you to set the login status attribute for your Insider user object.

Once you call assign false for the value for login status, you need to call the login method to set it true.

Method Signature

Future logout() async

Method Example

FlutterInsider.Instance.getCurrentUser().logout();

Set logout-reset attribute

This is an alternative logout method for specific use cases. If you're unsure whether it applies to your setup, please contact your account manager. If you don’t have a special requirement, use the default logout method to avoid user-management issues or unexpected MAU increases.

This method allows you to set the login status attribute for your Insider user object, then disassociate the user from the current device and generate new IID for the current device.

Also, this method allows you to send additional Identifiers to include in the logout process, all additional identifiers (including the currently logged in user) will be disassociated from the current device.

Once you call assign false for the value for login status, you need to call the login method to set it to true.

Method Signature

void logoutResettingInsiderID(
  List<FlutterInsiderIdentifiers>? additionalIdentifiers, {
  Function? insiderIDResult
})

Method Example

// Logout the current user only
FlutterInsider.Instance.getCurrentUser().logoutResettingInsiderID(null);

// Logout the current user along side additional users
FlutterInsiderIdentifiers identifiers = FlutterInsiderIdentifiers()
  ..addEmail("user@example.com")
  ..addUserID("user123");

FlutterInsider.Instance.getCurrentUser().logoutResettingInsiderID([identifiers]);

Set signup event

To trigger action for signup of users, you need to call this method whenever a user sign up to the app.

Method Signature

Future signUpConfirmation() async

Method Example

FlutterInsider.Instance.signUpConfirmation()

Set locale attribute

This method allows you to set the locale attribute for your Insider user object.

ParameterData Type
localeString

Method Signature

Future setLocale(String locale) async

Method Example

FlutterInsider.Instance.getCurrentUser().setLocale("en_EN");

Set custom string attribute

This method allows you to set the custom string attribute for your Insider user object.

Your attribute key should be lowercase and should not include any special character, non-Latin character or any space. Otherwise, this attribute will be ignored. You can use underscores.
ParameterData Type
keyString
valueString

Method Signature

Future setCustomAttributeWithString(String key, String value) async

Method Example

FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithString("key", "stringValue");

Set custom integer attribute

This method allows you to set the custom integer attribute for your Insider user object.

Your attribute key should be lowercase and should not include any special character, non-Latin character or any space. Otherwise, this attribute will be ignored. You can use underscores.
ParameterData Type
keyString
valueInteger

Method Signature

Future setCustomAttributeWithInt(String key, int value) async

Method Example

FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithInt("key", 10);

Set custom boolean attribute

This method allows you to set the custom boolean attribute for your Insider user object.

Your attribute key should be lowercase and should not include any special character, non-Latin character or any space. Otherwise, this attribute will be ignored. You can use underscores.
ParameterData Type
keyString
valueBoolean

Method Signature

Future setCustomAttributeWithBoolean(String key, bool value) async

Method Example

FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithBoolean("key", true);

Set custom double attribute

This method allows you to set the custom double attribute for your Insider user object.

Your attribute key should be lowercase and should not include any special character, non-Latin character or any space. Otherwise, this attribute will be ignored. You can use underscores.
ParameterData Type
keyString
valueDouble

Method Signature

Future setCustomAttributeWithDouble(String key, double value) async

Method Example

FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithDouble("key", 10.5);

Set custom date attribute

This method allows you to set the custom date attribute for your Insider user object.

Your attribute key should be lowercase and should not include any special character, non-Latin character or any space. Otherwise, this attribute will be ignored. You can use underscores.
ParameterData Type
keyString
valueDate object

Method Signature

Future setCustomAttributeWithDate(String key, DateTime value) async

Method Example

FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithDate("key", new DateTime.now());

Set custom array attribute

This method allows you to set the custom array attribute for your Insider user object.

Your attribute key should be lowercase and should not include any special character, non-Latin character or any space. Otherwise, this attribute will be ignored. You can use underscores.
ParameterData Type
keyString
valueArray (of string)

Method Signature

Future setCustomAttributeWithArray(String key, List value) async

Method Example

List<String> arr = new List(3);
    arr[0] = "item1";
    arr[1] = "item2";
    arr[2] = "item3";
FlutterInsider.Instance.getCurrentUser().setCustomAttributeWithArray("key", arr);

Unset custom attribute

This method allows you to unset any custom attribute of your Insider user object. This method will remove the respective the custom attribute of your user for the given key permanently.

Your attribute key should be lowercase and should not include any special character, non-Latin character or any space. Otherwise, this attribute will be ignored. You can use underscores.
ParameterData Type
keyString

Method Signature

Future unsetCustomAttribute(String key) async

Method Example

FlutterInsider.Instance.getCurrentUser().unsetCustomAttribute("key");

Add objects to a custom attribute

Use these methods to add, merge, and remove objects in an Array of Objects custom attribute of the current user. Define the attribute in the panel first; see Create an Array of Objects Attribute.

Rules for object values:

  • Object keys must match ^[a-z][0-9a-z_]*$. Invalid keys are dropped and named in a console warning; the rest of the call is still sent.
  • An attribute or parameter key that is empty, whitespace-only, or does not match the same pattern is refused with a console warning.
  • Values can be String, int, double, bool, DateTime, a List or Set of strings or numbers, or a nested Map<String, Object>.
  • A string longer than 500 characters, a null value, and a NaN or infinite number are dropped and named in a single console warning per call.
  • A nested map can hold only plain values; a map inside a nested map is dropped with its key and named in the console warning. For example, {'a': {'b': 1}} is sent as is, while in {'a': {'b': {'c': 1}, 'd': 2}} 'b' is dropped and 'a' is sent with 'd' only.
  • An object that keeps no key is dropped.

Call addObjectsToCustomAttribute to add a list of objects to an Array of Objects attribute of the current user.

ParameterData TypeDescription
keyStringKey of the Array of Objects attribute defined in the panel.
objectsList<Map<String, Object>>The objects to add.

Method Signature

FlutterInsiderUser addObjectsToCustomAttribute(
    String key, List<Map<String, Object>> objects)

Method Example

import 'package:flutter_insider/flutter_insider.dart';

FlutterInsider.Instance.getCurrentUser()?.addObjectsToCustomAttribute(
  'c_favorite_products',
  [
    {'sku': 'SKU-1', 'qty': 2},
    {'sku': 'SKU-2', 'qty': 1},
  ],
);

An empty list, or a list in which no object keeps a key, is not sent; a console warning says so.


Merge values into matching objects

Call mergeObjectsInCustomAttribute to merge value into every object of the attribute that matches match.

ParameterData TypeDescription
keyStringKey of the Array of Objects attribute defined in the panel.
matchMap<String, Object>Fields that select the objects to update.
valueMap<String, Object>Fields to merge into each matching object.

Method Signature

FlutterInsiderUser mergeObjectsInCustomAttribute(
    String key, Map<String, Object> match, Map<String, Object> value)

Method Example

import 'package:flutter_insider/flutter_insider.dart';

FlutterInsider.Instance.getCurrentUser()?.mergeObjectsInCustomAttribute(
  'c_favorite_products',
  {'sku': 'SKU-1'},
  {'qty': 3},
);

An empty match, or a value that is empty or keeps no key, is refused with a console warning. If any entry of match cannot be sent, the call is refused, so it never updates more objects than you meant.


Remove objects from a custom attribute

Call removeObjectsFromCustomAttribute with a match to remove the objects of the attribute that match it. Call it with the key only to remove every object.

ParameterData TypeDescription
keyStringKey of the Array of Objects attribute defined in the panel.
matchMap<String, Object>?Optional. Fields that select the objects to remove.

Method Signature

FlutterInsiderUser removeObjectsFromCustomAttribute(String key,
    [Map<String, Object>? match])

Method Example

import 'package:flutter_insider/flutter_insider.dart';

FlutterInsider.Instance.getCurrentUser()?.removeObjectsFromCustomAttribute(
  'c_favorite_products',
  {'sku': 'SKU-2'},
);

Calling removeObjectsFromCustomAttribute(key) without a match removes every object and cannot be undone; a console warning says so.

An empty match or an explicit null is refused. If any entry of match cannot be sent, the call is refused, so it never removes more objects than you meant.

For troubleshooting, refer to Why cannot we trigger the login method a second time in an active session, Confusion of attributes among users after login