Pinterest Tag Not Firing? Complete Troubleshooting Guide

Your Pinterest Tag isn't tracking conversions or page visits. Learn how to diagnose and fix common issues including installation errors, event setup, and enhanced match.

PinterestPinterest Tagconversion trackingecommercesocial media ads

Your Pinterest campaigns are running but conversions aren’t tracking. The Pinterest Tag should be measuring purchases, signups, and page visits—but Ads Manager shows nothing. Here’s how to fix it.

Understanding the Pinterest Tag

The Pinterest Tag works similarly to Facebook Pixel:

  1. Base code: Loads on every page, tracks PageVisit automatically
  2. Event code: Tracks specific actions (Checkout, Lead, Signup, etc.)
  3. Enhanced Match: Sends hashed customer data for better attribution

If any component fails, you lose data.

Step 1: Verify Base Tag Installation

First, confirm the Pinterest Tag is loading at all.

Check in Browser DevTools:

// In console, check for Pinterest tag:
console.log(typeof window.pintrk);
// Should return: 'function'

// Check for tag ID:
console.log(window.pintrk.queue);
// Should show queued events

Check Network Requests:

  1. Open DevTools → Network tab
  2. Filter by “pinterest” or “ct.pinterest.com”
  3. Reload the page
  4. Look for successful requests (200 status)

Expected requests:

ct.pinterest.com/v3/?...  (base tag ping)
ct.pinterest.com/user/?...  (event tracking)

Using Pinterest Tag Helper

Install the official Pinterest Tag Helper Chrome extension:

  1. Visit your website
  2. Click the extension icon
  3. Check the status panel:

Green checkmark: Tag detected and working Warning: Partial setup or issues Error: Tag not found or broken

Step 2: Correct Base Tag Installation

The Pinterest Tag must be installed correctly in the <head> section:

