UTM Tracking for Pinterest Ads: How to Build and Validate Campaign Links

For Pinterest Ads, use utm_source=pinterest with utm_medium=cpc for Promoted Pins and paid campaigns. Unlike Google Ads, Pinterest has no auto-tagging mechanism that integrates directly with GA4 — UTM parameters are your only source of attribution data in GA4 for Pinterest-driven traffic. Without them, Pinterest clicks typically appear as Direct or are attributed to pinterest.com as a referrer (not as a Paid Social channel). Using the correct utm_medium=cpc value ensures GA4 routes Promoted Pin sessions to the Paid Social channel group, keeping paid Pinterest spend visible and separate from organic Pin traffic.

Terminal showing mlz build command with utm_source=pinterest and utm_medium=cpc, a GA4 Paid Social channel label, and the assembled tracked URL at the bottom.

Why UTM parameters matter for Pinterest Ads

Pinterest is a discovery platform, not a direct-response social network. Users often save Pins and click through days or weeks later — making accurate, persistent attribution more important than on platforms with shorter purchase cycles. Despite this, Pinterest has no native auto-tagging equivalent to Google's gclid that pipes structured source and medium data into GA4. The practical result:

GA4 sees Pinterest as a referral, not a paid channel
Without UTM parameters, GA4 typically attributes Pinterest clicks as referral traffic from pinterest.com rather than as Paid Social. This means your paid Pinterest spend blends into your organic referral row in the Traffic Acquisition report — making ROAS calculations unreliable without a separate data export from Pinterest Analytics.
Pinterest Analytics and GA4 don't sync natively
Pinterest Analytics reports clicks, saves, and conversions through its own interface. That data lives inside Pinterest Ads. UTM parameters are the bridge that brings Pinterest campaign performance into your GA4 setup, Looker Studio dashboards, or any other analytics platform that reads standard query string attribution.
Paid vs. organic Pinterest traffic must be separated
If you post organic Pins pointing to the same landing pages as your Promoted Pins, UTM is the only way GA4 can tell the difference. utm_medium=cpc on Promoted Pins vs. utm_medium=social on organic Pins creates a clean paid/organic split in your acquisition reports.
Long attribution windows need accurate tracking
Pinterest has a 30-day click and 30-day engagement attribution window by default — users save a Pin today and click through a month later. UTM parameters survive in the saved URL and are recorded when the user eventually clicks through, as long as the destination URL and any redirect chain preserve the query string.

The correct utm_source and utm_medium for Pinterest Ads

Pinterest campaigns span several formats and objectives. The source is always pinterest; the medium depends on whether the campaign is paid or organic:

Pinterest campaign type utm_source utm_medium
Promoted Pin (Standard) pinterest cpc
Shopping Ad (Product Pin) pinterest cpc
Video Pin Ad pinterest cpc
Carousel Ad pinterest cpc
Organic Pin with link pinterest social

Use utm_medium=cpc for all paid Pinterest campaigns. GA4's default Paid Social channel group condition requires a paid medium indicator (cpc, ppc, paid, or similar) paired with a recognised social platform source like pinterest. Some teams use utm_medium=paid-social for Pinterest — this works if you create a custom channel group rule in GA4 to match it, but cpc is the safest default for compatibility with GA4's built-in channel definitions.

For organic Pins with links in the Pin description or profile, use utm_medium=social. GA4 routes utm_source=pinterest&utm_medium=social to the Organic Social channel group.

Building Pinterest UTM links with mlz build

The mlz build command generates the tagged URL and normalises all values to lowercase automatically. Pinterest campaigns often run across multiple ad groups with the same landing page — use --content to differentiate ad group or creative variants without creating separate campaigns:

mlz build — paid and organic Pinterest links
# Promoted Pin (paid)
$ mlz build \
  --url "https://example.com/summer-collection" \
  --source "pinterest" \
  --medium "cpc" \
  --campaign "summer-collection-2026"

