Cookie Consent for
Shopify in the EU
Done Properly.
Shopify's banner only appears if you configured an active EEA market — so a US-market store running ads into Europe shows nothing at all. And any pixel pasted into theme.liquid bypasses the consent system entirely, no matter how good your banner looks. ConsentPixel — Privacy · Verified blocks them all. One script tag. No app.
What Shopify's built-in consent actually does
Let's start where most Shopify compliance content won't: Shopify has built a lot of this in, and for a straightforward store it can be enough. Under Settings → Customer privacy you get three real things:
- A cookie banner you can switch on, style lightly, and scope to specific regions.
- The Customer Privacy API — the mechanism that actually records the shopper's choice and exposes it to apps and pixels.
- Consent Mode v2 and Meta integration, so connected tools are supposed to respect a decline.
For a store running GA4 and the Meta Pixel through Shopify's native channels, turning this on, scoping it to the right regions, and confirming your pixels route through Shopify's consent system covers the core requirement. No third-party app strictly required.
Automated settings are on by default — with a condition
Per Shopify's own documentation, when you set up a new store, automated privacy settings are activated by default, which automatically configures the cookie banner for visitors in the UK and EEA — if you have active markets in those regions. Outside configured regions, the banner is inactive by default, which is intended for places like the US that don't require opt-in.
That conditional is the whole page. Read it again: if you have active markets in those regions. Shopify is not detecting your EU visitors and protecting you. It is reading your Markets configuration — a commercial setting your team chose for shipping and currency reasons — and inferring your legal obligations from it.
Trap 1: the EEA-market assumption
Here is the scenario that catches agencies. A client sells primarily in the US. You configure Markets accordingly — US market active, maybe Canada. The store goes live, runs Meta and Google ads, and those ads reach people in Ireland, Germany, the Netherlands. Or a French customer finds the store organically. Or an EU-based journalist links to a product.
No EEA market is configured, so no banner appears — and every tracker fires on page load. Not because anyone disabled anything, but because the automated setting did precisely what it was designed to do.
With no region selected, Shopify's own cookies fire before consent
According to Pandectes — a Shopify Plus Partner and Google-certified CMP — when no country is selected, all Shopify cookies, including the native Facebook Pixel app cookies and Google Analytics app cookies, will fire before consent is given. Worse, Shopify's default cookies are set as persistent cookies, not session cookies. The GDPR does not care which Markets you configured. It applies to the people on your site.
This also hits older stores. Automated privacy settings were introduced for new stores; a store built three years ago may never have had them, and nobody has looked since. And it hits any store where someone toggled automated settings off to customise the banner and then scoped the regions incorrectly — or not at all.
| Store situation | Banner shows to EU visitors? | Exposure |
|---|---|---|
| New store, automated settings on, EEA market active | Yes — auto-configured | Baseline covered; check the traps below |
| New store, automated settings on, no EEA market | No | Everything fires on load for EU shoppers |
| Automated settings off, regions not scoped | No | Same — plus nobody realises |
| Older store predating automated settings | Usually no | Silent, and years old |
Any store with pixels in theme.liquid | Banner may show | Consent ignored regardless — see Trap 2 |
The fix takes two minutes
In your Shopify admin, go to Settings → Customer privacy → Cookie banner. In Regions and content, either leave Use automated settings on and confirm you have an active EEA/UK market, or turn it off and explicitly select your regions. If you sell to Europe at all — or advertise to Europe at all — the EEA and UK belong in that list regardless of what Markets says.
Trap 2: pixels in theme.liquid bypass consent entirely
This is the one that produces genuinely non-compliant stores with a perfectly good-looking banner on them — and it is almost always an agency's doing, inherited from a previous developer.
Shopify's consent system works by exposing the visitor's choice to pixels and apps that ask for it. Shopify's pixel manager checks consent state before loading a pixel: if a pixel requires marketing or analytics permission and the visitor hasn't granted it, the pixel doesn't load. Pixels read consent via the init.customerPrivacy API and listen for changes with the visitorConsentCollected event.
A script pasted into theme.liquid does none of that. It is raw JavaScript in the page. It fires when the page loads. It has never heard of the Customer Privacy API, and the API has never heard of it. Your banner can sit there politely asking permission while the Meta Pixel has already transmitted.
Shopify's docs are explicit: remove it manually
When you migrate a pixel into Shopify's native system, existing pixel code should be manually removed from any place it exists — theme.liquid, checkout.liquid (Shopify Plus only), and the Additional scripts box in checkout settings. Adding the pixel natively does not remove the old one. If you skip this step you now have two pixels: one that respects consent, and one that doesn't. Only the second one matters legally.
The audit is quick and you should run it on every EU store you touch:
- Open Online Store → Themes → Edit code → theme.liquid. Search for
fbq,gtag,googletagmanager,connect.facebook.net,hotjar,clarity,tiktok. - Check Settings → Checkout → Additional scripts (and
checkout.liquidon Plus). - Check any custom app or snippet a previous developer added.
- Anything you find: move it to Settings → Customer events as a custom pixel with the correct Permission setting — then delete the original.
Trap 3: custom pixels with the wrong Permission setting
Moving a pixel into Customer events is necessary but not sufficient. Every custom pixel has a Permission setting that determines whether customer consent is required, under applicable law, for that pixel to collect data for marketing, analytics or preferences purposes. There is also a separate Data sale setting for jurisdictions with opt-out rights.
Shopify's sandbox only blocks pixels that are correctly configured with the right permission settings. Get the setting wrong — mark a marketing pixel as not requiring permission — and Shopify will dutifully fire it before consent, exactly as instructed. The banner still shows. The store still looks fine. The pixel still transmits.
Checkout is a different environment
One more thing agencies discover the hard way: Shopify's checkout is effectively a separate site. It doesn't use theme.liquid, and you practically cannot inject custom code into it — Shopify Plus could historically use checkout.liquid, but that route is being deprecated. Custom pixels running on checkout execute inside an iframe, in a separate environment from your storefront's top window. Any consent architecture that assumes one shared JavaScript context across storefront and checkout is built on a false premise.
How the Customer Privacy API actually works
Shopify's Customer Privacy API is the plumbing underneath all of this, and understanding it separates agencies who configure Shopify from agencies who guess at it. It recognises four consent signals:
analytics
Cookies measuring behaviour and performance — GA4, Shopify's own analytics, heatmap tools.
marketing
Advertising and retargeting — Meta Pixel, Google Ads, TikTok, Klaviyo tracking.
preferences
Cookies remembering choices like country or language to personalise the visit.
sale_of_data
Relevant to US state opt-out rights (CCPA/CPRA) rather than the EU — true where the visitor's region requires a data-sale opt-out.
A correct integration is simple to describe: your banner collects consent, maps the visitor's choices to those four categories, and passes the signals to the API. Shopify then conditionally loads or blocks its own tracking scripts based on them. When Shopify's native banner is enabled, it displays in the configured regions and passes consent to the API automatically.
Two rules from Shopify's own API docs — both are compliance rules, not style advice
1. Record consent only on visitor interaction. Shopify's documentation states that recording consent "should only be done on a visitor interaction (such as a visitor accepting or declining via a cookie banner), and never done automatically on behalf of the visitor." An app that calls setTrackingConsent on page load has manufactured consent, which is exactly what the GDPR prohibits.
2. Never read or modify Shopify cookies directly. The docs warn that doing so will break when new versions ship. Always go through the API. Any "compliance" app or bespoke snippet that manipulates _shopify_* cookies by hand is both fragile and wrong.
What Shopify's default banner doesn't do
Assume you've configured the regions correctly and your pixels all route through Customer events with proper permissions. You are now in a genuinely defensible position on the biggest issue — prior blocking. But the default banner still leaves gaps that EU regulators have been explicit about:
Granular category control
EU regulators expect visitors to accept analytics while refusing marketing. The default banner offers a blunt instrument where the DSK and CNIL expect a scalpel.
GDPR Art. 4(11) — "specific"Reject with equal prominence
The Dutch AP requires "Reject all" on layer one at equal prominence where "Accept all" appears. The German DSK requires equivalence including button position, not just colour. The default banner was not built to those standards.
AP 2025 guidance · DSK OHAuditable consent records
The API records consent state for the current visitor. It is not a log you can produce when a regulator asks who consented to what, when, and against which banner version.
GDPR Art. 5(2) + 7(1)Third-party app cookies
Shopify has no control over whether a third-party app tracks customers — that's precisely why the consent API exists for apps to integrate with. An app that ignores it is invisible to your banner.
Shopify Customer Privacy APIGoogle Consent Mode v2 certification
Google requires a certified CMP for some advertiser features. The native banner supports Consent Mode v2 signals but is not a Google-certified CMP — a real reason some EU stores need an app.
Google EU User Consent PolicyIAB TCF v2.3
If your client runs programmatic display in Europe, TCF support is a hard requirement and the native banner does not provide it.
IAB Europe TCF v2.3Selling into Germany or the Netherlands?
Both have country-specific rules your banner must meet — the German § 25 TDDDG has no legitimate-interest route, and the Dutch AP scans 10,000 sites a year.
E-commerce is not flying under the radar
The assumption that regulators only pursue Big Tech died in September 2025, when France's CNIL fined Shein €150 million for placing cookies before users gave permission and for an inadequate reject option on its banner. On the same day, Google was fined €325 million. Shein is an e-commerce store. The violation was the banner and what fired behind it.
Shopify stores are, if anything, easier targets than most. They are trivially identifiable — the platform fingerprint is obvious in the page source. They run a predictable stack: GA4, Meta Pixel, Klaviyo, Hotjar, TikTok. And the merchant usually assumes the platform handled compliance. That combination is exactly what an automated regulator scan or a claimant's tooling is built to find.
Scan any Shopify store in 10 seconds
Every trap on this page produces the same observable symptom: something transmits before the visitor chooses. That is checkable from outside the store, with no admin access, in about ten seconds — which makes it the fastest audit in an agency's toolkit.
Our free scanner opens the storefront with a clean session, records every tracker that fires before consent, and shows you exactly what a regulator's scan would capture. Run it on a client's store before the pitch. It is a more persuasive argument than any deck.
The EU Shopify checklist, in order
Confirm the banner actually shows to EU visitors
Settings → Customer privacy → Cookie banner → Regions and content. Either keep automated settings on and verify an active EEA/UK market exists, or turn automation off and select the regions explicitly. Do not infer your legal scope from your Markets configuration — that setting was made for shipping and currency reasons.
Purge theme.liquid and Additional scripts
Search theme.liquid for fbq, gtag, googletagmanager, hotjar, clarity, tiktok. Check Settings → Checkout → Additional scripts, and checkout.liquid on Plus. Move anything you find into Customer events — and delete the original. Adding the native version does not remove the old one.
Set the Permission field on every custom pixel
Settings → Customer events → Custom pixels. Each pixel's Permission setting decides whether Shopify's sandbox blocks it pre-consent. Marketing pixels need marketing permission; analytics need analytics. A wrong setting means Shopify fires it before consent exactly as instructed.
Audit installed apps for their own cookies
Shopify has no control over whether a third-party app tracks customers. Review each installed app: does it integrate with the Customer Privacy API? Reviews apps, chat widgets, upsell apps and loyalty apps are frequent offenders. Every install or removal changes your cookie surface.
Test in incognito — decline, then watch
Open the storefront in a private window with DevTools → Network. Watch what fires before you touch the banner. Then click Reject and reload. If Meta or GA4 still transmit, the banner is theatre — and arguably worse than no banner, because you are now visibly asking for consent you don't honour.
Fix the banner design for EU standards
Reject as prominent as Accept, on the same layer, at the same effort. Granular categories so a visitor can take analytics but refuse marketing. No pre-ticked boxes. This is where the default banner most often needs replacing rather than configuring.
Keep consent records you can produce
The API tracks the current visitor's state; it is not an audit log. If a regulator asks what was shown, what was chosen and when, you need timestamped records per visitor and per banner version. This is the single most common gap on otherwise well-configured stores.
Re-scan after every change
Apps add and remove cookies constantly. Re-run the scan whenever you install or remove an app, change theme, or add a pixel. On client retainers, make it a monthly line item — it takes ten seconds and it is the cheapest insurance in the engagement.
Shopify EU cookie compliance checklist 2026
Shopify EU cookie consent — frequently asked questions
Does Shopify's built-in cookie banner meet GDPR requirements?
Why isn't my Shopify cookie banner showing to EU visitors?
Do pixels in theme.liquid respect Shopify's cookie banner?
What is the Shopify Customer Privacy API?
Do I need a third-party consent app for my Shopify store?
Does the Shopify cookie banner work on checkout?
My Meta Pixel stopped working after enabling privacy settings — why?
Can a Shopify store actually get fined over cookies?
One pixel. Every Shopify store. Every EU market.
ConsentPixel — Privacy · Verified blocks third-party trackers at the browser level until the visitor consents — including scripts that bypass Shopify's own consent system — integrates with the Customer Privacy API, and logs every decision with a timestamp. Manage every client store from one dashboard.
No credit card required · Setup in 10 minutes · Agency plans from 10 domains