<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RudderStack Docs – Braze Audiences</title><link>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/</link><description>Recent content in Braze Audiences on RudderStack Docs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/index.xml" rel="self" type="application/rss+xml"/><item><title>Destinations: Connect Reverse ETL Source to Braze Audiences</title><link>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/</guid><description>
&lt;p>This guide takes you through the steps to connect a &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/" >Reverse ETL source&lt;/a> to your Braze Audiences destination.&lt;/p>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/tick.svg loading="lazy" alt="success" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">
You can connect multiple Reverse ETL sources (and audience syncs) to the same Braze account. Each sync uses its own custom attribute name.
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="setup" data-heading="Setup" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h2 id="setup">Setup&lt;/h2>&lt;ol>
&lt;li>Set up and configure your Reverse ETL source.&lt;/li>
&lt;li>In the &lt;strong>Overview&lt;/strong> tab of the source page, click &lt;strong>Add destination&lt;/strong> &amp;gt; &lt;strong>Create new destination&lt;/strong>. You can also select an already-configured destination here.&lt;/li>
&lt;li>From the list of destinations, select &lt;strong>Braze Audiences&lt;/strong> and click &lt;strong>Continue&lt;/strong>.&lt;/li>
&lt;li>Specify a unique name to identify this destination in RudderStack.&lt;/li>
&lt;li>In the &lt;strong>Braze account&lt;/strong> section, click &lt;strong>Select&lt;/strong> to choose an existing account. To add a new account, click &lt;strong>Add account&lt;/strong>, and specify the following settings:&lt;/li>
&lt;/ol>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Setting&lt;/th>
&lt;th style="text-align:left">&lt;div style="width: 350px;">Description&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Account Name&lt;/td>
&lt;td style="text-align:left">Specify a unique account name.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">REST API Key&lt;/td>
&lt;td style="text-align:left">Enter your Braze &lt;a href="https://www.braze.com/docs/api/basics/#rest-api-key-permissions" >REST API key&lt;/a> with permission to call &lt;code>users.track&lt;/code> / &lt;code>users.track.bulk&lt;/code>. &lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Braze&amp;rsquo;s &lt;code>/users/track/bulk&lt;/code> endpoint may require &lt;a href="https://www.braze.com/docs/api/endpoints/user_data/post_user_track_bulk/" >early access&lt;/a>. Confirm access with your Braze account team before using it in production.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Data Center&lt;/td>
&lt;td style="text-align:left">Select the &lt;a href="https://www.braze.com/docs/user_guide/data/data_centers/#list-of-data-centers" >Braze data center&lt;/a> for your workspace (same options as the event-stream Braze destination — for example &lt;code>US-01&lt;/code> … &lt;code>US-08&lt;/code>, &lt;code>EU-01&lt;/code> … &lt;code>EU-03&lt;/code>, &lt;code>AU-01&lt;/code>). Match the region shown in your Braze dashboard URL.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;ol start="6">
&lt;li>Proceed to configure the mapping settings.&lt;/li>
&lt;/ol>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="mapping-settings" data-heading="Mapping settings" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h2 id="mapping-settings">Mapping settings&lt;/h2>&lt;p>This section lists the settings to correctly map data from your Reverse ETL source to the Braze Audiences destination.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="audience-attribute-name" data-heading="Audience attribute name" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h3 id="audience-attribute-name">Audience attribute name&lt;/h3>&lt;p>Enter the Braze &lt;strong>custom attribute&lt;/strong> name that represents membership in this audience (for example, &lt;code>rs_high_value_customers&lt;/code>).&lt;/p>
&lt;ul>
&lt;li>Edit the auto-suggested sanitized name from your audience or connection name before saving if needed.&lt;/li>
&lt;li>Allowed characters: letters, numbers, and underscores (&lt;code>/^[a-zA-Z0-9_]+$/&lt;/code>), maximum length &lt;strong>255&lt;/strong>.&lt;/li>
&lt;li>Do not use &lt;code>external_id&lt;/code> — that name is reserved.&lt;/li>
&lt;li>The attribute is not selected from a Braze catalog. Braze creates the custom attribute on the first successful write.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="sync-mode" data-heading="Sync mode" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h3 id="sync-mode">Sync mode&lt;/h3>&lt;p>RudderStack supports only &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#mirror-mode" >Mirror mode&lt;/a> for this integration. There is no sync-mode selector in the UI.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="map-identifiers" data-heading="Map identifiers" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h3 id="map-identifiers">Map identifiers&lt;/h3>&lt;p>Map exactly one warehouse column to Braze &lt;strong>&lt;code>external_id&lt;/code>&lt;/strong>. &lt;code>user_alias&lt;/code> and additional identifier rows are not supported for this destination.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="sync-settings" data-heading="Sync settings" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h2 id="sync-settings">Sync settings&lt;/h2>
&lt;p>RudderStack determines how and when to run a sync based on the &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-schedule-settings/" >sync schedule&lt;/a> you set for your Reverse ETL connection.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Schedule type&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Basic&lt;/td>
&lt;td style="text-align:left">Run syncs at a given time interval and specified time (in UTC).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">CRON&lt;/td>
&lt;td style="text-align:left">Run syncs based on a specified CRON expression (in UTC).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Manual&lt;/td>
&lt;td style="text-align:left">Run syncs manually.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="sync-observability-settings" data-heading="Sync observability settings" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h4 id="sync-observability-settings">Sync observability settings&lt;/h4>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Setting&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Retain sync logs&lt;/td>
&lt;td style="text-align:left">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: &lt;br />&lt;br />&lt;table>&lt;tr>&lt;th width="20%">Setting&lt;/th>&lt;th width="80%">Description&lt;/th>&lt;/tr>&lt;tr>&lt;td>Sync log retention&lt;/td>&lt;td>Specify the retention period of the &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#sync-logs" >sync logs&lt;/a> in your warehouse. &lt;br />&lt;br />If you set it to 1, then RudderStack deletes any sync log older than a day (in UTC time). &lt;/td>&lt;/tr>&lt;tr>&lt;td>Snapshot table retention&lt;/td>&lt;td>Specify the number of &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#snapshot-table-schema" >snapshot tables&lt;/a> to retain. &lt;/td>&lt;/tr>&lt;/table>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Retry failed records&lt;/td>
&lt;td style="text-align:left">This setting is toggled on by default and causes RudderStack to continually &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#retry-failed-records" >retry sending the failed records&lt;/a>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/warning.svg alt="warning" loading="lazy" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Storing sync logs and snapshot tables may incur additional warehouse costs.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-membership-is-written-to-braze" data-heading="How membership is written to Braze" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h2 id="how-membership-is-written-to-braze">How membership is written to Braze&lt;/h2>&lt;p>In mirror mode, audience membership changes map to boolean custom-attribute updates via Braze &lt;a href="https://www.braze.com/docs/api/endpoints/user_data/post_user_track_bulk/" >&lt;code>POST /users/track/bulk&lt;/code>&lt;/a>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Action&lt;/th>
&lt;th style="text-align:left">&lt;div style="width: 350px;">Braze custom attribute value&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Insert or update&lt;/td>
&lt;td style="text-align:left">&lt;code>true&lt;/code> (user is in the audience)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Delete&lt;/td>
&lt;td style="text-align:left">&lt;code>false&lt;/code> (user left the audience) &lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/warning.svg alt="warning" loading="lazy" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Leaving the audience sets the attribute to &lt;strong>&lt;code>false&lt;/code>&lt;/strong>. It does &lt;strong>not&lt;/strong> delete the custom attribute key from the Braze profile.&lt;/div>
&lt;/div>
&lt;/blockquote>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Note that:&lt;/p>
&lt;ul>
&lt;li>Requests are batched (up to &lt;strong>1000&lt;/strong> attribute updates per bulk request, subject to Braze payload limits).&lt;/li>
&lt;li>One Braze account can back many syncs; each sync should use a &lt;strong>different&lt;/strong> custom attribute name.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="identifier-validation" data-heading="Identifier validation" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h4 id="identifier-validation">Identifier validation&lt;/h4>&lt;p>Before sending data to Braze, each row is validated:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Identifier&lt;/th>
&lt;th style="text-align:left">&lt;div style="width: 350px;">Validation&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>external_id&lt;/code>&lt;/td>
&lt;td style="text-align:left">Must be a non-empty string or finite number after trim. Missing, empty, whitespace-only, or non-scalar values are not sent.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Rows with no valid identifier are skipped and reported as &lt;strong>failed records&lt;/strong> in the sync report. The sync completes with failures rather than stopping entirely.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="faq" data-heading="FAQ" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h2 id="faq">FAQ&lt;/h2>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="where-can-i-find-the-braze-rest-api-key" data-heading="Where can I find the Braze REST API key?" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h4 id="where-can-i-find-the-braze-rest-api-key">Where can I find the Braze REST API key?&lt;/h4>&lt;p>In the Braze dashboard, go to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>APIs and Identifiers&lt;/strong> &amp;gt; &lt;strong>API Keys&lt;/strong>, and create or copy a REST API key with track/bulk permissions.&lt;/p>
&lt;p>For more information, see &lt;a href="https://www.braze.com/docs/api/basics/#rest-api-key-permissions" >Braze REST API key permissions&lt;/a> and the event-stream &lt;a href="https://www.rudderstack.com/docs/destinations/streaming-destinations/braze/setup-guide/#where-can-i-find-the-braze-rest-api-key" >Braze setup guide&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-is-braze-audiences-different-from-the-braze-destination" data-heading="How is Braze Audiences different from the Braze destination?" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h4 id="how-is-braze-audiences-different-from-the-braze-destination">How is Braze Audiences different from the Braze destination?&lt;/h4>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">&lt;/th>
&lt;th style="text-align:left">&lt;strong>Braze&lt;/strong> (event stream)&lt;/th>
&lt;th style="text-align:left">&lt;strong>Braze Audiences&lt;/strong>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Typical use&lt;/td>
&lt;td style="text-align:left">Tracks, identifies, pages, screens&lt;/td>
&lt;td style="text-align:left">Audience / Reverse ETL membership&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Payload&lt;/td>
&lt;td style="text-align:left">Event stream messages&lt;/td>
&lt;td style="text-align:left">&lt;code>record&lt;/code> membership updates&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Braze surface&lt;/td>
&lt;td style="text-align:left">Events and profile traits&lt;/td>
&lt;td style="text-align:left">Boolean &lt;strong>custom attribute&lt;/strong> per sync&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Sync mode&lt;/td>
&lt;td style="text-align:left">N/A (streaming)&lt;/td>
&lt;td style="text-align:left">Mirror only&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="does-leaving-the-audience-remove-the-custom-attribute-in-braze" data-heading="Does leaving the audience remove the custom attribute in Braze?" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h4 id="does-leaving-the-audience-remove-the-custom-attribute-in-braze">Does leaving the audience remove the custom attribute in Braze?&lt;/h4>&lt;p>No. Delete / leave actions set the attribute to &lt;code>false&lt;/code>. The key remains on the profile so campaigns and segments can still target &amp;ldquo;not in audience&amp;rdquo;.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-did-test-connection-succeed-with-a-400-from-braze" data-heading="Why did Test connection succeed with a 400 from Braze?" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/braze-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Braze Audiences" -->
&lt;h4 id="why-did-test-connection-succeed-with-a-400-from-braze">Why did Test connection succeed with a 400 from Braze?&lt;/h4>&lt;p>Credential checks may call Braze with an empty attributes payload. Braze can respond with &lt;code>400&lt;/code> (&lt;strong>No data parsed&lt;/strong>) for a valid API key. Treat that as a successful credential check. A &lt;code>401&lt;/code> means the key or data center is wrong.&lt;/p>
&lt;br /></description></item></channel></rss>