Braze

Use GrowthLoop audiences and warehouse data for Braze messaging.

Connect this destination to export audience membership, send API-triggered email campaigns from journeys, or write warehouse rows onto Braze profiles, events, purchases, or subscription groups, for use in Braze campaigns and Canvas.

This destination writes to your Braze account and is a good fit when you want to:

  • Target customers in Braze with GrowthLoop audiences
  • Send a launched API-triggered email campaign from a GrowthLoop journey
  • Sync a small set of personalization attributes, events, purchases, or subscription group states in Braze

This maps to GrowthLoop Audiences, Journeys, and Syncs:

Use it forAudiencesJourneysSyncs
Sending GrowthLoop audiences as a Braze custom attribute
Sending an API-triggered email campaign
Creating or updating Braze profiles, events, purchases, or subscription groups from a warehouse table

For campaign and Canvas targeting patterns after an export, see Integrate with Braze.

Prerequisites

Make sure you have:

  • A Braze account with permission to create a REST API key.
  • A Braze REST API key. In Braze, go to SettingsAPIs and Identifiers, click Create API Key, and name it something your team will recognize, such as GrowthLoop. Grant User Data, Purchases, and Events. If you will trigger email from journeys, also grant campaigns.list, campaigns.details, and campaigns.trigger.send. Copy the Identifier.
  • Your Braze REST endpoint (API URL). In Braze, open Settings and find your SDK Endpoint. Then use the matching REST endpoint from Braze endpoint documentation. For example, if your dashboard is https://dashboard-03.braze.com, your API URL is https://rest.iad-03.braze.com.
Braze developer console where you create a REST API key
Braze manage settings showing the SDK endpoint used to find the REST API URL
📘

Note

You do not need to whitelist GrowthLoop IPs when you create the API key.

Set up Braze as a destination

  1. In GrowthLoop, click the Destinations tab on the left sidebar.
  2. Click New Destination in the top right corner.
  3. Search for Braze and click Add Braze.
Select Destination modal showing Braze
  1. Enter the required information, then click Create.
Braze destination setup form
FieldDescription
Destination NameName this destination in GrowthLoop. Use a name so your team recognizes its purpose, like "Braze Email".
Sync FrequencySet the default export frequency (for example, daily or weekly). You can override this setting for individual exports and syncs.
API KeyThe Identifier of the REST API key you've created in Braze.
API URLThe full REST endpoint for your Braze instance, for example https://rest.iad-03.braze.com.
Prefix for Personalization Fields (optional)Prefix GrowthLoop adds to personalization fields it sends to Braze. Leave this blank for no prefix. If you set one, it must start with a letter and use up to 5 letters or numbers. The default value is fw.

GrowthLoop validates the credentials. Braze then appears in your list of connected destinations.

Export to Braze

From within GrowthLoop, export from an audience or from a journey Destination Node. See Export an audience or Build a journey if you need more information on these steps.

After building or selecting an audience, click Export, then search for Braze. In a journey, add a Destination Node under Email and select Braze.

To send audience membership only, keep the export action on Add to List Only if that option is shown. To send an API-triggered email campaign instead, see Send email from a journey.

Map contact identifiers

Map at least one identifier.

Match fieldDescription
External IDThe user ID Braze already uses for this contact.
User AliasA Braze user alias.
Braze IDThe Braze-generated profile ID.

You can also map custom attributes from the audience or from the journey as additional fields.

Configure the export

This is where you set the campaign type and schedule for audience exports. On a journey Destination Node, you set timing on the journey canvas.

SettingAudience exportJourney Destination Node
Export NameDefaults to the audience name. Braze uses this as the custom attribute you filter on.Required. This becomes the custom attribute name in Braze.
Campaign typeChoose a one-time or ongoing export.The journey schedule controls when the journey runs and contacts are sent to Braze.
ScheduleSet frequency, start date, end date, and days of the week.Users reach this node when the journey runs. Add a Delay Node or set Criteria Evaluation to control timing.
Personalization fieldsOptional. Map warehouse fields you want on the Braze profile.Optional. Use these when you are updating profile data, not when you only need membership.

