Skip to main content
Braze Integration
Updated over a week ago

Pre-requisites

Requirement

Description

Braze Account

A Braze Administrator account is needed.

Braze API User

A Braze API key 🔗 is required by charles to interact with your Braze account. The API keys needs to the following permissions: segments.list users.export.segment subscription.status.set subscription.status.get users.track

In charles

  1. Go to Settings > Integrations > Marketplace

  2. Find Braze and select Connect. A pop-up will appear

  3. Configure the connection using the Braze API key.

Once it’s successful, you should find Braze in the Connected apps section.

Configuring the features

Import Braze contacts into charles

1 - Select the segments you want to import

2 - Perform the field mapping

By default, we import the following fields from Braze into charles

Source (Field on Braze)

Destination (Field on charles)

First Name

Last Name

Last Name

Last Name

Phone

Phone Number

Email

Email Addresses

Limitations: - 500k contacts is the maximum size a segment should have for the import into charles - Currently, it is not possible to import additional custom properties.

Contact identification and unification logic

During the import we de-duplicate contacts based on the logic below:

4 - Opt-in export

Whenever contacts are imported and unified with existing contacts, we export potential opt-in/opt-out data to Braze

5 - Recurring import (coming soon)

After saving the configuration, we execute the import of contacts into charles. In addition to that, the import is triggered automatically every 12h.

Opt-in Export from charles to Braze

In addition to the opt-in/opt-out export after the contact import, there is also a real-time synchronization happening: Every time an end-user grants or withdraws an opt-in on charles, then we will send this information to Braze.

Configuration:

  1. Create a custom property in Braze.

    1. name: no hard requirement, for example, “WhatsApp opt-in”

    2. field type: text

  2. Select the field on page 3.

Set up an Braze canvas that triggers a charles flow

This use case involves two components that need to be configured: The canvas that sends events to charles on Braze and the charles flows.

Component 1 - Set up the Braze automation

1a - Create a Webhook template

Create the webhook present in Braze. Docs

Configure the Connection values as follows:

Field

Value

API endpoint URL

You can find it on the “Webhooks” page of the configuration settings

Header

key: api-key value: <REPLACE with value from the configuration settings>

Please configure the Data values as follows:

Event data: If you enable this, charles will receive the data of the event that triggered the webhook. This data can be used for personalizing WhatsApp messages.

Contact data:

  • external_id

  • email

  • phone

For the phone, select the property that you use for storing the mobile phone number on Braze. Please note that phone numbers must be in format +{Country Code}… or {Country Code}…, for a German number this would be +4915… or 4911111

ID, Email and Phone are used by charles to identify the end-user who for whom the charles flow needs to be triggered.

Given a webhook is sent for a contact that does not exist yet, then charles will create a new contact based on the phone and/or the email from the webhook and attach the event to it.

Additional Data:

  • event_name

The event name is used for identifying the charles flow to trigger.

All other settings are optional.

1b - Add a the charles webhook node to your canvas

  1. Open the program where you would like to use the Webhook node and insert it.

  2. Double-click the Webhook node and select the required charles configuration preset from the dropdown.

If the automation is triggered by an event and the automation program is configured to “Data of the triggering event is being sent”, then the event data will be available in charles flows.

Component 2 - Setting up the charles flow

  1. Create a new flow

  2. Select Braze trigger

  3. Payload configuration: Based on the properties in the event, create a payload.

    1. Example

{
"birthdate": "",
"discount_code": ""
}

Did this answer your question?