Intercom custom action with custom attributes

Hello, I have a custom action that displays the Intercom messenger and I want to pass some fields from the user document as custom attributes in Intercom (for example "firstName" & userRole). I have tried with app state to generate the list but it does not work due to formatting.

  • Data values must be sent as JSON strings, numbers or booleans (true or false). We can’t accept object, nested hashes and array data formats.

Anyone with a solution?

Custom action:

import 'package:intercom_flutter/intercom_flutter.dart';

Future initIntercom(
  String userEmail,
  String? username,
  String? userId,
  List<String>? attributes,
) async {
  // display intercom messenger
  await Intercom.instance.initialize('APP ID',
      iosApiKey: 'API KEY',
      androidApiKey: 'API KEY');

  Intercom.instance.loginIdentifiedUser(email: userEmail);
  Intercom.instance.updateUser(
    email: userEmail,
    name: username,
    userId: userId,
    customAttributes: attributes != null
        ? Map.fromIterable(attributes,
            key: (attribute) => attribute, value: (_) => true)
        : null,
  );

  displayMessenger() {
    FFAppState().update(() {
      FFAppState().intercomStatus = true;
    });
    return Intercom.instance.displayMessenger();
  }

  displayMessenger();
}
2
14 replies