Export behavior

This is what GrowthLoop writes when you export an audience.

BehaviorWhat happens
What GrowthLoop writesA Braze custom attribute for membership, optional profile fields, or an API-triggered campaign send. Direction is GrowthLoop → Braze.
When it runsGrowthLoop sends the export as a batch on the next successful run. An export that starts Now runs within about 15 minutes. Journeys send exports on demand when users reach the Destination Node.
Audience membershipGrowthLoop sends membership as a Braze custom attribute named after your export.
Personalization fieldsSupported. GrowthLoop can prefix those field names with Prefix for Personalization Fields.
Add to List OnlyAdds or updates audience membership. It does not send a Braze campaign.
Send EmailSends the selected API-triggered campaign for each user who reaches the journey node. See Send email from a journey.
Export countsEach audience export run reports Added, Removed, and Rejected in GrowthLoop.
One-time exportsGrowthLoop writes current membership once and does not remove anyone later.
Ongoing adds and removalsOngoing exports send contacts who enter the audience and remove contacts who leave. GrowthLoop clears the custom attribute. It does not delete the Braze profile.

Send email from a journey

You can send a Braze API-triggered email campaign from a journey Destination Node when campaign triggers are enabled for your organization. See Build a journey if you need more information on these steps.

  1. Add a Destination Node and select your Braze destination.
  2. Select Send Email as the export action.
  3. Map Recipient's Email.
  4. Choose the Braze campaign in Email Template. GrowthLoop lists API-triggered email campaigns, not content-library templates.
  5. Map Template Variables that GrowthLoop loads from the campaign message.
  6. Send a test email before you publish.

For GrowthLoop to expose template variables, the campaign must use Braze Liquid in this form:

{{api_trigger_properties.${first_name}}}

Send behavior

BehaviorWhat happens
TriggerGrowthLoop triggers the selected campaign for each user who reaches the Destination Node.
Campaigns listedGrowthLoop lists API-triggered email campaigns only. Scheduled campaigns, action-based campaigns, and content-library templates do not appear.
Launch stateThe campaign must be launched in Braze. Draft campaigns do not send.
Template variablesGrowthLoop loads api_trigger_properties from the subject, preheader, and body. Profile attributes such as {{${first_name}}} are not exposed as GrowthLoop template variables.
APIGrowthLoop sends through Braze's /campaigns/trigger/send endpoint with the campaign ID and mapped trigger_properties.
Audience membershipSend Email does not create a Braze custom attribute. Use Add to List Only to export membership.
API keyThis workflow needs campaigns.list, campaigns.details, and campaigns.trigger.send.

Create a sync in GrowthLoop

Create a sync from a warehouse table to write rows onto Braze profiles, events, purchases, or subscription groups. See Syncs for information on how to complete those steps.

Select an Object Type:

ObjectUse it forSync modes
EventCustom events such as clicks or page viewsInsert
PurchaseTransaction recordsInsert
Profile Attribute (sometimes labeled User Attribute)Personalization fields on the Braze profileInsert, Update, or Upsert
Subscription Group StatusSubscription group state for a userUpdate

When you configure the sync:

  • Connection: Select your Braze destination.
  • Object Type: Select an object from the table above.
  • Update Rule: For Event and Purchase, choose Insert. For Profile Attribute, choose Insert, Update, or Upsert. For Subscription Group Status, choose Update. See Sync behavior.
  • Match Field: Map a stable identity such as external_id, email, or phone.

Only sync attributes you use often in message personalization. We recommend starting with at most 20 attributes.

Event fields

Destination fieldDescription
Event NameFollow Braze event naming conventions
TimeWhen the event occurred, in ISO 8601 or yyyy-MM-dd'T'HH:mm:ss:SSSZ

Purchase fields

Destination fieldDescription
Product IDProduct identifier, for example the product name
PriceAmount paid
TimeWhen the purchase occurred
CurrencyCurrency code, for example USD

