Braze Device Mode Integration

Send events to Braze in RudderStack device mode.

After you have successfully instrumented Braze as a destination in RudderStack, follow this guide to correctly send your events to Braze in device mode.

Add Braze integration

warning
Make sure to add the Braze integration to your project before sending events to Braze in device mode.

Depending on your integration platform, follow these steps:

Identify

You can use the identify call to identify a user in Braze in any of the below cases:

  • When the user registers to the app for the first time.
  • When they log into their app.
  • When they update their information.

A sample identify call is shown below:

rudderanalytics.identify("1hKOmRA4GRlm", {
  email: "alex@example.com",
  name: "Alex Keener"
});

Set custom user ID (externalId)

In mobile device mode, that is, when using Android, iOS, React Native, or Flutter as source, you need to pass externalId in your identify events. Otherwise, Braze uses userId to identify the user.

info
Braze gives first preference to the externalId field in the identify event to identify the user. If externalId is absent, it falls back to the userId field.

The following code snippet shows how to add an externalId to your identify event using the React Native SDK:

const options = {
  externalIds: [
    {
      id: "<your_external_id>",
      type: "brazeExternalId",
    },
  ],
}
rudderClient.identify(
  "1hKOmRA4GRlm",
  {
    email: "alex@example.com",
    gender: "male",
  },
  options
)
warning
Make sure to send the identify event containing the externalId before sending any subsequent track events. That way, RudderStack is able to successfully persist the externalId information in all the future events.

Delete user

You can delete a user in Braze using the Suppression with Delete regulation of the RudderStack User Suppression API.

info

Note that:

A sample regulation request body for deleting a user in Braze is shown:

{
  "regulationType": "suppress_with_delete",
  "destinationIds": ["2FIKkByqn37FhzczP23eZmURciA"],
  "users": [
    {
      "userId": "1hKOmRA4GRlm",
      "<customKey>": "<customValue>"
    }
  ]
}

Track

The track event lets you record the customer events along with any associated properties.

A sample track call is shown below:

rudderanalytics.track("Product Added", {
  numberOfRatings: "12",
  name: "item 1"
});

Order Completed

When you use the track call for an Order Completed event, RudderStack sends the product information present in the event to Braze as purchases.

A sample Order Completed event is shown:

rudderanalytics.track("Order Completed", {
  userId: "1hKOmRA4GRlm",
  currency: "USD",
  products: [
    {
      product_id: "123454387",
      name: "Game",
      price: 15.99
    }
  ]
});

Page

The page event lets you record your website’s page views, with the additional relevant information about the viewed page.

A sample page call is as shown:

rudderanalytics.page("Cart", "Cart Viewed", {
  path: "/cart",
  referrer: "test.com",
  search: "term",
  title: "test_item",
  url: "http://test.in"
});

Delta management for identify and track calls

If you are sending events to Braze in device mode, you can save costs by deduplicating your identify calls. To do so, enable the Deduplicate Traits dashboard setting. RudderStack then sends only the changed or modified attributes (traits) to Braze.

info
RudderStack recommends reviewing Braze’s data points policy to fully understand how this functionality can help you avoid data overages.

Advanced features

This section covers some advanced Braze operations that you can perform using RudderStack.

Send push notification events

Depending on your iOS SDK version, follow these steps to send push notification events to Braze:

Send in-app message events

info
This feature is available in the iOS SDK v1 device mode integration starting from version 1.4.0.
  1. Add the following line to your Podfile for Braze IAM support:
pod 'BrazeUI'
  1. Navigate to your Xcode app project directory and run pod install.
  2. Import the BrazeUI SDK in your AppDelegate.m file:
@import BrazeUI;
  1. Add a static variable to your AppDelegate.m file to keep a reference to the Braze instance throughout your app’s lifetime:
static Braze *braze;
  1. Add the following code in your AppDelegate.m file just after the RudderStack iOS SDK initialization snippet:
  1. Add the configureIAM method in the AppDelegate.m file:

Questions? Contact us by email or on Slack