# Sync Audiences to Braze Audiences


This guide lists the steps to configure Braze Audiences as a destination in RudderStack and sync the created audiences to it.

{{< info >}}
**Braze Audiences** is separate from the event-stream [Braze]({{< ref "destinations/streaming-destinations/braze/" >}}) destination. Membership is written as a boolean custom attribute on each Braze user profile.
{{< /info >}}

## Prerequisites

- Obtain a Braze [REST API key](#where-can-i-find-the-braze-rest-api-key) with permission to call `users.track` / `users.track.bulk`.
- Confirm access to Braze's [`/users/track/bulk`](https://www.braze.com/docs/api/endpoints/user_data/post_user_track_bulk/) endpoint (may require early access from Braze).
- Identify your Braze [data center](https://www.braze.com/docs/user_guide/data/data_centers/#list-of-data-centers) (match the dashboard URL region).

## Setup

1. Set up an audience in RudderStack using the [Audience Builder]({{< ref "audiences/audience-builder/create-audience.md" >}}).
2. Go to the **Syncs** tab of the audience page and click **Add sync**. Then, select **Braze Audiences**.
3. Click **New destination** — you can also select an already-configured destination here.
4. Specify a unique name to identify this destination in RudderStack.
5. 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 | <div style="width: 350px;">Description</div> |
| :----| :-----|
| Account Name | Specify a unique account name. |
| REST API Key | Enter your Braze REST API key with track/bulk permissions. |
| Data Center | Select the Braze data center for your workspace (for example `US-03`). |

6. Proceed to configure the mapping settings.

## Configure sync

This section lists the settings to correctly configure your audience syncs to the Braze Audiences destination.

### Audience attribute name

Enter the Braze custom attribute name for this sync (for example, `rs_loyalty_score_gt_100`).

- Edit the auto-suggested sanitized name from the audience name if needed.
- Allowed characters: letters, numbers, and underscores only; maximum **255** characters.
- Do not use `external_id` (reserved).
- Braze creates the attribute on first write — there is no catalog picker.

{{< success >}}
Reuse one Braze account across many syncs. Give each sync a **different** attribute name so membership flags do not overwrite each other.
{{< /success >}}

### Sync mode

RudderStack supports only [Mirror mode]({{< ref "data-pipelines/reverse-etl/developer-guides/sync-modes.md#mirror-mode" >}}) for this integration.

### Map identifiers

Map a warehouse column to Braze **`external_id`**. Only this identifier is supported.

## Sync settings

{{< customreadfile "/includes/audiences/sync-settings.md" >}}

## Enable sync

{{< customreadfile "/includes/audiences/enable-sync.md" >}}

## How membership is written to Braze

| Action | <div style="width: 350px;">Braze custom attribute value</div> |
| :---- | :---- |
| Insert or update | `true` |
| Delete | `false` {{< warning >}}The custom attribute key stays on the profile; only the value becomes `false`.{{< /warning >}} |

Each sync calls Braze [`POST /users/track/bulk`](https://www.braze.com/docs/api/endpoints/user_data/post_user_track_bulk/) (batched up to **1000** users per request).

#### Identifier validation

| Identifier | <div style="width: 350px;">Validation</div> |
| :---- | :---- |
| `external_id` | Must be a non-empty string or finite number after trim. |

Rows without a valid `external_id` are reported as **failed records**. Invalid values are not sent to Braze.

## FAQ

#### Where can I find the Braze REST API key?

In Braze, go to **Settings** > **APIs and Identifiers** > **API Keys**. See also the [Braze setup guide]({{< ref "destinations/streaming-destinations/braze/setup-guide.md#where-can-i-find-the-braze-rest-api-key" >}}).

#### How is this different from the Braze event-stream destination?

Use [Braze]({{< ref "destinations/streaming-destinations/braze/" >}}) for streaming events and profile updates. Use **Braze Audiences** only for audience / Reverse ETL membership as a boolean custom attribute.

#### Does removing a user from the audience delete the attribute in Braze?

No. Leave / delete sets the attribute to `false`. The key remains on the profile.

<br />

