Pinterest Tag Errors: How to Fix Common Tag Helper Warnings

Quick fix: Open your site with the Pinterest Tag Helper extension and fix what it flags. Most warnings come from a static or empty value: a checkout with no value, the same order_id on every order, or an empty em for enhanced match. Then run Test events in Ads Manager to confirm that Pinterest receives each event.
Pinterest Tag problems fall into two groups. Either the tag doesn't fire at all, so Pinterest shows no events. Or it fires with bad data, so conversions and revenue look wrong. Pinterest's Tag Helper extension is good at the second group. It flags specific parameter problems on every event.
This guide starts with the problems that stop the tag completely. It then works through each common Tag Helper warning and how to fix it.
Step 1: Check that the base code loads
The Pinterest base code loads Pinterest's script, initializes your tag and records a page view:
pintrk('load', 'YOUR_TAG_ID', { em: 'customer@example.com' });
pintrk('page');
The em part is optional. It's used for enhanced match (covered below). If the Tag Helper says no tags were found on the page, check these causes:
- The code isn't on this template. The base code belongs in the shared header of every page.
- A script error stops it. Check the browser console for syntax errors from a bad paste.
- The image fallback is inside
<noscript>. Pinterest's snippet includes an image tag inside a<noscript>block for browsers without JavaScript. That fallback only runs when JavaScript is off. If you rely on an image-only tag, it must not sit inside<noscript>. - Consent, ad blockers or CSP block it. Test in a private window with extensions off and accept all cookies. If the console shows "Refused to load" errors for Pinterest domains, update your Content Security Policy.
- Wrong tag ID. Compare the ID in
pintrk('load')with the tag ID in your Pinterest business account's Conversions section.
If you use the Shopify, BigCommerce, Squarespace or Google Tag Manager integration, don't paste the base code by hand as well. Two installs send every event twice.
Step 2: Use the right event names
Pinterest's help center lists the event names in title case, such as Checkout and AddToCart. In code, its examples use lowercase with no spaces:
| Event | In code | Use it when |
|---|---|---|
| Checkout | checkout | A transaction completes |
| AddToCart | addtocart | An item goes into the cart |
| PageVisit | pagevisit | A primary page is viewed, such as a product page |
| Signup | signup | Someone signs up for your product or service |
| Lead | lead | Someone shows interest, such as a form submission |
| Search | search | Someone searches your site |
| ViewCategory | viewcategory | A category page is viewed |
| WatchVideo | watchvideo | Someone watches a video |
A "purchase" event doesn't exist on Pinterest. Completed orders use checkout. A frequent mistake is to fire checkout on the checkout page instead of the order confirmation page, which counts abandoned checkouts as sales.
A complete checkout event looks like this, based on Pinterest's event code reference:
pintrk('track', 'checkout', {
event_id: 'order_100457',
value: 84.50,
order_quantity: 1,
currency: 'USD',
order_id: '100457',
line_items: [{
product_id: 'SKU-123',
product_name: 'Canvas Tote',
product_category: 'Bags',
product_price: 84.50,
product_quantity: 1
}]
});
Step 3: Fix the most common Tag Helper warnings
Pinterest's tag verification article lists the warnings below. Most come from a value that is missing or hardcoded instead of filled in from the real order.
Checkout with no value, 0 value or unrecognized value
Without a valid value, Pinterest can't report revenue or return on ad spend. Check that your template outputs the order total as a number. 84.50 works. "$84.50", an empty string or an unrendered variable don't.
Checkout value above 150,000
An unrealistic value usually means the decimal point is missing or misplaced. Many platforms store prices in cents, so 8450 is sent instead of 84.50. Convert to the currency's main unit before you send it.
Same order ID for many events
Either the tag fires again when a customer reloads or revisits the thank-you page, or order_id is hardcoded. Make order_id dynamic and unique per order. Make sure the confirmation page doesn't fire checkout again on reload. Pinterest says order_id is needed for its conversion analysis reporting, so don't simply remove it.
Unrecognizable checkout currency code
Send a supported three-letter ISO code, such as USD, EUR or GBP. Symbols like $ or lowercase codes from some platform variables cause this warning.
Missing product ID or product category
Pinterest flags pagevisit, addtocart and checkout events without product_id, because dynamic retargeting needs it. It also flags missing product_category. Add both inside line_items. product_id should match the ID in your product catalog.
Same product ID for many events
Different products sending one ID means the variable is static or reads the wrong field. Check what your template outputs on two different product pages.
Step 4: Fix enhanced match warnings
Enhanced match sends a customer email with the tag so Pinterest can match more conversions to its users. You add it as the em parameter in pintrk('load'). You don't need to change event codes. Pinterest hashes the address before it leaves the browser, so you can pass a plain or a hashed email. Pinterest also offers automatic enhanced match, which you can switch on when you set up conversions. See Pinterest's enhanced match article.
Two warnings are common:
- Empty, "undefined", "n/a" or "null". This is normal for visitors who aren't signed in, since there is no email to send. It's a problem only if it also appears for signed-in customers and on the order confirmation page. Check that your template variable holds the customer's email at that point.
- Same email for all events. A hardcoded test address, often the developer's own, was left in the code. Every customer then looks like the same person. Replace it with the dynamic customer variable.
Never paste a real email address into the base code as a placeholder. If you need a test value, remove it before you publish.
Step 5: Deduplicate the tag and the Conversions API
If you also send events through Pinterest's Conversions API, send the same event_id with the tag event and the matching API event. Pinterest uses it to recognize that both describe one conversion. On the tag, Pinterest's reference says the field can be written event_id, eventID or eid, and the names are case-sensitive. Use the order ID for checkouts. Use a single generated ID per action, shared with both sides, for other events.
The same idea applies on other platforms. If you run TikTok too, see TikTok Events API deduplication.
Step 6: Watch out for single-page apps
Pinterest notes that on sites where views change without a full page load, the Tag Helper's event count keeps growing as you navigate. That can look like duplicate firing when it isn't. It also means events tied to page loads may not fire on route changes. See our guide to tracking pixels on SPA route changes.
How to verify the Pinterest Tag
- Tag Helper. Open your site in Chrome and click the Pinterest Tag Helper icon. Click each event to inspect its data and fix any warnings. The Pixel Helper extension is another way to see which pixels and events fire on a page.
- Test events in Ads Manager. In your Pinterest business account, open Conversions (under Business in the main menu) and select Test events. Enter your website URL, click Launch, then add to cart and complete a test order. Back in Ads Manager, click an event to see the data the tag captured. Use Clear events to start over.
- Network tab. Filter for "pinterest" to see each request and its parameters. This is useful when Tag Helper data looks odd.
- Compare with real orders. After a few days, compare checkout events with your store's order count.
For a full pre-launch routine across platforms, use our pixel tracking launch checklist.
FAQ
Is an empty enhanced match value always an error?
No. Pages viewed by visitors who aren't signed in have no email to send, so an empty value there is expected. Investigate if it's empty on the order confirmation page, where you should know the customer's email.
Should I use "checkout" or a custom "purchase" event for sales?
Use checkout. It's Pinterest's standard event for a completed transaction. A custom event isn't read as a sale by Pinterest's reporting and optimization.
Why does Tag Helper show more events than I expect?
Either the tag is installed more than once (for example, a platform integration plus a manual snippet), or your site is a single-page app where the count keeps growing as you navigate. Check how many times pintrk('load') appears on the page.
Why are my conversions lower in Pinterest than in my store?
Pinterest only reports conversions it can tie to someone who engaged with your ads. Ad blockers and declined consent also stop some browser events. Enhanced match and the Conversions API help close part of that gap.

