---
title: Pinterest Tag
slug: pinterest-tag
createdAt: 2025-05-29T21:57:44.519Z
---

**Pinterest Tag** is Pinterest's conversion tracking pixel. It loads the Pinterest Tag JavaScript SDK in the browser and forwards ecommerce events to Pinterest for campaign measurement, audience building, and automated bidding optimization. There is no server-side component.

# Getting Started

This is a device-mode destination. The Pinterest Tag SDK is loaded automatically — no manual script installation is required. You will need:

- **Tag ID** — your Pinterest Tag ID, found in your Pinterest Ads account under **Ads > Conversions**.

Optionally:

- **Use Enhanced Match Loading** — when enabled, passes the user's email to Pinterest during initialization for enhanced matching. Defaults to `false`.

# Connecting to the Pinterest Tag CDP Destination

:::BlockQuote
**Warning:** Before connecting destinations in the Chord CDP, please verify with all Destination owners that all **non-Chord CDP** configured destinations are **disabled**. Running external destinations alongside configured Chord CDP destinations **can result in duplicate events downstream.**
:::

1. Log into the Chord data platform.
2. Navigate to the CDP.
3. Click the **"Add"** button next to Destinations.
4. Select **Pinterest Tag** from the destination catalog.
5. Enter the destination name and your **Tag ID**.
6. Optionally enable **Use Enhanced Match Loading**.
7. Click **"Create"** to connect.

# Events

All Pinterest Tag events include an `event_id` parameter set to the Chord `messageId` for deduplication.

## Page Events

**Pinterest SDK call:** `pintrk("track", "PageVisit", pageProps)`

## Identify Events

Sets user identity for Pinterest enhanced matching.

**Pinterest SDK call:** `pintrk("set", { np, em })`

## Product List Viewed

**Pinterest SDK call:** `pintrk("track", "ViewCategory", categoryData)`

## Products Searched / Products List Filtered

Both map to the `Search` event.

**Pinterest SDK call:** `pintrk("track", "Search", searchData)`

## Product Added

**Pinterest SDK call:** `pintrk("track", "AddToCart", cartData)`

## Order Completed

Same attributes as **Product Added** above.

**Pinterest SDK call:** `pintrk("track", "Checkout", checkoutData)`

## Other Track Events

Any unrecognized track event is forwarded using the raw Chord event name.

**Pinterest SDK call:** `pintrk("track", eventName, properties)`

## Line Items

When products are present, each product is mapped to a Pinterest line item:

## Custom Property Forwarding

Configure destination mappings in Hub with `properties.*` destination paths to forward additional event properties into `pintrk("track", ...)` payloads. Only explicitly-configured non-schema fields are forwarded — nothing flows through automatically.

**How to configure:**

1. Open the destination's **Mappings** tab in Hub.
2. Add a mapping with source path `properties.loyalty_tier` and destination path `properties.loyalty_tier`.
3. On the next event, `loyalty_tier` will appear in the event properties payload sent to Pinterest.

**What is excluded:**

- Schema fields already handled by the destination transform (e.g. `currency`, `value`, `order_id`, `line_items`) — these flow through the structured transform
- PII fields (`email`) — handled separately during initialization via enhanced match loading

When a custom mapping targets a schema field (e.g. `properties.value → properties.value`), the customer-configured value overrides the destination's computed default. This allows schema fields to be sourced from a different event property — for example, mapping `properties.total → properties.value` to use your order total as the conversion value.

# Initialization

The plugin loads `https://s.pinimg.com/ct/core.js`, then calls `pintrk("load", tagId)` (optionally with `{ em: email }` if **Use Enhanced Match Loading** is enabled and an email is available on the triggering event), followed by `pintrk("page")` to fire the initial page view.

The plugin manages SDK loading state (`fresh` → `loading` → `loaded`/`failed`) to prevent duplicate script loads. If the script fails to load, subsequent events are silently dropped.

# CSP Requirements

If your site uses a Content Security Policy, allow the following domains:

***

**Updated 27 May 2026**

