August 14, 2026Analytics

Pinterest Tag Setup and the Conversions API

Two weeks ago I audited a home-decor DTC brand spending EUR 8,000 a month on Pinterest Ads. Their agency had installed the Pinterest tag eight months prior. The base code was on every page. Pinterest Ads Manager showed PageVisit events ticking along fine. But purchase events had dropped by 44 percent over the preceding six weeks, even though Shopify recorded a steady 280 orders a month with Pinterest-attributed UTMs. The agency blamed "algorithm fluctuations." It was not an algorithm issue. A Shopify theme update had broken the data layer push on the thank-you page, the checkout redirect cleared the _pin_unauth cookie, and nobody had the Pinterest Tag Helper open in months. Three failures, all silent, all fixable in an afternoon.

If you run Pinterest campaigns and rely solely on the browser-side Pinterest tag, you are almost certainly under-counting conversions. This guide covers how the tag works, how to layer the Pinterest Conversions API on top, how to deduplicate the two, and how to verify the whole setup.

How the Pinterest tag works (and where it breaks)

The Pinterest tag is not one snippet. It is two distinct pieces of code that work together.

The base code loads on every page. It initializes the pintrk function, sets your tag ID, and fires a PageVisit event. You get it from Pinterest Ads Manager under Conversions > Tag Manager:

<script>
  !function(e){...}(window);
  pintrk('load', 'YOUR_TAG_ID');
  pintrk('page');
</script>

The event codes go only on action pages -- add-to-cart, checkout, signup, lead form. They must fire after the base code loads. Pinterest supports 20 standard event types, from AddToCart and Checkout to Lead, Signup, and Search.

Confuse the two and your data is silently wrong. I have seen setups where Checkout fired on the cart page instead of order confirmation. Ads Manager happily showed conversions -- just the wrong ones.

Where browser-side pinterest tracking fails

Even if the tag is installed correctly, three forces work against it:

  1. Safari ITP. Apple's Intelligent Tracking Prevention caps client-side cookies at seven days of Safari use without interaction. If a user clicks your Pinterest ad but does not return within seven days, the cookie is gone and the conversion is unattributable.
  2. Ad blockers. Any extension that blocks requests to ct.pinterest.com silently kills the tag. The event never reaches Pinterest.
  3. Checkout redirects. If your checkout flow redirects through a payment processor on a different domain, the Pinterest cookie can break. This is the same pattern I see on cross-domain tracking setups in GA4, and it is just as destructive for Pinterest.

The result: under-reported conversions, deflated ROAS, and a bidding algorithm starving for signal. The fix is the Pinterest Conversions API.

What the Pinterest Conversions API adds

The Pinterest Conversions API is a server-to-server integration. Your server sends conversion events directly to Pinterest's endpoint, bypassing the browser entirely.

Pinterest recommends running both the tag and the Conversions API in parallel. The tag captures real-time browser signals and click IDs. The API provides a server-side fallback immune to ad blockers, ITP, and redirect breaks. The architecture matches what Meta, Snapchat, LinkedIn, and TikTok all require now. I covered the concept in What Is the Conversions API?.

Prerequisites

Before you configure anything, gather these:

RequirementWhere to find it
Pinterest tag installed on your siteAds Manager > Conversions > Tag Manager
Pinterest tag IDAds Manager > Conversions > Tag details
Conversions API access tokenBusiness Settings > Conversions > Generate token
Ad account IDAds Manager URL or Find IDs in Ads Manager
Server environment or sGTM containerYour hosting stack or a provider like Stape

The access token requires Business Admin permissions. If you do not have that role, sort it out before you start. I have seen pinterest tag setup projects stall for weeks over a missing token.

Setting up the Conversions API step by step

There are two main routes: a direct API integration or a server-side GTM (sGTM) approach. I will cover both.

Route 1: Direct API integration

1. Build the event payload. Every CAPI request is a POST to https://api.pinterest.com/v5/ad_accounts/{ad_account_id}/events with the access token as a Bearer token. The required fields include:

  • event_name -- the conversion event type (e.g., checkout, add_to_cart, lead, signup)
  • event_time -- epoch timestamp in seconds
  • action_source -- web, offline, or app_android/app_ios
  • event_source_url -- the full page URL where the event occurred
  • event_id -- a unique identifier used for deduplication (more on this below)

2. Attach user identifiers. The user_data object must include at least one valid identifier. The most impactful are hashed email (em), hashed phone (ph), click ID, client IP, and user agent. Email and phone must be SHA-256 hashed after normalizing -- lowercase, trimmed.

3. Include event data. For purchases, attach value, currency, order_id, and product arrays inside custom_data.

4. Send in real time. Pinterest's best practices recommend events within one hour. Batch up to 1,000 per request.

Route 2: Server-side GTM

If you already run a server-side Google Tag Manager container, this is the faster path:

  1. In your sGTM container, go to Tags > New and import the Pinterest Conversions API tag template from the Community Template Gallery.
  2. Enter your Pinterest tag ID and access token.
  3. Map event parameters: event name, value, currency, event_id, and user data fields.
  4. Set triggers for the server-side events you want to forward (purchase, add-to-cart, lead, etc.).
  5. Use sGTM Preview mode to verify events are sent, then check Pinterest Ads Manager's event history.

If you do not have an sGTM container yet, my server-side tracking guide walks through the full setup, including the choice between Stape and Google Cloud Run.

Deduplication: the step most setups skip

When you run both the tag and the Conversions API, every conversion can be reported twice. Without deduplication, your ROAS looks inflated and your bidding targets are wrong.

