Cookie Consent Audit: What You Need to Be Compliant
A plain-English guide to auditing your cookie consent banner for GDPR, CCPA, and ePrivacy compliance — what to check, what to fix, and how to verify it works.
# Cookie Consent Audit: What You Need to Be Compliant
If your website sets a tracking cookie before a visitor clicks anything, you probably have a compliance problem. It's the most common mistake small business sites make — and the easiest one for a regulator, a competitor, or a privacy-savvy customer to spot.
This guide walks you through a practical cookie consent audit. No legalese. Just what to check, what to fix, and how to confirm it actually works.

Why this matters for small businesses
Cookie consent rules aren't just for enterprise sites. If you have visitors from the EU, the UK, California, Colorado, Virginia, Connecticut, Utah, or any of the growing list of US states with privacy laws, you're on the hook. GDPR fines can reach 4% of annual revenue, but the realistic risks for most small businesses are:
- A customer complaint to a data protection authority
- A class action under California's CCPA/CPRA
- Lower conversion from a poorly designed banner
- Lost trust when a savvy customer sees you firing Facebook Pixel before they consent
Most sites fail audits not because the owner is careless, but because a theme, plugin, or agency added tracking scripts without checking what fires when.
What "consent" actually means under the major laws
GDPR (EU/UK) requires consent that is freely given, specific, informed, and unambiguous:
- A clear affirmative action (clicking a button — not "continued browsing")
- Reject must be as easy as Accept
- No pre-ticked boxes
- No non-essential cookies before consent
- Cookie categories and third parties must be disclosed
- Withdrawing consent must be as easy as giving it
CCPA/CPRA (California) uses an opt-out model, but you still need:
- A clear "Do Not Sell or Share My Personal Information" link
- Recognition of the Global Privacy Control (GPC) browser signal
- A privacy policy listing the categories of data you collect and share
The ePrivacy Directive — not GDPR — is the EU law that actually governs cookies. It requires opt-in for anything that isn't strictly necessary.
If you serve both EU and US visitors, you generally need a geo-aware banner.
The 8-point cookie consent audit
Run through it in order. Most failures hide between steps 3 and 5.
1. Inventory every cookie and tracker
Open your homepage in an incognito window. In DevTools, go to Application → Cookies and list everything set before you click anything. Then visit a product page, a blog post, and your contact form. Note any new cookies.
Also check:
- Local storage and session storage
- Pixel fires (Network tab, filter by "facebook", "google", "tiktok")
- Cookies set by your CMS, CDN, A/B testing tool, chat widget, or video embed
Build a simple spreadsheet: Cookie name, Domain, Purpose, Category (necessary / functional / analytics / marketing), Duration, Third party. If you can't explain what a cookie does, mark it for removal until you can.
2. Check what fires before consent
This is where most sites fail. Reload in a fresh incognito window. Before you touch the banner, check the Network tab.
Red flags if any of these load pre-consent:
- google-analytics.com or googletagmanager.com (unless using consent mode)
- facebook.net or connect.facebook.net
- hotjar.com, clarity.ms, fullstory.com
- doubleclick.net
- linkedin.com/li.lms-analytics
- TikTok analytics
- Any retargeting or ad network
Strictly necessary is a narrow category: shopping cart sessions, CSRF tokens, theme preferences. Analytics is not strictly necessary, no matter what your developer says.