Profile Attribute fields

Map at least one profile field, such as Country Code.

Destination fieldDescription
Country CodeCountry
EmailEmail address
Email SubscribeEmail subscription status
DOBDate of birth
GenderGender
LanguageLanguage
First NameFirst name
Last NameLast name
PhonePhone number

You can sync JSON objects and object arrays to Braze profile attributes. Store the warehouse value as a string. GrowthLoop converts that string to JSON during export.

In Braze, create the custom attribute first. Choose Object for a single JSON object, or Object Array for an array of JSON objects.

Example warehouse values:

  • Single JSON object: '{"city":"Abilene","state":"Texas","zip_code":79605}'
  • Array of JSON objects: '[{"city":"Abilene","state":"Texas"}, {"city":"Austin","state":"Texas"}]'

Object or object-array attributes created in Braze do not appear as selectable destination values. Enter the attribute name exactly as it appears in Braze, then map the source column. The name may appear as undefined in the dropdown. That does not block the sync.

Subscription Group Status fields

Destination fieldDescription
Subscription Group IDThe Braze subscription group to update
Subscription StateThe subscription state for that user
IdentifierAt least one of External ID, Email, or Phone

After you map fields, click Update Sync. Choose Updates Only the first time. Use Back-fill only when you add fields to an existing sync and need those fields on events already sent. Back-fill can be expensive in your data warehouse.

Enable the sync with the toggle at the top of the page.

Sync behavior

This is what GrowthLoop writes when you sync to Braze.

BehaviorWhat happens
When it runsGrowthLoop sends the sync as a batch on the next successful run.
EventInsert only. GrowthLoop adds new events.
PurchaseInsert only. GrowthLoop adds new purchase records.
Profile AttributeInsert, Update, or Upsert.
Subscription Group StatusUpdates subscription state for the mapped group.
JSON attributesGrowthLoop converts a string column to a JSON object or object array.
DeletesGrowthLoop does not delete Braze profiles, events, or purchases.
Missing identifierRows without the required identifier fail.

Confirm the export was successful

When the run finishes, confirm you can use the data in Braze.

  • Audience export: In Segments, add a Custom Attributes filter and select the export name with is True.
Braze segment filter showing a GrowthLoop audience as a custom attribute
  • Journey Destination Node: In Segments, add a Custom Attributes filter and select the export name with is True. Look up a contact who reached the node.
  • Send Email: Confirm Braze sent the selected API-triggered campaign.
  • Event sync: Search for the contact in Braze AudienceSearch Users and review Custom Events.
Braze user profile showing custom events from a GrowthLoop sync
  • Purchase sync: Search for the contact and review the purchase.
  • Profile Attribute sync: Search for the contact and check the mapped attributes.
  • Subscription Group Status sync: Confirm the subscription state on the mapped group.

In GrowthLoop, review counts on the audience Exports tab, open the Activity tab on the journey Destination Node, or confirm the sync appears in the Syncs table. See Export an audience, Monitor a journey, or Syncs for more information.

Congrats on successfully exporting to Braze!

Troubleshooting

These are the issues we see most often. You can always email us at [email protected] for help.

ProblemCauseResolution
Connection fails to validateThe API key Identifier or REST endpoint is wrongPaste the API key Identifier and the REST endpoint, not the SDK endpoint.
An audience is missing in BrazeThe segment filter is not looking at the custom attributeFilter Custom Attributes for the GrowthLoop export name with is True.
A campaign does not appear under Send EmailThe campaign is not API-triggered, or it is still a draftConfirm it is a launched API-Triggered email campaign.
Template variables are missingThe campaign does not use api_trigger_propertiesUse {{api_trigger_properties.${variable_name}}} in the Braze message.
A JSON attribute will not mapObject attributes do not appear in the dropdownType the Braze attribute name instead of choosing it from the dropdown.
Subscription group rows failA required field is missingMap Subscription Group ID, Subscription State, and at least one identifier.

What’s Next

Use GrowthLoop audiences in Braze campaigns and Canvas

Did this page help you?