{
  "tracked_url": "https://example.com/summer-collection?utm_source=pinterest&utm_medium=cpc&utm_campaign=summer-collection-2026",
  "params": {
    "utm_source": "pinterest",
    "utm_medium": "cpc",
    "utm_campaign": "summer-collection-2026"
  }
}

# Carousel Ad with creative variant tracking
$ mlz build \
  --url "https://example.com/summer-collection" \
  --source "pinterest" \
  --medium "cpc" \
  --campaign "summer-collection-2026" \
  --content "carousel-lifestyle"
"tracked_url": "...?utm_source=pinterest&utm_medium=cpc&utm_campaign=summer-collection-2026&utm_content=carousel-lifestyle"

Add --validate to check that the destination URL resolves with HTTPS and returns a 200 status at build time. This is especially useful for Pinterest Shopping Ads, where product landing page URLs change frequently as inventory updates.

Validating Pinterest campaign links before launch

Before a Pinterest campaign goes live, the destination landing page should also pass an OG tag inspection. Pinterest pulls og:image, og:title, and og:description when a user saves a Pin or when the platform generates a Rich Pin preview. A missing og:image or an image that doesn't meet Pinterest's dimension requirements (minimum 600×900px for standard Pins) will cause Rich Pin previews to render poorly — or fall back to a plain link without a visual preview. Use mlz build --validate --inspect to check both URL validity and destination metadata in one pass:

mlz build with validation and inspection
$ mlz build \
  --url "https://example.com/summer-collection" \
  --source "pinterest" \
  --medium "cpc" \
  --campaign "summer-collection-2026" \
  --validate \
  --inspect

{
  "tracked_url": "https://example.com/summer-collection?utm_source=pinterest&utm_medium=cpc&utm_campaign=summer-collection-2026",
  "params": {
    "utm_source": "pinterest",
    "utm_medium": "cpc",
    "utm_campaign": "summer-collection-2026"
  },
  "destination_url": "https://example.com/summer-collection",
  "stored": true
}

The --inspect flag checks OG tags, Twitter Card tags, viewport, canonical URL, favicon, and page load time. A failed og:image check is a clear signal that your Pin will render without a visual preview on Pinterest — worth fixing before the campaign budget starts running. For a complete pre-publish workflow including post copy validation, use mlz publish-check.

Pinterest Ads tracking gotchas

Pinterest's epik cookie tracks clicks but doesn't replace UTM
Pinterest uses an epik query parameter (a cross-device attribution cookie) to power Pinterest's own Conversions API and conversion reporting. This is similar to Meta's fbclid in concept — it feeds data back into Pinterest Ads for internal reporting but does not pass structured source/medium data to GA4 or other analytics platforms. UTM parameters remain the only way to get Pinterest attribution into GA4.
pin.it short links and UTM parameter survival
Pinterest generates pin.it short URLs for all Pins. When you set a destination URL on a Pin (paid or organic), Pinterest stores the full URL including UTM parameters — and the pin.it redirect passes them through to the destination. The risk, as with all redirect chains, is what happens after the pin.it hop: a redirect on your own infrastructure can strip parameters. Validate the destination URL chain with mlz check before launch, especially if your landing page uses a CDN or redirect.
Pinterest in-app browser and GA4 session attribution
Clicks from the Pinterest mobile app open in Pinterest's in-app browser before routing to the destination. In most configurations, UTM parameters survive this transition — they're part of the URL that Pinterest passes to the in-app browser. The more common attribution issue is that Pinterest's long attribution window (30 days) means a session that occurs weeks after the initial Pin save may not have the UTM parameters in the URL if the user navigated to the page via a bookmark or direct return visit.
Shopping Ads require per-product URL validation
Pinterest Shopping Ads pull product URLs from your product catalog feed. When products update frequently, URLs can change and existing UTM-tagged links may break or point to 404 pages. Run periodic validation on your Shopping Ad destination URLs — mlz check can detect 404s and redirect errors in your product landing page URLs as part of a scripted batch check.

