Connect Reverse ETL Source to Braze Audiences
Beta
Configure a Reverse ETL source with your Braze Audiences destination.
This guide takes you through the steps to connect a Reverse ETL source to your Braze Audiences destination.

You can connect multiple Reverse ETL sources (and audience syncs) to the same Braze account. Each sync uses its own custom attribute name.
Setup
- Set up and configure your Reverse ETL source.
- In the Overview tab of the source page, click Add destination > Create new destination. You can also select an already-configured destination here.
- From the list of destinations, select Braze Audiences and click Continue.
- Specify a unique name to identify this destination in RudderStack.
- In the Braze account section, click Select to choose an existing account. To add a new account, click Add account, and specify the following settings:
| Setting | Description |
|---|
| Account Name | Specify a unique account name. |
| REST API Key | Enter your Braze REST API key with permission to call users.track / users.track.bulk. Braze’s /users/track/bulk endpoint may require early access. Confirm access with your Braze account team before using it in production.
|
| Data Center | Select the Braze data center for your workspace (same options as the event-stream Braze destination — for example US-01 … US-08, EU-01 … EU-03, AU-01). Match the region shown in your Braze dashboard URL. |
- Proceed to configure the mapping settings.
Mapping settings
This section lists the settings to correctly map data from your Reverse ETL source to the Braze Audiences destination.
Audience attribute name
Enter the Braze custom attribute name that represents membership in this audience (for example, rs_high_value_customers).
- Edit the auto-suggested sanitized name from your audience or connection name before saving if needed.
- Allowed characters: letters, numbers, and underscores (
/^[a-zA-Z0-9_]+$/), maximum length 255. - Do not use
external_id — that name is reserved. - The attribute is not selected from a Braze catalog. Braze creates the custom attribute on the first successful write.
Sync mode
RudderStack supports only Mirror mode for this integration. There is no sync-mode selector in the UI.
Map identifiers
Map exactly one warehouse column to Braze external_id. user_alias and additional identifier rows are not supported for this destination.
Sync settings
RudderStack determines how and when to run a sync based on the sync schedule you set for your Reverse ETL connection.
| Schedule type | Description |
|---|
| Basic | Run syncs at a given time interval and specified time (in UTC). |
| CRON | Run syncs based on a specified CRON expression (in UTC). |
| Manual | Run syncs manually. |
Sync observability settings
| Setting | Description |
|---|
| Retain sync logs | This setting is toggled on by default and instructs RudderStack to store the sync logs in your warehouse. You can also configure the below settings:
| Setting | Description |
|---|
| Sync log retention | Specify the retention period of the sync logs in your warehouse.
If you set it to 1, then RudderStack deletes any sync log older than a day (in UTC time). | | Snapshot table retention | Specify the number of snapshot tables to retain. |
|
| Retry failed records | This setting is toggled on by default and causes RudderStack to continually retry sending the failed records. |

Storing sync logs and snapshot tables may incur additional warehouse costs.
How membership is written to Braze
In mirror mode, audience membership changes map to boolean custom-attribute updates via Braze POST /users/track/bulk:
| Action | Braze custom attribute value |
|---|
| Insert or update | true (user is in the audience) |
| Delete | false (user left the audience) Leaving the audience sets the attribute to false. It does not delete the custom attribute key from the Braze profile.
|
Note that:
- Requests are batched (up to 1000 attribute updates per bulk request, subject to Braze payload limits).
- One Braze account can back many syncs; each sync should use a different custom attribute name.
Identifier validation
Before sending data to Braze, each row is validated:
| Identifier | Validation |
|---|
external_id | Must be a non-empty string or finite number after trim. Missing, empty, whitespace-only, or non-scalar values are not sent. |
Rows with no valid identifier are skipped and reported as failed records in the sync report. The sync completes with failures rather than stopping entirely.
FAQ
Where can I find the Braze REST API key?
In the Braze dashboard, go to Settings > APIs and Identifiers > API Keys, and create or copy a REST API key with track/bulk permissions.
For more information, see Braze REST API key permissions and the event-stream Braze setup guide.
How is Braze Audiences different from the Braze destination?
| Braze (event stream) | Braze Audiences |
|---|
| Typical use | Tracks, identifies, pages, screens | Audience / Reverse ETL membership |
| Payload | Event stream messages | record membership updates |
| Braze surface | Events and profile traits | Boolean custom attribute per sync |
| Sync mode | N/A (streaming) | Mirror only |
Does leaving the audience remove the custom attribute in Braze?
No. Delete / leave actions set the attribute to false. The key remains on the profile so campaigns and segments can still target “not in audience”.
Why did Test connection succeed with a 400 from Braze?
Credential checks may call Braze with an empty attributes payload. Braze can respond with 400 (No data parsed) for a valid API key. Treat that as a successful credential check. A 401 means the key or data center is wrong.
Questions? We're here to help.
Join the RudderStack Slack community or email us for support