pixellint

vendor/pinterest · vendor documented

Pinterest standard events still need a tag ID

tid is required. Pinterest standard events, when present, are documented lowercase names; custom names warn rather than error, the same posture as Meta's ev. Hashed pd[em] and pd[external_id] are SHA-256 hex, ed[event_id] is a non-empty string, and line-item product_price and product_quantity are checked when the keys are present.

What this pack matches

Hosts
ct.pinterest.com
Paths
/v3
Vendor docs
developers.pinterest.com/docs/track-conversions/pinterest-tag/

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
tid required It is the Pinterest conversion tag ID. Fix: Copy the tag ID from Ads Manager into `tid`. vendor.pinterest.param.tid.missing
vendor.pinterest.param.tid.empty
docs
event optional The base code omits it; event code sends one. Custom event names are allowed, so check that an unrecognized value is deliberate and not a misspelled standard event. vendor.pinterest.param.event.empty
vendor.pinterest.param.event.invalid
docs
noscript optional The image fallback in the base code sends `noscript=1`. vendor.pinterest.param.noscript.empty
vendor.pinterest.param.noscript.invalid
docs
ed[value] optional It is the purchase value on the noscript image. Pinterest documents `ed[value]` on checkout and add to cart tags. Fix: Send a number in `ed[value]`, without a currency symbol. vendor.pinterest.param.ed[value].empty
vendor.pinterest.param.ed[value].invalid
docs
ed[currency] optional It is the ISO 4217 currency of `ed[value]`. Pinterest documents `ed[currency]` on the image tag. Fix: Send a three-letter currency code in `ed[currency]`, such as `USD`. vendor.pinterest.param.ed[currency].empty
vendor.pinterest.param.ed[currency].invalid
docs
ed[order_quantity] optional It is the order quantity on the noscript image. Pinterest documents `ed[order_quantity]` next to `ed[value]`. Fix: Send an integer item count in `ed[order_quantity]`. vendor.pinterest.param.ed[order_quantity].empty
vendor.pinterest.param.ed[order_quantity].invalid
docs
ed[event_id] optional It is the event id on the noscript image. Pinterest documents `ed[event_id]` for deduplication against the JavaScript tag. Fix: Send the same event id the JavaScript tag fired, or drop the empty pair. vendor.pinterest.param.ed[event_id].empty docs
pd[em] optional It is the hashed email for Enhanced Match on the image tag. Pinterest documents SHA-256 hex after lowercase and trim. The JavaScript tag hashes in the browser; the img tag does not. Fix: Lowercase and trim the address, hash it with SHA-256, and send the hex digest in `pd[em]`. vendor.pinterest.param.pd[em].empty
vendor.pinterest.param.pd[em].invalid
docs
pd[external_id] optional It is the hashed advertiser-side user id for Enhanced Match on the image tag. Pinterest documents SHA-256 hex. Fix: Hash the identifier with SHA-256 and send the hex digest in `pd[external_id]`. vendor.pinterest.param.pd[external_id].empty
vendor.pinterest.param.pd[external_id].invalid
docs
ed[line_items][0][product_price]… optional It is a line-item price on the noscript image. Pinterest documents `ed[line_items][n][product_price]` as a number. Fix: Send a number in `ed[line_items][n][product_price]`, without a currency symbol. vendor.pinterest.param.ed[line_items][0][product_price].empty
vendor.pinterest.param.ed[line_items][0][product_price].invalid
docs
ed[line_items][0][product_quantity]… optional It is a line-item quantity on the noscript image. Pinterest documents `ed[line_items][n][product_quantity]` as an integer. Fix: Send an integer item count in `ed[line_items][n][product_quantity]`. vendor.pinterest.param.ed[line_items][0][product_quantity].empty
vendor.pinterest.param.ed[line_items][0][product_quantity].invalid
docs
ed[line_items][0][product_name]… optional It is a line-item name on the noscript image. Pinterest documents `ed[line_items][n][product_name]` as a string. Fix: Send the product name in `ed[line_items][n][product_name]`, or drop the empty pair. vendor.pinterest.param.ed[line_items][0][product_name].empty docs
ed[line_items][0][product_id]… optional It is a line-item product id on the noscript image. Pinterest documents `ed[line_items][n][product_id]` as a string. Fix: Send the catalog product id in `ed[line_items][n][product_id]`, or drop the empty pair. vendor.pinterest.param.ed[line_items][0][product_id].empty docs
ed[line_items][0][product_category]… optional It is a line-item category on the noscript image. Pinterest documents `ed[line_items][n][product_category]` as a string. Fix: Send the category in `ed[line_items][n][product_category]`, or drop the empty pair. vendor.pinterest.param.ed[line_items][0][product_category].empty docs
ed[line_items][0][product_variant_id]… optional It is a line-item variant id on the noscript image. Pinterest documents `ed[line_items][n][product_variant_id]` as a string. Fix: Send the variant id in `ed[line_items][n][product_variant_id]`, or drop the empty pair. vendor.pinterest.param.ed[line_items][0][product_variant_id].empty docs
ed[line_items][0][product_variant]… optional It is a line-item variant name on the noscript image. Pinterest documents `ed[line_items][n][product_variant]` as a string. Fix: Send the variant name in `ed[line_items][n][product_variant]`, or drop the empty pair. vendor.pinterest.param.ed[line_items][0][product_variant].empty docs
ed[line_items][0][product_brand]… optional It is a line-item brand on the noscript image. Pinterest documents `ed[line_items][n][product_brand]` as a string. Fix: Send the brand in `ed[line_items][n][product_brand]`, or drop the empty pair. vendor.pinterest.param.ed[line_items][0][product_brand].empty docs
ed[order_id] optional It is the order id on the noscript image. Pinterest documents `order_id` as a string for conversion reporting. Fix: Send the order id in `ed[order_id]`, or drop the empty pair. vendor.pinterest.param.ed[order_id].empty docs
ed[promo_code] optional It is a promotion code on the noscript image. Pinterest documents `promo_code` as a string. Fix: Send the code in `ed[promo_code]`, or drop the empty pair. vendor.pinterest.param.ed[promo_code].empty docs
ed[property] optional It is the store or property name on the noscript image. Pinterest documents `property` as a string. Fix: Send the property name in `ed[property]`, or drop the empty pair. vendor.pinterest.param.ed[property].empty docs
ed[search_query] optional It is the search string on the noscript image. Pinterest documents `ed[search_query]` on search tags. Fix: Send the query in `ed[search_query]`, or drop the empty pair. vendor.pinterest.param.ed[search_query].empty docs
ed[video_title] optional It is the video title on the noscript image. Pinterest documents `video_title` as a string. Fix: Send the title in `ed[video_title]`, or drop the empty pair. vendor.pinterest.param.ed[video_title].empty docs
ed[lead_type] optional It is the lead type on the noscript image. Pinterest documents `lead_type` as a string. Fix: Send the lead type in `ed[lead_type]`, or drop the empty pair. vendor.pinterest.param.ed[lead_type].empty docs
checkout_requires_value_and_currency recommended A checkout or add-to-cart tag is missing `ed[value]` or `ed[currency]`. Pinterest documents those keys on the image tag for conversion reporting. Fix: Add `ed[value]` and `ed[currency]` to the noscript image, or fire the event from JavaScript. vendor.pinterest.checkout_requires_value_and_currency docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/pinterest

Try this failing payload in the playground. Pinterest tag missing tid.

https://ct.pinterest.com/v3/?event=checkout&ed[value]=12

cargo install pixellint · npm install pixellint