Pinterest UTM naming conventions

Pinterest traffic fragmentation in GA4 happens the same way it does on every other platform: inconsistent casing. pinterest and Pinterest and PINTEREST all appear as different sources in GA4's acquisition reports. The mlz build CLI normalises all values to lowercase automatically — if you generate links manually or via a spreadsheet, enforce lowercase.

Recommended conventions for Pinterest campaigns:

  • utm_source: pinterest (always lowercase — never "Pinterest" or "PIN")
  • utm_medium: cpc for Promoted Pins and all paid formats, social for organic Pins
  • utm_campaign: lowercase hyphen-separated, e.g. summer-collection-2026
  • utm_content: creative or ad group identifier, e.g. carousel-lifestyle or video-30s

For a full cross-channel naming reference, see the UTM naming conventions guide. For the GA4 case sensitivity details that explain why this matters, see Are UTM parameters case sensitive in GA4?

FAQ

Should I use utm_medium=cpc or utm_medium=paid-social for Pinterest Ads?
Use utm_medium=cpc for reliable routing to GA4's default Paid Social channel group. GA4's built-in channel group conditions for Paid Social check for a social source (like pinterest) combined with a paid medium indicator — and cpc is the most reliably matched paid indicator in GA4's default definitions. Using utm_medium=paid-social can work but requires a custom channel group rule in GA4 to match it correctly. If you want a more descriptive medium and don't mind maintaining a custom channel group, paid-social is a reasonable choice — but cpc is safer for most setups.
Does Pinterest have something like Google's gclid auto-tagging?
No. Pinterest has an epik cookie that helps with cross-device attribution within Pinterest's own Conversions API, but it does not integrate with GA4 the way Google's gclid does. There is no mechanism by which Pinterest Ads automatically sends structured source and medium data to GA4. UTM parameters are the only way to get Pinterest campaign data into GA4 and other analytics platforms.
How do I track Pinterest Shopping Ads with UTM parameters?
For Shopping Ads (Product Pins), add UTM parameters to the product destination URLs in your product catalog feed. Most catalog feeds support a custom parameter field or URL suffix. Set it to ?utm_source=pinterest&utm_medium=cpc&utm_campaign=[campaign-name]. Pinterest's product catalog feed accepts UTM parameters directly in the link field. If you generate a large number of product URLs programmatically, mlz build accepts the destination URL as a flag and outputs the full tagged URL that you can write back to your catalog CSV.
Will UTM parameters survive Pinterest's 30-day attribution window?
UTM parameters are stored as part of the URL attached to a Pin. When a user saves a Pin and clicks through 30 days later, the UTM parameters are part of the URL that Pinterest sends to the destination page — so they will be present when GA4 records the session. The attribution window applies to Pinterest's own reporting for ad spend and conversion counting. GA4 records the session at the moment of the click with the UTM parameters present at that time.
How do I validate that my Pinterest landing page has the right OG image dimensions?
Pinterest requires a minimum image size of 600×900px (2:3 ratio) for standard Pins and 1000×1500px for max-width Pins. While mlz inspect checks whether og:image is present and resolvable, it reports the image URL rather than pixel dimensions. To validate dimensions, use mlz inspect to confirm the OG image is present and loads correctly, then check image dimensions separately with a browser tool or image validation script. See the OG tag validation for campaign links guide for a full validation workflow.

Build Pinterest UTM links from the terminal

Pass --source "pinterest" --medium "cpc" to mlz build and get a normalised, validated URL ready for your Promoted Pin destination field. Lowercase formatting means GA4 routes every session to the Paid Social channel group correctly — and --validate --inspect confirms the destination is live and OG tags are present before your campaign starts spending.

npm install -g missinglinkz

Free plan: 50 links/month. No credit card. See the UTM tracking for developers guide for the full programmatic workflow.