检查清单
How do you test a Shopify cookie banner's Reject All button?
Test Shopify Reject All in a clean profile: compare fresh, reject, and accept cookies and pixels. The Privacy API records consent and does not block scripts.
In brief
To test Reject All on a Shopify storefront, open the shop in a clean profile, click Reject All, Decline, or Essential only, then navigate once. Record cookies, storage, and third-party ad or analytics requests. Compare that run with a fresh visit and with Accept All on the same URL. If post-reject marketing pixels look like Accept, the banner is not gating those scripts. The Customer Privacy API records consent and does not by itself block theme, app, or pixel scripts.
Not legal advice
This page is a Shopify storefront test for Reject All, Decline, or Essential only. It is not legal advice, not a GDPR or CCPA certificate, and not a verdict that a banner meets a statute. Pass and fail below mean the network and cookie jar changed, or did not. Counsel still owns the legal reading.
Short answer
Use a clean browser profile, open the shop, click Reject All (or Decline, or Essential only), then reload or navigate once. Record cookies, storage, and third-party ad and analytics requests. Compare that run with a fresh visit and with Accept All on the same URL.
If marketing pixels or analytics after Reject look like Accept, the banner UI is not gating the scripts that matter. On Shopify that often happens when a theme embed, an app pixel, or a customer event ignores the consent state. Shopify's Customer Privacy API records consent. It does not automatically block scripts. The API limits guide walks that split. Keep state-labeled screenshots and request lists.
When the banner exists and the pixels still fire
The failure mode is specific. The reject control is on the page. In Network you still see hosts such as connect.facebook.net, www.googletagmanager.com, or analytics.tiktok.com, or the same marketing cookies you saw after Accept. Those host names are examples of what to look for. They are not a measurement of a named shop.
Typical causes sit outside the banner widget. A script in theme.liquid or a Liquid snippet loads on every page. An app embed injects a tag the banner does not know about. A customer event or a web pixel subscribes without reading the consent state. A pixel was installed in a channel the CMP does not control. The server sets a cookie on the document response before any client script can wait.
One sentence on the API: a recorded consent state is not a firewall. Tags still have to read that state and skip their own loads. Read the Customer Privacy API limits guide before you spend a day inside the banner admin.
Prep
Write down the exact button text you will click. Reject All, Decline, and Essential only are not interchangeable if the banner wires them differently. Note the theme and the apps you expect to load. Verify current Shopify admin labels in Shopify's own docs when you follow a menu. This page describes capabilities, not a click path that will rot when the admin is renamed.
If you need to claim an EU result, run the test in an EU context or use ConsentProbe paid EU scenarios. A free US-baseline visit is one non-California technical record. It is not an EU reject conclusion. The free versus paid guide states that scope. The EU fresh, reject, and accept guide is the three-state comparison when the region is the EU.
| Item | Spec |
|---|---|
| Profile | Clean or dedicated. Turn off an ad blocker that would hide the bug. |
| Storefront | A production or staging URL you control. Note the theme and the apps. |
| Region | EU-context testing, or a paid EU scenario, if you will describe the result as EU. A free US-baseline visit is not that result. |
| Labels | Exact button text: Reject All, Decline, or Essential only. |
| Tools | DevTools Network and Application (cookies and storage). Optional HAR, with query secrets removed. |
Three runs
Change only the consent action. Keep the URL and the wait time stable. Start runs B and C from clean profiles so an earlier Accept does not leak into Reject.
| Run | Action | Record |
|---|---|---|
| A Fresh | Load the shop. Do not click Accept. | Cookies, storage, third-party requests, banner screenshot. |
| B Reject | Click Reject All, then navigate once. | The same surfaces, plus whether marketing pixels dropped. |
| C Accept | New clean profile. Click Accept All. | The same surfaces, as the comparison baseline. |
How to read the diff
Build a short vendor list from the three runs. Mark each host or cookie present or absent.
Vendors present in B and in C mean Reject was ignored for those vendors. B cleaner than C means partial wiring: some tags waited, some did not. Write which hosts stayed. A quiet analytics cookie does not clear a marketing pixel that still fired.
If A is already full of marketing pixels, you have a pre-consent problem as well as a reject problem. The Shopify pre-consent checklist and the general pre-Accept guide cover that fresh load. This page stays on the reject run. The general Reject All guide covers the same failure on non-Shopify stacks. Use it when the shop is not the only property in scope.
Shopify checks after the diff
The Shopify pre-consent checklist is the longer storefront list. These rows are the reject-specific slice. Confirm current behavior in Shopify's pixel and customer privacy docs before you file a bug against a menu name.
- Customer events and pixels: do they wait until marketing is allowed, or do they load on the first page view?
- App embeds: which ones inject a tracker the banner never names?
- Theme files: is a script hard-coded in theme.liquid or a snippet that renders on every template?
- Banner and API: does the banner write the Customer Privacy API, and do the tags read that state before they fire?
- Other storefronts: password page, landing pages, and checkout-adjacent pages if they are in scope and you are allowed to test them.
Evidence pack
Label the files Fresh, Reject, and Accept. Include cookie tables, key request URLs (the pixel domains, not only the banner vendor), CMP or banner screenshots, timestamps, the shop URL, and theme or app notes.
Send engineering the pixel domains that survived Reject, circled on the request list. A screenshot of the green reject toast without the Network panel does not show the bug.
ConsentProbe maps findings to a request, a cookie, or a screenshot. Paste the shop URL when you want that labeled pack without keeping three DevTools sessions straight.
DIY versus ConsentProbe
DIY is the right way to learn one shop. A stored pack is the right handoff when someone who was not in the browser has to read the result.
| DIY on Shopify | ConsentProbe | |
|---|---|---|
| Setup | Manual profiles and DevTools | Paste the storefront URL. Scenarios are labeled. |
| Consistency | A reused profile or a missed pixel is easy | The pack repeats the same evidence types |
| Scope | Good for learning and a one-off debug | Use it when engineering or counsel needs a shareable file |
| Region | You have to control the context yourself | Free US-baseline is not an EU result. Paid EU covers reject and accept comparisons. |
FAQ
How do I test Shopify Reject All in five steps?
Use a clean profile, load the shop, click Reject All, navigate once, and compare cookies and requests with a separate Accept All run.
Why does Reject All still track on Shopify?
Theme scripts, app embeds, customer events, or pixels often load outside the banner. The Customer Privacy API records consent. It does not automatically block those scripts.
Is the Customer Privacy API enough?
It records and exposes consent. You still verify Network and cookies on the storefront. Read the API limits guide for that boundary.
Does a free US ConsentProbe scan prove EU Reject All?
No. A free US-baseline visit is a non-California technical record. Use paid EU scenarios when you need an EU reject and accept comparison.
What do I send my developer?
Fresh, Reject, and Accept packs with the pixel domains marked. A banner screenshot alone leaves the failing host unnamed.
Should I also check before Accept?
Yes. Pre-consent loading is a separate failure. Use the Shopify pre-consent checklist for that pass.
Related guides
The general Reject All guide is the non-Shopify diagnosis. The Shopify pre-consent checklist and the platform-agnostic checklist cover the fresh load. The API limits guide explains why a recorded consent state still leaves scripts running.
- Reject All Still Tracking: What to Check After You Say No
- Shopify pre-consent checklist: what to check before Accept
- Pre-consent audit checklist: what to verify before Accept
- Shopify Customer Privacy API does not block scripts
- Pre-Consent Cookie Audit: A Storefront Checklist
- CMP claims vs runtime evidence: how do you prove the banner actually works?
- What does a free US-baseline cookie audit prove vs paid EU or California scans?
- How do you audit cookies across EU fresh, reject, and accept visits?
- Testing Shopify Pixels Before Consent
- ConsentProbe methodology
- Pricing and listed regional products
Sources
These links cover the platform and regulatory context used in this guide. Applicability still depends on the organization and jurisdiction.
保存一次美国基线技术记录
完成自行检查后,可以跑一次免费美国基线审计:在加州以外做一次浏览器访问,把 Cookie、请求和截图存成证据。这次访问不会跑欧盟拒绝/接受,也不会跑加州 GPC。欧盟、加州和 Global 2 可在登录后的账单页购买。