3. Audit the banner itself
Score yours against this mini-checklist:
- [ ] Visible on first load, before any non-essential tracking fires
- [ ] Accept and Reject buttons are equally prominent (same size, color, position)
- [ ] No pre-ticked boxes for non-essential categories
- [ ] A clear link to granular settings where users toggle individual categories
- [ ] A link to the full cookie policy
- [ ] Closing with the X or clicking outside does NOT count as consent
- [ ] No "implied consent" language like "by continuing you agree…"
Dark patterns to remove: a giant green Accept All next to a tiny gray "Manage preferences." A Reject option buried two clicks deep. Consent walls blocking content are heavily scrutinized in the EU.
4. Verify the categories make sense
Most consent platforms group cookies into:
- Strictly necessary — always on, no consent needed
- Functional / preferences — language, region, dark mode
- Analytics / performance — Google Analytics, Plausible, Matomo, Hotjar
- Marketing / advertising — Facebook Pixel, Google Ads, TikTok Pixel, retargeting
Open the granular settings on your own banner. Every cookie from step 1 should sit in the right category. A common bug: Google Analytics ends up in "Strictly necessary" because someone misconfigured the platform. Move it.
5. Test that rejecting actually rejects
This catches the most violations.
- Open your site in a fresh incognito window
- Click Reject All (or toggle every non-necessary category off)
- Browse 3–4 pages for about 60 seconds
- Recheck DevTools
You should see only strictly necessary cookies. No _ga, no _fbp, no _gcl_au. If you do, your consent management platform isn't gating scripts — it's just hiding the banner. This is the #1 audit finding in the wild.
The fix is usually one of:
- Move Google Analytics into Tag Manager with consent mode v2
- Configure your CMP to block scripts by category, not just display the banner
- Replace hardcoded
tags in your theme with conditional loaders
6. Test GPC and Do Not Track
For California visitors, the Global Privacy Control signal is enforceable. Install the GPC browser extension or use Brave/DuckDuckGo, which send it by default. Visit your site — your CMP should detect the signal and treat it as an opt-out automatically.
Document whether GPC is honored. If you sell to California consumers and don't honor GPC, you have a CCPA finding.
7. Check the consent log
You must be able to prove a user consented. Your CMP should store:
- A timestamp
- The policy version they accepted
- Which categories they accepted
- A way to retrieve the record on request
You don't need to log identifying information — a pseudonymous consent ID is fine. Test it: trigger a consent, then check the dashboard. Can you find your own entry?
8. Verify the policies match reality
Open your cookie policy and compare it to the spreadsheet from step 1. If your policy lists 12 cookies and you found 27, your policy is out of date.
Same for the privacy policy: every third-party processor you found (Stripe, Mailchimp, Intercom, your hosting provider, your CDN) should appear with the category of data they receive.

A walkthrough: a small Shopify store
Call it CornerCandle, a handmade candle shop with EU and US customers.
Step 1 — Inventory. Loading the homepage in incognito, before any clicks, sets:
_shopify_y,_shopify_s— Shopify session (strictly necessary)_ga,_gid— Google Analytics (via the Shopify GA integration)_fbp— Facebook Pixel (via the Facebook & Instagram app)_gcl_au— Google Ads conversion linkercrisp-client/session/…— Crisp live chat
Step 2 — Pre-consent fires. Four non-essential trackers fire before the banner appears. Violation.
Step 3 — Banner. A Shopify app shows "We use cookies. Accept" with no Reject button on the first layer. Reject sits two clicks deep. Failing.
Step 5 — Reject test. Clicking Reject All in deeper settings still leaves _ga and _fbp in place. The banner is decorative — it isn't blocking scripts at the source.
Fixes:
- Switch to a CMP that integrates with Shopify's customer privacy API (Shopify Privacy Hub, Pandectes, Consentmo, or Cookiebot for Shopify)
- Enable Google Consent Mode v2 in the GA and Ads integration
- Move Facebook Pixel into the marketing category, gated by consent
- Add Reject All as a top-level button matching Accept All's size and color
- Update the cookie policy to list all five cookie families and their third parties
After the fixes, a fresh incognito load shows only the two Shopify session cookies until the visitor chooses. Compliant.
Common small-business mistakes
- Trusting that your theme is compliant out of the box. It usually isn't — themes ship with analytics hardcoded.
- Using a free CMP that only hides the banner. Decorative, not compliant.
- Forgetting embedded content. A YouTube embed drops cookies on load. Use
youtube-nocookie.comor a click-to-load wrapper. - Forgetting form tools. Typeform, Calendly, HubSpot forms set cookies — they belong in your inventory.
- One banner for every region. EU visitors need opt-in. California visitors need opt-out plus a Do Not Sell link. One banner can't serve both.
- Never re-auditing. Every new marketing tool changes your cookie footprint.
How often to re-audit
- Quarterly: Full 8-step audit
- After any change: New plugin, new ad platform, new chat tool, new embed
- Annually: Refresh the cookie policy and privacy policy
- When laws change: Major CCPA updates, new state laws, EU guidance

What good looks like
A compliant small business site, audited end to end, looks like this:
- Strictly necessary cookies only on first load
- A banner with equally weighted Accept and Reject and a clear link to granular settings
- Accurate categories in the granular panel
- Scripts that actually block when the visitor declines
- A consent log you can produce on request
- A cookie policy that matches the cookies in use
- GPC and similar signals honored automatically
- A quarterly re-audit on the calendar
It isn't glamorous, but it protects you from fines, builds trust with privacy-conscious customers, and usually improves performance — half the trackers you've been firing weren't doing anything useful anyway.
Run a free audit on your site
If you're not sure whether your site fires trackers before consent, or whether your banner clears the bar, run a free scan on FreeSiteAudit. It checks the basics automatically — cookies set before interaction, missing privacy policy links, common consent banner issues — and returns a prioritized fix list you can hand to a developer or work through yourself. It takes about 60 seconds and tells you whether you have a problem worth fixing today.
Sources
Check your website for free
Get an instant score and your top 3 critical issues in under 60 seconds.
Get Your Free Audit →