Skip to main content
Back to Guides
Integration5 min read

Pinterest, Snapchat & Reddit Pixels: Consent Gating

The smaller ad pixels don't ship a Google-style consent mode, so the safe default is the same for all three: don't load until the visitor accepts marketing. Here's the pattern for Pinterest, Snapchat, and Reddit, browser and server.

Small Platforms, Same Obligation

Pinterest, Snapchat, and Reddit each send a healthy share of paid traffic, and each ships a tracking pixel you're expected to drop on the page. None of the three offers a Google-style consent mode that models denied conversions or runs a cookieless fallback. That actually simplifies your job. Without a degraded mode to configure, the correct and defensible pattern is the same for all three: keep the pixel out of the page until the visitor accepts your marketing category, then load it. This guide covers what each pixel sets, the one loading pattern that works, and the server-side angle their Conversions APIs introduce.

Pinterest Tag

The Pinterest Tag (the pintrk object) loads core.js from Pinterest's CDN and sets cookies including _pinterest_ct_ua, _pin_unauth, and _epik for attribution and audience matching. It's an advertising tag, so the whole snippet belongs under the marketing category, never analytics. Pinterest also offers an API for Conversions (its server-side endpoint) for events the browser tag loses. The reliable browser-side approach is conditional loading: don't run the snippet until consent, and let your CMP inject it on acceptance.

Snapchat Pixel

The Snapchat Pixel (the snaptr object) loads scevent.min.js and sets cookies such as _scid and sc_at to match visitors to Snapchat users. Snap's guidance is explicit that the pixel must not become active or collect data before the visitor consents, and it flags the cross-border transfer to US servers as a point the visitor should be told about so their consent is informed. Snap has its own Conversions API too. There's no native consent switch, so gate the load.

Reddit Pixel

The Reddit Pixel (the rdt object) loads pixel.js and sets the _rdt_uuid cookie to tie conversions back to Reddit ad clicks. The init call takes an options object with an optOut flag, but treating optOut as your consent mechanism is a mistake: by the time the init call runs, the script is already loaded and the cookie may already be set. In the EU it needs opt-in consent before it loads at all. Reddit also runs a Conversions API for server-side events.

The One Pattern That Covers All Three

Since none of these ships a hold-and-release consent mode, use load-on-consent. Two mechanics work. If you deploy through a tag manager, fire each pixel on a trigger gated by your consent state. If you deploy raw snippets, the classic technique is to neutralize the script tag so the browser ignores it on load, then let your CMP activate it after the visitor accepts.

<!-- Neutralized on load: type=text/plain means the browser
     will not execute it, so no pixel.js runs and no cookie is set. -->
<script type="text/plain" data-consent="marketing"
        data-src="https://www.redditstatic.com/ads/pixel.js"></script>

<!-- On acceptance, your CMP rewrites type to text/javascript
     (and swaps data-src to src), and only then does the pixel load.
     Same approach for Pinterest core.js and Snapchat scevent.min.js. -->
Copy code to clipboard

The Conversions APIs Need Consent Too

Pinterest, Snapchat, and Reddit all offer server-side Conversions APIs, and moving an event to the server doesn't change its legal status. A conversion posted from your backend with a hashed email or an IP address is personal data being processed for advertising. If the visitor declined marketing, don't send it, regardless of which platform or which transport. Read the consent decision on the server and skip the forward when consent is absent. The convenience of server-side tracking is not a loophole around the banner.

One Consent Variable, Three Tags

The efficient way to run all three is a single consent decision feeding every pixel, rather than three separate wiring jobs that drift apart over time. In a tag manager, that's one consent variable ("marketing granted, yes or no") and three tags that each check it before firing. The visitor accepts once, and Pinterest, Snapchat, and Reddit all release together. Withdrawal works the same way in reverse: flip the variable, and all three stop on the next event. This matters more than it sounds, because the usual way these setups break is that someone adds a fourth pixel six months later and forgets to gate it. A shared consent variable makes the gate the default that every new tag inherits, instead of a step someone has to remember. It also keeps your audit story simple: one decision, one record, every ad platform reading from it.

Verify It, Per Platform

The test is the same one you'd run for any pixel, repeated for each. Clear cookies, load a page, leave the banner alone, and inspect the Application tab. Nothing on this list should exist before you click Accept.

Pre-Consent Cookie Check

  • Pinterest: no _pinterest_ct_ua, _pin_unauth, or _epik before acceptance

    core.js should not be requested until the marketing category is granted.

  • Snapchat: no _scid or sc_at before acceptance

    scevent.min.js stays off the page, and the US transfer is disclosed in your policy.

  • Reddit: no _rdt_uuid before acceptance

    Don't rely on the optOut init flag. Gate the load, not the config.

  • Each pixel sits under the marketing category, not analytics

    All three are advertising tools. Categorize them by what they do.

  • The matching Conversions API forward is skipped for non-consenting visitors

    Server-side is the same consent question in a place a browser scanner can't reach.

Doing It With CookieBeam

CookieBeam holds all three pixel scripts in a blocked state and injects each only when the visitor accepts marketing, which is precisely what tags with no native consent mode require. Its scanner detects the Pinterest, Snapchat, and Reddit pixels and their cookies during an audit, so you can confirm each is genuinely gated rather than just sitting behind a banner it already ran past. Because the scanner also captures outbound network connections, calls to any of these platforms' Conversions API endpoints show up in your inventory instead of hiding in your backend. Categorize each as advertising, wire them to your marketing toggle, and let the scan confirm nothing leaks pre-consent.

Related Guides and Sources

Continue with TikTok Pixel and Events API Consent, Meta Pixel and Conversions API Consent Gating, and How Cookie Scanners Work. Primary sources: Pinterest's Install the base code guide, Snapchat's GDPR guidance for advertisers, and the Reddit Pixel documentation.

Pinterest, Snapchat & Reddit Pixel Consent | CookieBeam | CookieBeam