# Connect Reverse ETL Source to Pinterest Audience

<p>This guide takes you through the steps to connect a <a href="https://www.rudderstack.com/docs/sources/reverse-etl/" >Reverse ETL source</a> to your Pinterest Audience destination.</p>

<blockquote class="success">
  <div class="tip-quote">
    
    <div class="tip-text">
      You can connect multiple Reverse ETL sources to the same Pinterest account. Each connection syncs to its own customer list audience.
    </div>
  </div>
</blockquote>
<!-- TODO: Add screenshots of the Pinterest account form and the connection mapping form. -->
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="setup">Setup</h2><ol>
<li>Set up and configure your Reverse ETL source.</li>
<li>In the <strong>Overview</strong> tab of the source page, click <strong>Add destination</strong> &gt; <strong>Create new destination</strong>. You can also select an already-configured destination here.</li>
<li>From the list of destinations, select <strong>Pinterest Audience</strong> and click <strong>Continue</strong>.</li>
<li>Specify a unique name to identify this destination in RudderStack.</li>
<li>In the <strong>Pinterest account</strong> section, click <strong>Select</strong> to choose an existing Pinterest account. To add a new account, click <strong>Add account</strong> and authenticate via OAuth by specifying the following settings:</li>
</ol>
<table>
  <thead>
      <tr>
          <th>Setting</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Account name</td>
          <td>Specify a unique account name.</td>
      </tr>
      <tr>
          <td>OAuth settings</td>
          <td>Click <strong>Connect account</strong>, sign in to Pinterest, and give RudderStack the requested permissions. Sign in as a Pinterest user that owns or has access to the ad account you want to sync to.</td>
      </tr>
  </tbody>
</table>
<ol start="6">
<li>Click <strong>Continue</strong> to configure the mapping settings.</li>
</ol>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="mapping-settings">Mapping settings</h2><p>This section lists the settings to correctly map data from your Reverse ETL source to the Pinterest Audience destination.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="select-ad-account">Select ad account</h3><p>Select the Pinterest ad account that owns the customer list and its audience. The list shows every ad account the connected Pinterest user owns or has access to.</p>
<p>If you see <strong>No Pinterest ad accounts found for this account</strong>, make sure the connected Pinterest user has access to at least one ad account, then refresh the list.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="select-audience">Select audience</h3><p>In this section, you can create a new audience or use an existing one:</p>
<ul>
<li><strong>Create new audience</strong>: RudderStack creates a customer list and a customer list audience on it in the selected ad account when you save the connection. Enter a name of 3 to 500 characters.</li>
<li><strong>Use existing audience</strong>: Select an existing customer list audience in the selected ad account. Only customer list audiences are listed.</li>
</ul>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">Pinterest needs at least 100 matched users before an audience can be used for targeting, and it can take 48–72 hours to process an upload. See <a href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/pinterest-audience/#pinterest-processing-and-audience-size" >Pinterest processing and audience size</a> for more information.</div>
  </div>
</blockquote>

</html>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="sync-mode">Sync mode</h3><p>Only <a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#mirror-mode" >Mirror mode</a> is supported for this integration.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="map-identifiers">Map identifiers</h3><p>Map your warehouse columns to the Pinterest identifiers. You must map at least one:</p>
<table>
  <thead>
      <tr>
          <th>Identifier</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Email</td>
          <td>The user&rsquo;s email address.</td>
      </tr>
      <tr>
          <td>Mobile advertising ID (MAID)</td>
          <td>The user&rsquo;s mobile advertising ID, for example, an Android advertising ID (AAID).</td>
      </tr>
  </tbody>
</table>
<p>Pinterest matches a user if any identifier matches, so mapping both gives a better match rate. See <a href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/pinterest-audience/#supported-identifiers" >Supported identifiers</a> for the normalization RudderStack applies.</p>

<blockquote class="warning">
  <div class="tip-quote">
    
    <div class="tip-text">Don&rsquo;t send IDFAs collected from activity in an iOS app or website. Pinterest&rsquo;s policy forbids uploading them.</div>
  </div>
</blockquote>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="advanced-settings">Advanced settings</h3><table>
  <thead>
      <tr>
          <th>Setting</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Automatically hash PII data?</td>
          <td>When set to <strong>Yes</strong> (default), RudderStack normalizes the mapped values and hashes them with SHA-256 before sending them to Pinterest. <br /><br />Set it to <strong>No</strong> only if your warehouse columns already hold SHA-256 hashes. See <a href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/pinterest-audience/#data-hashing" >Data hashing</a> for more information.</td>
      </tr>
  </tbody>
</table>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">You can&rsquo;t change the ad account or the audience after the connection is created. To sync to a different one, create a new connection.</div>
  </div>
</blockquote>

</html>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="sync-settings">Sync settings</h2>

<p>RudderStack determines how and when to run a sync based on the <a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-schedule-settings/" >sync schedule</a> you set for your Reverse ETL connection.</p>
<table>
  <thead>
      <tr>
          <th>Schedule type</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Basic</td>
          <td>Run syncs at a set interval, optionally starting from a specified time (UTC). <br /><br />If a start time is set, syncs run from that time until the end of that day.</td>
      </tr>
      <tr>
          <td>CRON</td>
          <td>Run syncs based on a specified CRON expression (in UTC).</td>
      </tr>
      <tr>
          <td>Manual</td>
          <td>Run syncs manually.</td>
      </tr>
  </tbody>
</table>
<!-- end-chunk -->
<!-- begin-chunk -->
<h4 id="sync-observability-settings">Sync observability settings</h4>

<table>
  <thead>
      <tr>
          <th>Setting</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Retain sync logs</td>
          <td>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: <br /><br /><table><tr><th width="20%">Setting</th><th width="80%">Description</th></tr><tr><td>Sync log retention</td><td>Specify the retention period of the <a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#sync-logs" >sync logs</a> in your warehouse. <br /><br />If you set it to 1, then RudderStack deletes any sync log older than a day (in UTC time). </td></tr><tr><td>Snapshot table retention</td><td>Specify the number of <a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#snapshot-table-schema" >snapshot tables</a> to retain. </td></tr></table></td>
      </tr>
      <tr>
          <td>Retry failed records</td>
          <td>This setting is toggled on by default and causes RudderStack to continually <a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#retry-failed-records" >retry sending the failed records</a>.</td>
      </tr>
      <tr>
          <td>Retain and show failures</td>
          <td>This setting is toggled off by default. Turn it on to have RudderStack write the error recorded for every failed record to a <a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/rudderstack-schema/#failed-records-table" >failed records table</a> in your warehouse and show it in the sync&rsquo;s <a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#failed-records" >failed records view</a>. It applies from the next sync and can take up to a minute to reach your data plane. <br /><br /><table><tr><th width="20%">Setting</th><th width="80%">Description</th></tr><tr><td>Failure retention</td><td>Number of days RudderStack keeps each sync&rsquo;s failed records in your warehouse. The default is 30 and the minimum is 7.</td></tr></table></td>
      </tr>
  </tbody>
</table>

<blockquote class="warning">
  <div class="tip-quote">
    
    <div class="tip-text">Storing sync logs, snapshot tables, and failed records may incur additional warehouse costs.</div>
  </div>
</blockquote>

<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="see-also">See also</h2><ul>
<li><a href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/pinterest-audience/#how-membership-is-written-to-pinterest" >How membership is written to Pinterest</a></li>
<li><a href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/pinterest-audience/#troubleshooting" >Troubleshooting</a></li>
<li><a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/" >Sync Modes</a></li>
</ul>
<br />