<head>
  <!-- Pinterest Tag -->
  <script>
  !function(e){if(!window.pintrk){window.pintrk = function () {
  window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var
    n=window.pintrk;n.queue=[],n.version="3.0";var
    t=document.createElement("script");t.async=!0,t.src=e;var
    r=document.getElementsByTagName("script")[0];
    r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
  pintrk('load', 'YOUR_TAG_ID');
  pintrk('page');
  </script>
  <noscript>
  <img height="1" width="1" style="display:none;" alt=""
    src="https://ct.pinterest.com/v3/?event=init&tid=YOUR_TAG_ID&noscript=1" />
  </noscript>
  <!-- end Pinterest Tag -->
</head>

Critical points:

  • Replace YOUR_TAG_ID with your actual Tag ID (numeric)
  • Must be in <head>, not footer
  • pintrk('page') must be called for PageVisit tracking

Find Your Tag ID:

  1. Pinterest Ads Manager → Conversions
  2. Click your conversion source
  3. Tag ID is displayed (e.g., 2612345678901)

Step 3: GTM Installation

If using Google Tag Manager:

Option A: Custom HTML Tag

<script>
!function(e){if(!window.pintrk){window.pintrk = function () {
window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var
  n=window.pintrk;n.queue=[],n.version="3.0";var
  t=document.createElement("script");t.async=!0,t.src=e;var
  r=document.getElementsByTagName("script")[0];
  r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
pintrk('load', '{{Pinterest Tag ID}}');
pintrk('page');
</script>

Trigger: All Pages (Page View)

Option B: Use Community Template

  1. Tags → New → Discover more tag types in the Community Template Gallery
  2. Search “Pinterest”
  3. Use the official Pinterest tag template

Creating a Pinterest Variable:

  1. Variables → New → Constant
  2. Name: Pinterest Tag ID
  3. Value: Your tag ID

Step 4: Setting Up Conversion Events

Standard Pinterest Events:

EventWhen to Use
PageVisitEvery page (automatic with base tag)
ViewCategoryCategory/collection pages
SearchSearch results pages
AddToCartAdd to cart action
CheckoutPurchase completion
SignupAccount creation
LeadForm submission/lead capture
WatchVideoVideo views
CustomAny other action

Implementing Checkout Event:

// On order confirmation page:
pintrk('track', 'checkout', {
  value: 99.99,
  order_quantity: 2,
  currency: 'USD',
  order_id: 'ORDER12345',
  line_items: [
    {
      product_name: 'Widget Pro',
      product_id: 'SKU123',
      product_price: 49.99,
      product_quantity: 2
    }
  ]
});

Implementing Lead Event:

// On form submission success:
pintrk('track', 'lead', {
  lead_type: 'Newsletter Signup'
});

Implementing AddToCart Event:

// On add to cart button click:
pintrk('track', 'addtocart', {
  value: 49.99,
  order_quantity: 1,
  currency: 'USD',
  product_id: 'SKU123',
  product_name: 'Widget Pro'
});

Step 5: GTM Event Tags

For each conversion event, create a GTM tag:

Checkout Event Tag:

<script>
pintrk('track', 'checkout', {
  value: {{DLV - Order Total}},
  order_quantity: {{DLV - Order Quantity}},
  currency: '{{DLV - Currency}}',
  order_id: '{{DLV - Order ID}}'
});
</script>

Trigger: Custom Event purchase or Page View on thank-you page

Lead Event Tag:

<script>
pintrk('track', 'lead', {
  lead_type: '{{DLV - Lead Type}}'
});
</script>

Trigger: Form Submission or Custom Event form_submit

Important: These event tags must fire AFTER the base Pinterest tag has loaded.

Step 6: Common Pinterest Tag Issues

Issue 1: Tag ID is Wrong

Symptom: Tag Helper shows “Tag not found”

Debug:

// Check what ID is being used:
console.log(window.pintrk.queue);
// Look for 'load' call with tag ID

Fix: Verify the tag ID matches your Pinterest Ads account exactly.

Issue 2: PageVisit Not Tracking

Symptom: Tag loads but no page views in Pinterest

Common causes:

  • pintrk('page') not called
  • Multiple conflicting tags
  • CSP blocking requests

Fix: Ensure base tag includes pintrk('page') call:

pintrk('load', 'YOUR_TAG_ID');
pintrk('page');  // This is required!

Issue 3: Events Fire But Don’t Record

Symptom: Tag Helper shows events, Pinterest shows none

Debug:

  1. Check Network tab for ct.pinterest.com requests
  2. Verify response is 200
  3. Wait 24-48 hours (Pinterest has reporting delays)

Common causes:

  • Ad blockers blocking ct.pinterest.com
  • Pinterest server-side delays
  • Event parameters invalid

Issue 4: Checkout Value Shows Zero

Symptom: Conversions track but value is $0

Fix: Ensure value is a number, not string:

// WRONG:
value: '$99.99'
value: '99.99'

// CORRECT:
value: 99.99

Issue 5: Enhanced Match Not Working

Symptom: Attribution is poor, match rate is low

Enhanced Match requires hashed customer data:

pintrk('load', 'YOUR_TAG_ID', {
  em: 'customer@example.com'  // Will be hashed automatically
});

For manual hashing:

async function sha256(message) {
  const msgBuffer = new TextEncoder().encode(message);
  const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

// Use pre-hashed email:
const hashedEmail = await sha256('customer@example.com'.toLowerCase().trim());
pintrk('load', 'YOUR_TAG_ID', {
  em: hashedEmail
});

Issue 6: Duplicate Events

Symptom: Pinterest shows 2x conversions

Common causes:

  • Multiple Pinterest tags on page
  • Event fires twice (page reload, SPA navigation)

Fix:

// Prevent duplicate fires:
let pinterestEventFired = {};

function trackPinterestOnce(eventName, params) {
  const key = eventName + JSON.stringify(params);
  if (pinterestEventFired[key]) return;

  pinterestEventFired[key] = true;
  pintrk('track', eventName, params);
}

Issue 7: SPA/AJAX Navigation

Symptom: Only first page tracks

For single-page applications, fire PageVisit on route changes:

// React Router example:
useEffect(() => {
  if (window.pintrk) {
    pintrk('page');
  }
}, [location.pathname]);

// Vue Router:
router.afterEach(() => {
  if (window.pintrk) {
    pintrk('page');
  }
});

Issue 8: Content Security Policy Blocking

Symptom: Console shows CSP errors for Pinterest domains

Fix: Add Pinterest domains to your CSP:

Content-Security-Policy:
  script-src 'self' https://s.pinimg.com;
  img-src 'self' https://ct.pinterest.com;
  connect-src 'self' https://ct.pinterest.com;

Step 7: Testing Pinterest Tag

Method 1: Pinterest Tag Helper

  1. Install Chrome extension
  2. Visit your site
  3. Perform conversion actions
  4. Check “Events” panel for each event

Method 2: Network Inspection

  1. Open DevTools → Network
  2. Filter by “ct.pinterest.com”
  3. Perform actions
  4. Check request payloads:
// PageVisit request:
event=pagevisit&tid=YOUR_TAG_ID

// Checkout request:
event=checkout&value=99.99&order_id=12345

Method 3: Pinterest Events Manager

  1. Pinterest Ads → Conversions → Events Manager
  2. View real-time events (some delay)
  3. Verify events are being received

Method 4: Test Conversions

  1. Create a test campaign (or use existing)
  2. Click your own ad (from different device/network)
  3. Complete conversion action
  4. Check attribution in Pinterest (24-48 hours)

Step 8: Enhanced Match Setup

Enhanced Match improves conversion attribution by 10-20%. Set it up correctly:

At Page Load (Best):

pintrk('load', 'YOUR_TAG_ID', {
  em: 'customer@example.com',  // Email
  hashed: false  // Pinterest will hash it
});
pintrk('page');

At Conversion (Alternative):

pintrk('track', 'checkout', {
  value: 99.99,
  order_id: 'ORDER123',
  em: 'customer@example.com'  // Include with event
});

Enhanced Match Requirements:

  • Email must be lowercase
  • Email must be trimmed (no leading/trailing spaces)
  • Email must be valid format
  • If pre-hashing, use SHA-256

Pinterest Tag Checklist

  • Tag ID is correct (matches Ads Manager)
  • Base code in <head> section
  • pintrk('page') called on every page
  • Tag Helper shows green status
  • Network requests successful (200)
  • Events fire with correct parameters
  • Value is numeric (not string)
  • No duplicate tags
  • SPA navigation handled (if applicable)
  • Enhanced Match configured
  • CSP allows Pinterest domains
  • Wait 24-48 hours for data

Complete GTM Setup Example

Tag 1: Pinterest Base Tag

  • Type: Custom HTML
  • Trigger: All Pages (fires first)
<script>
!function(e){if(!window.pintrk){window.pintrk = function () {
window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var
  n=window.pintrk;n.queue=[],n.version="3.0";var
  t=document.createElement("script");t.async=!0,t.src=e;var
  r=document.getElementsByTagName("script")[0];
  r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
pintrk('load', '{{Pinterest Tag ID}}');
pintrk('page');
</script>

Tag 2: Pinterest Checkout Event

  • Type: Custom HTML
  • Trigger: Custom Event purchase or Thank You Page View
  • Tag Sequencing: Fire after Pinterest Base Tag
<script>
pintrk('track', 'checkout', {
  value: {{DLV - ecommerce.purchase.value}},
  order_quantity: {{DLV - ecommerce.purchase.items.length}},
  currency: '{{DLV - ecommerce.purchase.currency}}',
  order_id: '{{DLV - ecommerce.purchase.transaction_id}}'
});
</script>

Tag 3: Pinterest Lead Event

  • Type: Custom HTML
  • Trigger: Form Submission trigger
  • Tag Sequencing: Fire after Pinterest Base Tag
<script>
pintrk('track', 'lead', {
  lead_type: '{{Form ID}}'
});
</script>

Still Having Pinterest Tag Issues?

Pinterest tracking has unique quirks compared to other platforms. If you’ve followed this guide and events still aren’t recording:

  1. Server-side ad blocking might be affecting your traffic
  2. Pinterest’s own delays can make testing frustrating
  3. Enhanced Match configuration can be finicky

Get a free Pinterest tracking audit and we’ll analyze your implementation, verify events are firing correctly, and ensure your Pinterest campaigns have accurate attribution.