Pinterest deduplicates using the event_id field:

  1. Generate a unique event_id on the client side when the conversion happens (a UUID or timestamp-based string works fine).
  2. Pass that event_id to the Pinterest tag via pintrk('track', 'checkout', { event_id: 'evt_abc123', ... }).
  3. Pass the same event_id to your server-side Conversions API call.
  4. Pinterest matches the two events by event_id and event_name and counts them as one.

Skip this and Pinterest sees two conversions for every one purchase. I have audited accounts where Ads Manager showed double the actual Shopify orders because nobody implemented event_id.

You can verify your deduplication in Ads Manager under the Conversions tab > Deduplication. Pinterest shows event_id coverage for each event type and flags when it is below the resilient threshold.

Enhanced match: improving signal quality

Enhanced match sends hashed email addresses alongside conversion events. When no Pinterest cookie is present -- the Safari ITP scenario -- Pinterest can still attribute the conversion by matching the hashed email to a Pinterest account.

Two versions exist. Automatic enhanced match lets Pinterest's tag detect email fields on your page and hash them before sending -- no code changes, but it only works if the email is in a visible form field when the tag fires. Manual enhanced match passes the email in the pintrk('load') call: pintrk('load', 'YOUR_TAG_ID', { em: 'user@example.com' }). Pinterest hashes unhashed values in the browser using SHA-256 before transmission.

For the Conversions API, enhanced match is built in -- you are already sending hashed email in user_data. More identifiers means a higher Event Quality Score, more attributed conversions, and better optimization.

Verifying your pinterest tag setup with the Pinterest Tag Helper

The Pinterest Tag Helper is a Chrome extension that inspects tag activity on any page you visit. Install it from the Chrome Web Store, navigate to your site, and look for the red icon. The number in the badge indicates how many events fired on that page.

Use it to check:

  • Whether the base code loaded and PageVisit fired.
  • Whether your conversion events (AddToCart, Checkout, Lead) fire on the correct pages with the correct parameters.
  • Whether the event_id is present (you will need this for deduplication to work).
  • Whether enhanced match data is attached.

The pinterest tag helper is a client-side tool. It cannot tell you whether your Conversions API events are reaching Pinterest. For that, go to Ads Manager > Conversions > Event History and filter by source. You should see events tagged as "Conversions API" alongside those from "Pinterest Tag." If only one source appears, your setup is incomplete.

The verification checklist I use

After every pinterest tag setup I do for a client, I run through this:

CheckToolPass criteria
Base code on all pagesPinterest Tag HelperPageVisit fires on every page load
Conversion events on correct pagesPinterest Tag HelperCheckout only on order confirmation
event_id present on tag eventsBrowser consoleNon-empty, unique per event
CAPI events in Ads ManagerEvent History"Conversions API" source visible
Deduplication activeDeduplication tabevent_id coverage at threshold
Event Quality ScoreEvent Quality tab"Good" for key events

If any of these fail, your pinterest analytics will be unreliable. If you are not sure where the breakdown is, I can audit it for you.

The attribution window change you need to know about

On April 1, 2025, Pinterest removed the "Engagement" component from attribution windows, leaving only click-through and view-through attribution. The default is 30-day click / 1-day view, configurable per campaign. Conversion counts after April 2025 are not directly comparable to historical data. If your year-over-year ROAS looks off, check the attribution window before blaming the tracking -- though I usually find both are broken.

Common pinterest pixel mistakes I fix repeatedly

The same patterns appear on nearly every account I audit:

  1. Checkout event on the wrong page. Usually the cart page instead of the order confirmation.
  2. No event_id on tag events. The Conversions API is set up, but deduplication is broken because the browser-side tag never sends an event_id.
  3. Enhanced match not enabled. Without email data, Pinterest cannot match conversions for cookieless users -- a major blind spot on Safari.
  4. Stale access token. The CAPI token expired or was regenerated. Server-side events silently stop. Nobody notices for weeks.
  5. Multiple pinterest tags from different ad accounts. Agency transitions leave orphaned tags firing PageVisit, inflating counts and confusing reporting.

If you have not audited your Pinterest tracking in the last six months, at least one of these is probably live on your site right now.

FAQ

What is the Pinterest tag?

The Pinterest tag is a JavaScript snippet you install on your website to track visitor actions like page views, add-to-cart events, and purchases. It consists of a base code that loads on every page and event codes that fire on specific action pages. Pinterest uses this data for conversion attribution, audience building, and ad optimization.

Do I need the Conversions API if my Pinterest tag is already working?

Yes. The browser-side tag alone misses conversions blocked by ad blockers, lost to Safari ITP cookie expiration, or broken by checkout redirects. The Conversions API sends events server-side, bypassing all of these limitations. Pinterest recommends running both in parallel with deduplication enabled for the most complete conversion data.

How does Pinterest deduplicate tag and Conversions API events?

Pinterest matches events using the event_id field. You generate a unique event_id on the client side and pass it to both the Pinterest tag and the Conversions API call. When Pinterest receives two events with the same event_id and event_name, it counts them as one conversion. Without this, every conversion is double-counted.

What is the Pinterest Tag Helper?

The Pinterest Tag Helper is a free Chrome extension that inspects Pinterest tag activity on any page you visit. It shows which events fired, what parameters were attached, and whether enhanced match data is present. It is a client-side debugging tool and cannot verify whether Conversions API events reached Pinterest.

What is the Event Quality Score in Pinterest Ads Manager?

The Event Quality Score rates your conversion event health as Good, Fair, or Needs Improvement. It evaluates three areas: customer information quality such as hashed email, event metadata completeness, and deduplication coverage. A higher score means Pinterest can attribute more conversions and optimize your campaigns more effectively.

Not sure your Pinterest tracking is actually working? Let me audit it -- I will tell you exactly where events are leaking, duplicating, or missing, and give you a clear plan to fix it.

Ready to fix your marketing measurement?

Take assessment →