<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RudderStack Docs – Custom Audience</title><link>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/</link><description>Recent content in Custom Audience on RudderStack Docs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/index.xml" rel="self" type="application/rss+xml"/><item><title>Destinations: Connect Reverse ETL Source to Custom Audience</title><link>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-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/custom-audience/connect-retl-source/</guid><description>
&lt;blockquote class="announcement">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/announcement.svg loading="lazy" alt="announcement" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;p>The &lt;strong>Audiences&lt;/strong> feature is in &lt;strong>Private Beta&lt;/strong>, where we work with early users and customers to test new features and get feedback before making them generally available.&lt;/p>
&lt;p>Reach out to &lt;a href="mailto:support@rudderstack.com" >Customer Success&lt;/a> if you are interested in enabling this feature for your workspace.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&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 Custom Audience destination and configure field mappings.&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 to the Custom Audience destination.
&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/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&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>Custom Audience&lt;/strong> and click &lt;strong>Continue&lt;/strong>.&lt;/li>
&lt;li>Configure the following settings to specify how RudderStack connects to your API:&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">Name&lt;/td>
&lt;td style="text-align:left">A unique name that identifies this destination in your workspace.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="audience-delivery-api-configuration" data-heading="Audience delivery API configuration" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h3 id="audience-delivery-api-configuration">Audience delivery API configuration&lt;/h3>&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">Enter base URL&lt;/td>
&lt;td style="text-align:left">Specify the root URL for your API (for example, &lt;code>https://api.example.com&lt;/code>). All requests are sent to this URL.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Specify authentication&lt;/td>
&lt;td style="text-align:left">Choose how RudderStack authenticates with your API. &lt;br />&lt;br />See &lt;a href="#authentication" >Authentication&lt;/a> section below for details.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Custom headers&lt;/td>
&lt;td style="text-align:left">This &lt;strong>optional&lt;/strong> setting lets you add extra key-value headers to every request (for example, &lt;code>Content-Type&lt;/code>, &lt;code>X-API-Version&lt;/code>).&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="authentication" data-heading="Authentication" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h4 id="authentication">Authentication&lt;/h4>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Method&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">No authentication&lt;/td>
&lt;td style="text-align:left">None — use this for public endpoints only&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Basic Auth&lt;/td>
&lt;td style="text-align:left">Enter a username and password&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">API Key&lt;/td>
&lt;td style="text-align:left">Specify a header name (for example, &lt;code>X-API-Key&lt;/code>) and API key value&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Bearer Token&lt;/td>
&lt;td style="text-align:left">Enter a bearer token value&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="endpoint-configurations" data-heading="Endpoint configurations" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h3 id="endpoint-configurations">Endpoint configurations&lt;/h3>&lt;p>Configure how RudderStack &lt;strong>adds&lt;/strong>, &lt;strong>updates&lt;/strong>, and &lt;strong>removes&lt;/strong> audience members:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Setting&lt;/th>
&lt;th style="text-align:left">When it runs&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Add record&lt;/strong>&lt;/td>
&lt;td style="text-align:left">A user enters the audience&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Update record&lt;/strong>&lt;/td>
&lt;td style="text-align:left">A member&amp;rsquo;s mapped attributes change. &lt;br />&lt;br />&lt;!DOCTYPE html>
&lt;html lang="en">
&lt;blockquote class="tip">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/tip.svg loading="lazy" alt="tip" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;strong>Tip:&lt;/strong> Set &lt;strong>Use Add record configuration&lt;/strong> to &lt;strong>Yes&lt;/strong> to reuse the same method, path, template, and fields as &lt;strong>Add record&lt;/strong>.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Remove record&lt;/strong>&lt;/td>
&lt;td style="text-align:left">A user leaves the audience&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/audiences/destinations/custom-audience/use-add-record-configuration.webp" href="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/use-add-record-configuration.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/use-add-record-configuration.webp"
alt="Use Add record configuration"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="action-specific-settings" data-heading="Action-specific settings" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h3 id="action-specific-settings">Action-specific settings&lt;/h3>&lt;p>Each action&amp;rsquo;s (add/update/remove record) settings follow the same structure.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="http-method-and-endpoint-path" data-heading="HTTP method and endpoint path" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h4 id="http-method-and-endpoint-path">HTTP method and endpoint path&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">HTTP method&lt;/td>
&lt;td style="text-align:left">&lt;code>POST&lt;/code>, &lt;code>PUT&lt;/code>, &lt;code>PATCH&lt;/code>, &lt;code>GET&lt;/code>, or &lt;code>DELETE&lt;/code> for this action.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Endpoint path URL&lt;/td>
&lt;td style="text-align:left">Path appended to the &lt;a href="#audience-delivery-api-configuration" >base URL&lt;/a>. &lt;br />&lt;br />It supports simple interpolation with connection values, for example &lt;code>/audiences/{{connection.audienceId}}/members&lt;/code>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&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">The resolved URL is the base URL plus the evaluated endpoint path.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="batch-size" data-heading="Batch size" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h4 id="batch-size">Batch size&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;th style="text-align:left">Default value&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Batch size&lt;/td>
&lt;td style="text-align:left">Maximum records per HTTP request for this action. Range &lt;strong>1&lt;/strong>–&lt;strong>5000&lt;/strong>&lt;/td>
&lt;td style="text-align:left">5000&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="request-body-template" data-heading="Request body template" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h4 id="request-body-template">Request body template&lt;/h4>&lt;p>Define the JSON body sent to your API. The template follows &lt;a href="https://docs.jsonata.org/overview.html" >JSONata syntax&lt;/a>.&lt;/p>
&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">Templates are validated when you save the destination. An invalid syntax is rejected with an error that identifies the action and issue.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>A sample request body template is shown below:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;audience_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">$$.connection.audienceId&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;elements&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="err">$$.records.&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;userIds&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;idType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;SHA256_EMAIL&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;idValue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">sha&lt;/span>&lt;span class="mi">256&lt;/span>&lt;span class="err">_email&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;idType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;GOOGLE_AID&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;idValue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">google_aid&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;firstName&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">first_name&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;lastName&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">last_name&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;nested&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;org&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;static_value&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Global objects available at runtime&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Object&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">&lt;code>$$.records&lt;/code>&lt;/td>
&lt;td style="text-align:left">Array of records in the current batch (after field processing and hashing)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>$$.connection&lt;/code>&lt;/td>
&lt;td style="text-align:left">Sync connection metadata, including &lt;code>audienceId&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Allowed operations&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Object and array construction&lt;/li>
&lt;li>Path expressions (&lt;code>$$.records&lt;/code>, &lt;code>$$.connection.audienceId&lt;/code>)&lt;/li>
&lt;li>Iteration with &lt;code>{ ... }&lt;/code> — for example, &lt;code>$$.records.{ &amp;quot;email&amp;quot;: email, &amp;quot;user_id&amp;quot;: user_id }&lt;/code>&lt;/li>
&lt;li>String, number, and boolean literals&lt;/li>
&lt;li>&lt;code>Number()&lt;/code> casting where needed, for example,&lt;code>$number($$.connection.audienceId)&lt;/code>&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="template-example" data-heading="Template example" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h4 id="template-example">Template example&lt;/h4>&lt;p>A template for generic batched members is shown below:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;audienceId&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">$$.connection.audienceId&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;users&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="err">$$.records.&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;email&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">email&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;user_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="err">user_id&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="template-fields" data-heading="Template fields" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h4 id="template-fields">Template fields&lt;/h4>&lt;p>After you define a template, RudderStack extracts field names referenced under &lt;code>$$.records&lt;/code> and lists them under &lt;strong>Template fields&lt;/strong>. Click &lt;strong>Refresh&lt;/strong> to re-scan the template, or &lt;strong>Manage fields&lt;/strong> to configure each field.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/audiences/destinations/custom-audience/template-fields.webp" href="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/template-fields.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/template-fields.webp"
alt="Manage template fields"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Field 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">Name&lt;/td>
&lt;td style="text-align:left">Destination-side field name used in the template&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Required&lt;/td>
&lt;td style="text-align:left">If enabled, you must map the field to a warehouse column in the &lt;a href="#map-identifiers" >Map identifiers&lt;/a> section&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Static&lt;/td>
&lt;td style="text-align:left">If enabled, the value is a literal you provide in the &lt;a href="#map-identifiers" >Map identifiers&lt;/a> section&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Hash&lt;/td>
&lt;td style="text-align:left">Hash algorithm applied before the template runs. You can choose between &lt;strong>None&lt;/strong>, &lt;strong>SHA256&lt;/strong>, &lt;strong>SHA512&lt;/strong>, or &lt;strong>MD5&lt;/strong>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/audiences/destinations/custom-audience/configure-fields.webp" href="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/configure-fields.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/configure-fields.webp"
alt="Configure template fields"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&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">&lt;p>If you rename or remove template fields after syncs exist, make sure to update mappings on each affected sync manually.&lt;/p>
&lt;p>See &lt;a href="#troubleshooting" >Troubleshooting&lt;/a> for more information.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="request-preview" data-heading="Request preview" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h3 id="request-preview">Request preview&lt;/h3>&lt;p>Use &lt;strong>Fetch preview&lt;/strong> to build a sample HTTP request from test records.&lt;/p>
&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">Preview does not send traffic to your API.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;ol>
&lt;li>Choose how many sample records to include (for example, &lt;strong>1 record&lt;/strong>).&lt;/li>
&lt;li>Edit sample data if needed.&lt;/li>
&lt;li>Click &lt;strong>Fetch preview&lt;/strong> to see the resolved method, URL, headers, and JSON body.&lt;/li>
&lt;/ol>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/audiences/destinations/custom-audience/fetch-preview.webp" href="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/fetch-preview.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/fetch-preview.webp"
alt="Fetch preview"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ol start="5">
&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/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&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 Custom Audience destination.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="specify-target-audience" data-heading="Specify target audience" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h3 id="specify-target-audience">Specify target audience&lt;/h3>&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">Create the audience on your platform before entering these values. RudderStack &lt;strong>does not create&lt;/strong> audiences at the destination for this integration.&lt;/div>
&lt;/div>
&lt;/blockquote>
&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">Audience name&lt;/td>
&lt;td style="text-align:left">Specify the name of the audience to sync data to&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Audience ID&lt;/td>
&lt;td style="text-align:left">Specify the ID of the list on your platform&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&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/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&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.&lt;/p>
&lt;p>On the first run, the full membership is sent to the platform. Later runs send only inserts, updates, and deletes.&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/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h3 id="map-identifiers">Map identifiers&lt;/h3>&lt;p>Map warehouse columns to each &lt;a href="#request-body-template" >template field&lt;/a> defined in the Custom Audience destination.&lt;/p>
&lt;p>You can map two types of fields:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Warehouse fields&lt;/strong>: Dropdown of warehouse columns&lt;/li>
&lt;li>&lt;strong>Static fields&lt;/strong>: Specify literal values for fields configured as &lt;strong>Static&lt;/strong> in the &lt;a href="#template-fields" >destination settings&lt;/a>&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/audiences/destinations/custom-audience/map-static-fields.webp" href="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/map-static-fields.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/audiences/destinations/custom-audience/map-static-fields.webp"
alt="Map static fields"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>Required destination fields appear with an asterisk (*) during mapping.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="advanced-settings" data-heading="Advanced settings" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h3 id="advanced-settings">Advanced settings&lt;/h3>&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">Automatically hash PII data&lt;/td>
&lt;td style="text-align:left">When set to &lt;strong>Yes&lt;/strong>, RudderStack applies each field&amp;rsquo;s configured hash algorithm to unhashed warehouse data. &lt;br />&lt;br />When set to &lt;strong>No&lt;/strong>, data is treated as already hashed and hashing is skipped — even if a field has a &lt;a href="#template-fields" >hash type&lt;/a> configured. &lt;br />&lt;br />See &lt;a href="#data-hashing" >Data hashing&lt;/a> for more information.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&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/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&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/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&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="data-hashing" data-heading="Data hashing" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h2 id="data-hashing">Data hashing&lt;/h2>&lt;p>The &lt;a href="#advanced-settings" >Automatically hash PII data&lt;/a> setting lets you hash your user data before sending it to your API.&lt;/p>
&lt;ul>
&lt;li>Configure the setting to &lt;strong>Yes&lt;/strong> if your incoming data is not pre-hashed&lt;/li>
&lt;li>Configure this setting to &lt;strong>No&lt;/strong> if your data is already hashed&lt;/li>
&lt;/ul>
&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">&lt;p>Incorrect configuration of the &lt;strong>Automatically hash PII data&lt;/strong> setting will result in failures.&lt;/p>
&lt;ul>
&lt;li>If the &lt;strong>Automatically hash PII data&lt;/strong> setting is configured to &lt;strong>Yes&lt;/strong> and your data is pre-hashed, the event will fail.&lt;/li>
&lt;li>If the &lt;strong>Automatically hash PII data&lt;/strong> setting is configured to &lt;strong>No&lt;/strong> and your data is not pre-hashed, the event will fail.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>Such events are rejected with a clear error message, for example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Hashing is disabled but the value for field EMAIL appears to be unhashed. Either enable hashing or send pre-hashed data.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You will also see errors in the &lt;strong>Events&lt;/strong> tab for cases that were previously marked as successful but resulted in no matches, helping you identify and fix data quality or configuration issues.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="troubleshooting" data-heading="Troubleshooting" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/custom-audience/connect-retl-source/" data-title="Connect Reverse ETL Source to Custom Audience" -->
&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Issue&lt;/th>
&lt;th style="text-align:left">&lt;div style="width: 350px;">Resolution&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Template is rejected on save&lt;/td>
&lt;td style="text-align:left">The syntax is outside the &lt;a href="#request-body-template" >allowlisted operations&lt;/a> — the error message names the action and position&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Unexpected payload shape&lt;/td>
&lt;td style="text-align:left">Use the &lt;a href="#request-preview" >Fetch preview&lt;/a> with the same sample records and action type (&lt;code>INSERT&lt;/code>, &lt;code>UPDATE&lt;/code>, or &lt;code>DELETE&lt;/code>) to verify the payload shape&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>400&lt;/code> errors for all records&lt;/td>
&lt;td style="text-align:left">Required fields are unmapped or the warehouse values are empty&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Wrong audience on API side&lt;/td>
&lt;td style="text-align:left">Verify the &lt;a href="#specify-target-audience" >Audience ID&lt;/a> and &lt;code>$$.connection.audienceId&lt;/code> while &lt;a href="#request-body-template" >configuring the template&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Double-hashed identifiers&lt;/td>
&lt;td style="text-align:left">&lt;a href="#advanced-settings" >Automatically hash PII data&lt;/a> setting is set to &lt;strong>Yes&lt;/strong> while your incoming warehouse data is pre-hashed — set this setting to &lt;strong>No&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Sync fails after destination edit&lt;/td>
&lt;td style="text-align:left">Update sync mappings if destination field names or required flags have changed.&lt;br />&lt;br />See &lt;a href="#template-fields" >Template fields&lt;/a> for more information&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;br /></description></item></channel></rss>