Client-side tracking & consent
Executive Summary
The most urgent problem for Vampire Vape is that tags are firing after users select "Reject All" on the consent banner, which represents a serious compliance risk under UK GDPR and PECR and is almost certainly the primary driver of the site's score of zero. Across the 25 URLs audited, this single issue accounts for the overwhelming majority of the 54 high-severity findings, meaning that tracking is systematically ignoring users' consent choices at scale. This exposes the business to potential regulatory scrutiny from the ICO and could undermine user trust if it came to light publicly. Separately, a duplicate GA4 installation was also identified, which, once the consent issue is resolved, will need to be addressed to prevent inflated session counts and skewed analytics data. Fixing the consent signal integration with the tag management setup should be treated as an immediate priority before any further data collection takes place.
At a glance
Top recommendations
HIGH GA4 fires after Reject All: implement Consent Mode v2 blocking immediately
GA4 tags firing after a user clicks Reject All is a direct breach of GDPR Article 6 and PECR, exposing the business to regulatory fines and Cookiebot consent log evidence already exists in your network traffic.
How to fix
- In GTM, open every Google Tag / GA4 Configuration tag and confirm it has NO built-in consent override — remove any 'consent_override' or 'no-check' settings.
- In the Cookiebot GTM template (or your CMP's GTM integration), ensure the dataLayer push fires `gtag('consent', 'default', {analytics_storage: 'denied', ad_storage: 'denied', wait_for_update: 500})` before the GTM snippet loads, placed in a tag with trigger 'Consent Initialization - All Pages'.
- Add a Consent Update tag that calls `gtag('consent', 'update', {...})` on the Cookiebot `CookiebotOnAccept` / `CookiebotOnDecline` custom events, mapping Cookiebot's `CookieConsent.statistics` → `analytics_storage`.
- On every GA4 tag, set the built-in Consent Setting to 'No additional consent required' and rely solely on Consent Mode signals — do NOT add an additional consent trigger, as Consent Mode handles blocking natively.
- Validate in GTM Preview mode: reject all cookies, confirm GA4 tags show status 'Blocked by Consent Mode' (orange icon) and that no `g/collect` requests appear in the browser network tab after rejection.
HIGH Phone number PII leaking to GA4 and Cookiebot across multiple parameters
Sending phone numbers as personal data to Google Analytics (params `cid`, `sid`, `_p`, `ep.ga_temp_client_id`, `uafvl`) and Cookiebot (`nocache`) violates GDPR Article 5(1)(c) data minimisation and Google's own measurement terms of service, risking account suspension and regulatory action.
How to fix
- Identify the source: in GTM, audit all GA4 Event tags and the GA4 Configuration tag for any Variable that reads from form fields, URL parameters, or dataLayer keys (`ga_temp_client_id`, `cid`, `sid`) that could contain user-entered phone numbers — check Custom Dimensions and Event Parameters mapped in the tag.
- For any field value that may contain a phone number, create a GTM Custom JavaScript Variable that applies a regex sanitiser, e.g. `return inputValue.replace(/(\+?\d[\s\-.]?){7,15}/g, '[REDACTED]')`, and use that variable instead of the raw value.
- In the GA4 Configuration tag, ensure `client_id` is derived only from the `_ga` first-party cookie (`{{Cookie - _ga}}`), not from any user-supplied dataLayer key; remove any `ga_temp_client_id` mapping if it surfaces form data.
- For the Cookiebot `nocache` parameter: this is a timestamp appended by Cookiebot's own SDK — verify your site is not appending additional query string data to Cookiebot URLs via GTM tag URL overrides or custom HTML tags; if clean, the phone detection is likely a false positive on the numeric timestamp, but confirm by inspecting the raw `nocache` value in the network tab.
- Enable GA4's built-in Data Redaction setting: in the Google Tag (gtag configuration), set `redact_device_info` and in GA4 Admin → Data Streams → More Tagging Settings → Enable Redaction of Emails (extend regex pattern to cover phone formats under Advanced Settings).
- Validate by triggering the affected forms in GTM Preview, inspecting the outgoing `g/collect` request payload in the browser Network tab, and confirming no digit sequences matching phone patterns appear in `cid`, `sid`, `_p`, or `ep.*` parameters.
HIGH Remove duplicate GA4 installs (3 instances found) to stop event double/triple-counting
Three simultaneous GA4 hits per user interaction will triple reported conversions, sessions, and revenue in GA4, making every KPI in your dashboards and Google Ads bidding models incorrect.
How to fix
- In GTM, go to Tags and filter by tag type 'Google Tag' and 'Google Analytics: GA4 Event' — list every tag firing the Measurement ID `G-B0FRYP2L33`.
- Check for hardcoded GA4 snippet (`gtag.js`) in the site's HTML `<head>` outside GTM — use browser DevTools Sources panel to search for `G-B0FRYP2L33`; if found, remove it from the CMS/template and let GTM own all GA4 loading.
- In GTM, ensure there is exactly ONE Google Tag (formerly GA4 Configuration tag) with ID `G-B0FRYP2L33` set to fire on 'All Pages'; delete or pause all duplicates.
- Check for additional GTM containers or hardcoded `gtag('config', 'G-B0FRYP2L33')` calls in custom HTML tags or third-party scripts and remove them.
- Validate in GTM Preview + GA4 DebugView: load any page and confirm exactly one `page_view` event appears in DebugView; also inspect the Network tab and count `g/collect` requests on page load — there should be one, not three.
HIGH Remove duplicate GTM container installs (3 instances found) to eliminate cascading tag fires
Three GTM container loads mean every tag inside GTM fires three times, which is the root cause amplifying the duplicate GA4 hits and PII leaks detected above — fixing this will proportionally reduce all other issues.
How to fix
- In browser DevTools Network tab, filter by `gtm.js` and note all container IDs loading — confirm whether it is the same container ID loading three times or multiple different container IDs.
- Search the site codebase (CMS templates, `<head>` partials, footer includes, React/Vue component mounts) for the GTM snippet (`googletagmanager.com/gtm.js`) and ensure it appears exactly once in `<head>` and the `<noscript>` iframe exactly once in `<body>`.
- If using a CMS (e.g. WordPress), check plugins such as MonsterInsights, WPCode, or theme options panels that may inject a second or third GTM container independently of the developer-placed snippet — disable duplicate injections.
- If multiple container IDs are legitimately needed, use GTM's Zones or a single container with environment-specific workspace rather than loading separate containers on the same page.
- Validate with GTM Preview: open the Summary panel and confirm only one container initialisation event appears; in the Network tab, `gtm.js` should be requested exactly once per page load.
Consent matrix (trackers fired by state)
| URL | default | accept_all | reject_all | CMP |
|---|---|---|---|---|
| https://www.vampirevape.co.uk/ | 11 | 11 | 11 | Cookiebot |
| https://www.vampirevape.co.uk/e-liquid | 11 | 11 | 11 | Cookiebot |
| https://www.vampirevape.co.uk/vape-deals | 11 | 11 | 11 | Cookiebot |
| https://www.vampirevape.co.uk/brands/vampire-vape | 11 | 11 | 0 | Cookiebot |
| https://www.vampirevape.co.uk/heisenberg-nic-salts | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/batteries-chargers | 11 | 0 | 0 | Cookiebot |
| https://www.vampirevape.co.uk/vampire-vape-heisenberg-10ml-e-liquid-concentrate | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/vampire-vape-grape-30ml-e-liquid-concentrate | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/vampire-vape-blood-sukka-10ml-e-liquid | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/aspire-pixo-aura-vape-pod-kit | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/uwell-crown-x-vape-pod-kit-red | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/innokin-trine-se-vape-pod-kit | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/freemax-rexa-lite-vape-pod-kit | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/smok-ipx-80-replacement-pods-3pk | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/oxva-vprime-replacement-pods-2pk | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/innokin-vcap-replacement-pods-1pk | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/smok-nord-5-replacement-pods-3pk | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/voopoo-uforce-x-nano-tank-replacement-glass | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/smok-tfv12-coils-v12-t6 | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/innokin-scion-ii-coil-0-36ohm-4-core-3-pk | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/pablo-nic-pouches-frosted-ice-24mg | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/nicit-up-8020-10ml-18mg-nic-shot | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/checkout/cart/ | 11 | 11 | 11 | Cookiebot |
| https://www.vampirevape.co.uk/contact | 0 | 0 | 0 | — |
| https://www.vampirevape.co.uk/delivery | 0 | 0 | 0 | — |
Issues (5 types across 54 occurrences)
| Severity | Category | Issue | Affected | Recommendation |
|---|---|---|---|---|
| high | pii | PII (phone) sent to GA4 Detected phone in params ['_p', 'cid', 'gtm', 'sid', 'uafvl'] of https://region1.google-analytics.com/g/collect?v=2&tid=G-B0FRYP2L33>m=45je64t1v9102911253z88112823 |
6 URLsShow listhttps://www.vampirevape.co.uk/ https://www.vampirevape.co.uk/e-liquid https://www.vampirevape.co.uk/vape-deals https://www.vampirevape.co.uk/brands/vampire-vape https://www.vampirevape.co.uk/batteries-chargers https://www.vampirevape.co.uk/checkout/cart/ |
Hash, redact, or remove PII before sending. Use Enhanced Conversions / CAPI with hashed values where required. |
| high | data_quality | Duplicate GA4 install Found 3 instances of GA4 on the same page; may double-count events. |
5 URLsShow listhttps://www.vampirevape.co.uk/ https://www.vampirevape.co.uk/e-liquid https://www.vampirevape.co.uk/vape-deals https://www.vampirevape.co.uk/brands/vampire-vape https://www.vampirevape.co.uk/checkout/cart/ |
Audit GTM containers + hard-coded snippets and keep a single GA4 install. |
| high | data_quality | Duplicate gtm install Found 3 instances of gtm on the same page; may double-count events. |
5 URLsShow listhttps://www.vampirevape.co.uk/ https://www.vampirevape.co.uk/e-liquid https://www.vampirevape.co.uk/vape-deals https://www.vampirevape.co.uk/brands/vampire-vape https://www.vampirevape.co.uk/checkout/cart/ |
Audit GTM containers + hard-coded snippets and keep a single gtm install. |
| high | pii | PII (phone) sent to Cookiebot Detected phone in params ['nocache'] of https://consent.Cookiebot.com/logconsent.ashx?action=accept&nocache=1777626516544&dnt=false&method=s |
5 URLsShow listhttps://www.vampirevape.co.uk/ https://www.vampirevape.co.uk/e-liquid https://www.vampirevape.co.uk/vape-deals https://www.vampirevape.co.uk/brands/vampire-vape https://www.vampirevape.co.uk/checkout/cart/ |
Hash, redact, or remove PII before sending. Use Enhanced Conversions / CAPI with hashed values where required. |
| high | consent | Tags fire after Reject All Vendors firing despite Reject All: GA4. This breaches GDPR/PECR and is incompatible with Consent Mode v2 'denied' signals. |
4 URLsShow listhttps://www.vampirevape.co.uk/ https://www.vampirevape.co.uk/e-liquid https://www.vampirevape.co.uk/vape-deals https://www.vampirevape.co.uk/checkout/cart/ |
Add consent-aware GTM triggers (Consent Mode v2 'ad_storage' / 'analytics_storage' = denied) and verify tags wait for an Update signal before firing. |