quest_pinterest_capi_server_side_gtm.exe
_
×

Pinterest Conversions API in Server-Side GTM: Deduplication & EMQ

Pinterest Conversions API in server-side GTM: set deduplication via event_id and boost your Event Match Quality in Ads Manager. Your complete 2026 guide.

pinterest conversions-api server-side gtm privacy guide

Setting up the Pinterest Conversions API in server-side GTM is not the real challenge: the official template in the GTM Template Gallery and the Stape or TAGGRS tags run through the setup in a few minutes. The problem is that most advertisers still rely on the client-side Pinterest Tag alone and lose a large share of their conversion signal to ad blockers, consent refusals, and Safari ITP. This article skips the generic walkthrough and focuses on the two settings that actually decide the quality of your Pinterest signal: deduplication via event_id between the Pinterest Tag and the server, and the Event Match Quality (EMQ) surfaced in Pinterest Ads Manager. The goal: walk away with a clean CAPI, no duplicates, and solid matching for the bidding algorithm.

Why the Pinterest Tag alone is no longer enough in 2026

Browser tracking is eroding on the same fronts as it is for Meta or TikTok. Ad blockers and Safari ITP prevent client-side GTM tags from firing on 30 to 50% of sessions depending on the audience, and consent refusal rates often sit between 50 and 60%. On Pinterest, the stakes are specific: the audience is in a discovery and inspiration mindset, with a purchase cycle that can be long between the first pin seen and the order placed. If a structural share of your conversions never reaches the Pinterest Tag, the bidding algorithm optimizes on a truncated signal and you pay more for every attributed conversion.

The Pinterest Conversions API in server-side GTM solves this by sending events straight from your server container to Pinterest, without depending on the browser. The gain is twofold: a more complete event volume and richer user data, two direct levers on campaign performance. This is exactly the logic described in the Meta CAPI server-side GTM guide, applied to the Pinterest ecosystem.

Dual Tag + CAPI architecture: how Pinterest handles deduplication

Pinterest recommends keeping both channels running in parallel: the Pinterest Tag in the browser for responsiveness, and the Conversions API on the server for reliability. But running both without wiring leads to double-counting. That is where deduplication comes in.

Unlike Snapchat, which offers two distinct keys, Pinterest works on a single, simple logic: one key, the event_id. When the same event arrives through both the Pinterest Tag and the CAPI with an identical event_id, Pinterest recognizes it as the same action and counts it only once. The condition is strict: deduplication only works if the event_id is exactly the same in both sources. The slightest difference, and you end up with conversions counted twice, an inflated ROAS, and an algorithm learning on distorted data.

Prerequisites before configuring Pinterest CAPI

Three things need to be in place before you start:

  • An active server-side GTM container, on Google Cloud or through a host like Stape or Addingwell. If you are not there yet, start with the server-side GTM migration guide, and keep the real cost of server-side in mind.
  • The client-side Pinterest Tag already in place, because deduplication relies on the same event being sent through two channels (the Tag and the server).
  • Access to Pinterest Business and a Pinterest Ads account, with the rights to generate a token.

Then grab two identifiers in Pinterest Ads Manager: your Pinterest Advertiser ID and an Access Token. The path: Ads Manager, then Settings, then the Conversions section, then the Set Up API page. In the conversion access token block you will find the Advertiser ID and the button to generate a new token. This token authenticates server calls, so never share it client-side.

Server-side GTM setup step by step

The workflow follows the logic of any server-side CAPI tag:

  1. Import the Pinterest Conversions API template into your server container, from the GTM Template Gallery (Stape template) or the matching TAGGRS repository.
  2. Create a data stream from web to server, via a server-side GA4 client or a Data Tag / Data Client, so that browser events reach the server container.
  3. Configure the Pinterest tag: enter the Pinterest Advertiser ID and the Access Token, choose the Action Source (web in most cases), then the event naming method. The standard option maps to Pinterest events (page_visit, add_to_cart, checkout, signup, lead, etc.), while the inherit-from-client option attempts automatic mapping.
  4. Pass the user data for EMQ (see below) and the deduplication event_id.
  5. Add a trigger matching the events you want to send.

The classic mistake is mapping events without ever passing either the user data or the event_id. The tag fires, Pinterest does receive an event, but matching stays low and conversions get counted twice.

Wiring the event_id: generate, push, relay

The principle comes down to three steps, and consistency of the value across both channels is the only thing that matters.

First, generate a unique event_id at the exact moment of the user action. A UUID, or a combination of timestamp and transaction ID, does the job. What matters is uniqueness per event: two distinct actions must never share the same identifier, or you risk accidental deduplication.

Next, push that value into the dataLayer with the event, for example:

window.dataLayer.push({
  event: 'purchase',
  event_id: 'pin_1721456789123_45678',
  // other event parameters
});

Finally, reference the same event_id on both sides: in the Pinterest Tag of the web container, and in the CAPI payload on the server. The Pinterest template usually grabs the event_id automatically from event data, but always confirm it goes out with the same value as the client side. This consistency requirement between client and server is identical to the one described for TikTok Events API and LinkedIn CAPI.

Boosting Pinterest Event Match Quality (EMQ)

Event Match Quality measures Pinterest’s ability to tie your events back to real user accounts. The higher the score, the better the algorithm optimizes. The lever is the amount and quality of user data you send, hashed with SHA-256 on the server before sending for every piece of personal data.

DataParameterExpected format
EmailemSHA-256 hashed, lowercase, no spaces
Phone numberphSHA-256 hashed, E.164 format (country code included)
First / last namefn / lnSHA-256 hashed, lowercase
Customer identifierexternal_idYour internal ID, SHA-256 hashed
IP addressclient_ip_addressSent in clear by the server
User agentclient_user_agentSent in clear by the server
Pinterest Click IDclick_id (_epik)Captured on landing, not hashed

Server-side GTM has a decisive advantage here: the IP and user agent are captured natively by the server container, with no manipulation. For email, phone, and name, collect them at conversion time (form, checkout), hash them on the server, then pass them to the Pinterest tag. The click_id is captured through the _epik URL parameter on landing and stored in a first-party cookie so it can be sent back with every event. Prioritize email, phone, and external_id: those are the identifiers that move the score the most. This is the same principle as server-side Enhanced Conversions for Google Ads.

Verification and final checklist

Once the tag is in place, validate before trusting the numbers:

  • The server-side GTM Preview confirms the tag fires, the Advertiser ID and Access Token are correct, and the event_id goes out with the same value as the client side. The template’s Test mode sends requests without recording them, handy for validating the structure.
  • Pinterest Ads Manager shows the state of your events and the matching quality. Check that your conversions appear only once, with no duplicates.
  • The EMQ score takes a few days to stabilize. Aim for green and iterate by adding user data if the score stays low.

Before considering your Pinterest Conversions API operational, verify that:

  • the server-side GTM container is active and the client-side Pinterest Tag is still in place;
  • the Pinterest Advertiser ID and Access Token are correctly set in the server tag;
  • a unique event_id goes out with the same value on both sides, generated at the moment of the action;
  • email, phone, and name are SHA-256 hashed, and the IP, user agent, and click_id are passed;
  • Pinterest Ads Manager shows deduplicated events, with no duplicates;
  • consent gates the sending of data, because going server-side does not exempt you from GDPR. To wire consent into this architecture, see the Consent Mode v2 with GA4 guide.

Pinterest CAPI in server-side GTM rounds out a stack already covered for Meta, TikTok, LinkedIn, and Snapchat. By treating deduplication and EMQ seriously, you give the Pinterest algorithm a clean, complete signal, the real condition for effective optimization in 2026.