Waivern Waivern Consent Analyser ← Home   Log
ePrivacy / GDPR Compliance Report  ·  ePrivacy/GDPR (EU)

Consent Compliance Report

2026-04-01 23:30:52 UTC  ·  https://www.bbc.co.uk  ·  CMP: Sourcepoint   🤖 AI on
📍 Analysis ran from: 🇳🇱 Amsterdam, North Holland, The Netherlands  ·  IP: 208.77.244.106  ·  Railway  ·  Results reflect how this site presents to this location.
Post Reject All — compliance state
17 FAIL   19 PASS   4 MANUAL  ·  3 warn   0 err

CMP Interaction

Banner detected True
Accept button I agree
Reject button I do not agree
Clicks to accept / reject 1 / 1
Reject buried in manage panel False

Screenshots

Pre-Consent — initial page load
Pre-Consent — initial page load
Post Accept All — consent baseline
Post Accept All — consent baseline
Post Reject All — compliance state
Post Reject All — compliance state

Section M — Summary

Category Result
Pre Consent Clean✗ FAIL
No Tracking Cookies Pre Consent✗ FAIL
Tracker Globals Undefined✗ FAIL
No Tracking Storage Pre Consent✓ PASS
Network Blocked After Decline✗ FAIL
Third Party Cookies Absent✗ FAIL
Doc Cookie Clean Post Reject✗ FAIL
Web Storage Clean Post Reject✓ PASS
First Party Cookies Classifiedℹ INFO
Server Side Cookies Gated✗ FAIL
No Cname Cloaking✓ PASS
Tracker Globals Absent✗ FAIL
Dom Scripts Blocked✗ FAIL
Reject Equals Accept Clicks✓ PASS
No Preticked Boxes☐ MANUAL
Persistent Withdrawal Widget✓ PASS
No Cookie Wall✓ PASS
Consent Persists✗ FAIL
Run Log   77 entries  ·  ⚠ 3 warning(s)  ·  raw JSON
elapsed level session message
0.0s▶ STEPMAINRun f3331e88 started
{"url": "https://www.bbc.co.uk"}
0.0s· INFOMAINDetecting probe server location
0.2s· INFOMAINProbe location
{"ip": "208.77.244.106", "city": "Amsterdam", "region": "North Holland", "country": "The Netherlands", "country_code": "NL", "org": "Railway", "latitude": 52.37403, "longitude": 4.88969}
0.2s▶ STEPMAINStarting analysis of https://www.bbc.co.uk
{"mode": "GDPR"}
0.6s· INFOMAINChromium launched
{"headless": true}
0.6s· INFOPREFLIGHTNavigating to https://www.bbc.co.uk
1.4s· INFOPREFLIGHTNetwork idle reached
1.8s▶ STEPASession A start (accept path)
1.9s· INFOANavigating to https://www.bbc.co.uk
2.8s· INFOANetwork idle reached
4.8s· INFOACapturing pre-consent state
4.9s· INFOAPre-consent state captured
{"pre_consent_cookies": 16, "pre_consent_ad_cookies": 1, "pre_consent_tracking_storage": 0, "pre_consent_tracker_globals": ["analytics"], "pre_consent_unblocked_scripts": 0, "pre_consent_capture_error": null}
5.8s· INFOABanner: found
6.0s· INFOAAccept All interaction
{"cmp": "Sourcepoint", "button_text": "I agree", "clicked": true, "in_iframe": true, "error": null}
8.0s· INFOACapturing post-accept baseline state
8.4s· INFOABaseline captured
{"baseline_cookies": 34, "baseline_ad_cookies": 5, "baseline_tracking_storage": 0, "baseline_tracker_globals": ["analytics"], "baseline_unblocked_scripts": 8, "baseline_capture_error": null}
9.1s· INFOAContext closed, HAR saved
9.1s▶ STEPASession A complete
{"pre_consent_cookies": 16, "pre_consent_ad_cookies": 1, "pre_consent_tracking_storage": 0, "pre_consent_tracker_globals": ["analytics"], "pre_consent_unblocked_scripts": 0, "pre_consent_capture_error": null, "baseline_cookies": 34, "baseline_ad_cookies": 5, "baseline_tracking_storage": 0, "baseline_tracker_globals": ["analytics"], "baseline_unblocked_scripts": 8, "baseline_capture_error": null}
9.1s▶ STEPBSession B start (reject path)
9.1s· INFOBNavigating to https://www.bbc.co.uk
9.9s· INFOBNetwork idle reached
11.9s· INFOBCapturing pre-consent state
11.9s· INFOBPre-consent B captured
{"pre_consent_B_cookies": 16, "pre_consent_B_ad_cookies": 1, "pre_consent_B_tracking_storage": 0, "pre_consent_B_tracker_globals": ["analytics"], "pre_consent_B_unblocked_scripts": 0, "pre_consent_B_capture_error": null}
12.8s· INFOBBanner: found
12.8s· INFOBPersistent widget found pre-reject (CMP fully loaded)
{"found": true, "text": "(consent widget)", "in_iframe": false}
27.4s· INFOBClick symmetry measured
{"accept_clicks": 1, "reject_clicks": 0}
27.6s· INFOBReject All interaction
{"cmp": "Sourcepoint", "button_text": "I do not agree", "clicked": true, "clicks_required": 1, "required_manage_panel": false, "panel_navigated": false, "panel_new_frames": 0, "panel_wait_s": 0.0, "error": null}
29.6s· INFOBSite accessible after reject: True
29.6s· INFOBCapturing post-reject state
29.8s· INFOBPost-reject captured
{"post_reject_cookies": 26, "post_reject_ad_cookies": 1, "post_reject_tracking_storage": 0, "post_reject_tracker_globals": ["analytics"], "post_reject_unblocked_scripts": 4, "post_reject_capture_error": null}
29.8s· INFOBPersistent widget check
{"found": true, "text": "(consent widget)", "in_iframe": false}
29.8s· INFOBCapturing subpages
33.9s· INFOB2 subpage(s) captured
{"urls": ["https://www.bbc.co.uk/aboutthebbc", "https://www.bbc.co.uk/accessibility/"], "errors": []}
34.7s· INFOBContext closed, HAR saved
34.7s· INFOBChecking pre-ticked toggles (separate session)
34.7s· INFOBNavigating to https://www.bbc.co.uk
35.5s· INFOBNetwork idle reached
53.8s⚠ WARNBManage/preferences button not visible after 5s wait — toggle check may return 0 results
55.2s· INFOBPre-ticked toggles: 0 found
{"toggles": {}}
55.2s⚠ WARNBToggle check returned 0 results — diagnostics:
{"manage_button_found": false, "manage_button_text": null, "frames_scanned": [], "total_elements_found": 0, "note": "Manage/preferences button not found on page"}
55.2s▶ STEPBSession B complete
{"post_reject_cookies": 26, "post_reject_ad_cookies": 1, "post_reject_tracking_storage": 0, "post_reject_tracker_globals": ["analytics"], "post_reject_unblocked_scripts": 4, "post_reject_capture_error": null, "accept_clicks": 1, "reject_clicks": 1, "reject_at_first_screen": true, "subpages_captured": 2}
55.2s▶ STEPCSession C start (persistence check)
55.2s· INFOCNavigating to https://www.bbc.co.uk
56.0s· INFOCNetwork idle reached
59.1s· INFOCReject for persistence test
{"clicked": true, "error": null}
61.1s· INFOCOpening second tab (same-session test)
61.2s· INFOCNavigating to https://www.bbc.co.uk
61.9s· INFOCNetwork idle reached
64.4s· INFOCSame-session state captured
{"persistence_1_cookies": 25, "persistence_1_ad_cookies": 1, "persistence_1_tracking_storage": 0, "persistence_1_tracker_globals": ["analytics"], "persistence_1_unblocked_scripts": 3, "persistence_1_capture_error": null}
64.7s· INFOCStorage state saved, opening new context
64.9s· INFOCNavigating to https://www.bbc.co.uk
65.6s· INFOCNetwork idle reached
67.9s· INFOCNew-session state captured
{"persistence_2_cookies": 25, "persistence_2_ad_cookies": 1, "persistence_2_tracking_storage": 0, "persistence_2_tracker_globals": ["analytics"], "persistence_2_unblocked_scripts": 5, "persistence_2_capture_error": null}
67.9s▶ STEPCSession C complete
{"persistence_1_captured": true, "persistence_2_captured": true}
67.9s▶ STEPPOLICY_RENDERRendering cookie policy page in browser
68.0s· INFOPOLICY_RENDERNavigating to policy: https://www.bbc.co.uk/cookies
74.2s· INFOPOLICY_RENDERExtracted 513 chars from policy page
74.2s· INFOPOLICY_RENDERPolicy page rendered (513 chars)
74.2s· INFOMAINBrowser closed
74.3s▶ STEPDNSRunning CNAME cloaking checks
74.3s· INFODNSApex domain: co.uk (from hostname: www.bbc.co.uk)
74.6s· INFODNSChecking 9 subdomain(s)
{"subdomains": ["mybbc-analytics.files.bbci.co.uk", "idcta.api.bbc.co.uk", "static.files.bbci.co.uk", "emp.bbci.co.uk", "static.bbci.co.uk", "bbc.co.uk", "a1.api.bbc.co.uk", "nav.files.bbci.co.uk", "ichef.bbci.co.uk"]}
74.8s· INFODNSCNAME check done — 0 tracker CNAME(s)
{"results": [{"sub": "mybbc-analytics.files.bbci.co.uk", "cname": null, "tracker": false, "vendor": null}, {"sub": "idcta.api.bbc.co.uk", "cname": null, "tracker": false, "vendor": null}, {"sub": "static.files.bbci.co.uk", "cname": null, "tracker": false, "vendor": null}, {"sub": "emp.bbci.co.uk", "cname": null, "tracker": false, "vendor": null}, {"sub": "static.bbci.co.uk", "cname": null, "tracke
74.8s▶ STEPPOLICYFetching cookie policy
74.8s· INFOPOLICYPolicy found at https://www.bbc.co.uk/cookies
74.8s· INFOPOLICYFetching policy, cross-referencing 35 cookie(s)
85.3s· INFOPOLICYPolicy fetch OK
{"declared": 7, "undeclared_observed": 33, "ai_used": true}
85.3s⚠ WARNPOLICY33 cookie(s) not in policy
{"cookies": ["__tbc", "__gpi", "_pctx", "_cb_svref", "ckns_policy_exp", "https://www.bbc.com_oeu1775086170103r0.7661490551611259$$27302320011$$session_state", "ckns_policy", "XID", "ckns_explicit", "cX_G", "__gads", "ecos.dt", "ckns_mvt", "ckns_privacy", "usnatUUID", "_pcus", "ckns_eds", "_cb", "IDE", "https://www.bbc.com_oeu1775086177131r0.5938044045327691$$27302320011$$session_state"]}
85.3s▶ STEPMAINAnalysis complete
{"error_count": 0}
85.3s▶ STEPC1Running Component 1 HAR analysis
85.7s· INFOC1Phase hint timestamps passed to HAR analyser
{"reject_click": "2026-04-01T23:29:54"}
85.7s· INFOC1HAR analysis complete — 6 FAIL item(s)
{"total_requests": 369, "phases": ["pre_consent", "post_reject"], "phase_strategy": {"accept": "not_detected", "reject": "url_pattern"}, "fail_items": ["B.1", "E.1", "E.3", "F.1", "G.7", "ADD.2"]}
85.9s· INFOC1Extracted 1 TCF string(s) from accept-path HAR
{"purposes_found": ["All 10 core purposes CONSENTED"]}
85.9s· INFOC1Running C1 on accept-path HAR for C.2/C.3 baseline
85.9s· INFOC1Accept-HAR promoted 2 item(s): ['C.2', 'C.3']
{"phases": ["pre_consent", "post_accept"]}
85.9s▶ STEPCHECKSRunning browser-state checks
85.9s· INFOCHECKSBrowser checks complete — 11 FAIL item(s)
{"fail_items": ["B.2", "B.3", "F.2", "G.2", "G.6", "H.1", "I.1", "I.2", "I.3", "L.2", "L.3"], "mode": "gdpr"}

Detailed Findings

B. Pre-Consent State 3 FAIL   2 PASS   0 MANUAL
B.1 No tracking requests before consent banner interaction
✗ FAIL

2 tracking domain(s) made requests before any consent signal was recorded.

domainvendorcategoryrequest_countfirst_request_timeexample_url
sb.scorecardresearch.comComscoreANALYTICS22026-04-01T23:29:36https://sb.scorecardresearch.com/beacon.js
pagead2.googlesyndication.comGoogle AdSense/GAMADVERTISING12026-04-01T23:29:38https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js
Recommendation: Third-party analytics and advertising scripts must not be loaded until after affirmative consent. Implement a consent-gate that defers all non-essential script initialisation until the TCF API reports a positive consent decision.
B.2 No analytics/marketing cookies in Storage pre-consent
✗ FAIL

1 advertising cookie(s) present in browser storage before any consent was given.

name: optimizelyEndUserId  ·  domain: .bbc.com  ·  value snippet: oeu1775086177131r0.5938044045327691
Recommendation: Advertising and analytics cookies must not be set until after the user has given affirmative consent. Verify server-side Set-Cookie logic does not fire before the consent signal is received.
B.3 JS tracker globals return undefined pre-consent
✗ FAIL

Tracker globals defined before consent: ['analytics']

global: analytics  ·  type: __defined_object__
Recommendation: Tracker initialisation scripts must not execute before consent. Implement a consent gate that loads tracker SDKs only after the TCF API confirms a positive decision.
B.4 No tracking identifiers in localStorage/sessionStorage pre-consent
✓ PASS

No tracking keys found in web storage pre-consent.

B.5 Non-essential scripts have type=text/plain (CMP-blocked) in DOM
✓ PASS

All tracking scripts in DOM appear to be CMP-blocked (type=text/plain) or absent.

C. Baseline Capture 0 PASS   0 MANUAL
C.2 Inventory of third-party tracking domains active after Accept All
ℹ INFO

13 tracking domains active after consent-all (baseline).

▶ Show all 13 rows
domainvendorcategoryfirst_seenexample_url
pub.doubleverify.comDoubleVerify (brand safety)MEASUREMENT2026-04-01T23:29:33https://pub.doubleverify.com/dvtag/signals/ids/pub.json?ctx=29028254&cmp=DV1298722&url=https%3A%2F%2Fbbc.com&ids=1&token
cm.g.doubleclick.netGoogle DoubleClickADVERTISING2026-04-01T23:29:33https://cm.g.doubleclick.net/partnerpixels?gdpr_consent=CQh-8AAQh-8AAAGABCENCYFgAP_gAEAAABpYIoQJAAFAAVAA4ACAAFQAMgAaAA5A
ep1.adtrafficquality.googleGoogle SODAR/IVTADVERTISING2026-04-01T23:29:33https://ep1.adtrafficquality.google/getconfig/sodar?sv=200&tid=gpt&tv=m202603240101&st=env&sjk=2769602542085824
securepubads.g.doubleclick.netGoogle Publisher AdsADVERTISING2026-04-01T23:29:33https://securepubads.g.doubleclick.net/gampad/ads?pvsid=2769602542085824&correlator=2690793528291442&eid=31097528%2C3109
11a4d851dcbbfa5f337830877cc0a539.safeframe.googlesyndication.comGoogle SafeFrame (viewability)MEASUREMENT2026-04-01T23:29:33https://11a4d851dcbbfa5f337830877cc0a539.safeframe.googlesyndication.com/safeframe/1-0-45/html/container.html
sb.scorecardresearch.comComscoreANALYTICS2026-04-01T23:29:33https://sb.scorecardresearch.com/internal-cs/default/beacon.js
ep2.adtrafficquality.googleGoogle SODAR/IVTADVERTISING2026-04-01T23:29:33https://ep2.adtrafficquality.google/sodar/sodar2.js
ib.adnxs.comXandr AppNexusADVERTISING2026-04-01T23:29:33https://ib.adnxs.com/getuidj?gdpr=1&gdpr_consent=CQh-8AAQh-8AAAGABCENCYFgAP_gAEAAABpYIoQJAAFAAVAA4ACAAFQAMgAaAA5AB6AEWAJ
pagead2.googlesyndication.comGoogle AdSense/GAMADVERTISING2026-04-01T23:29:33https://pagead2.googlesyndication.com/pagead/sodar?id=sodar2&v=253&li=gpt_m202603240101&jk=2769602542085824&rc=
cdn.doubleverify.comDoubleVerifyMEASUREMENT2026-04-01T23:29:33https://cdn.doubleverify.com/dvtp_src.js
tps.doubleverify.comDoubleVerify (brand safety)MEASUREMENT2026-04-01T23:29:34https://tps.doubleverify.com/visit.js?flvr=0&ttmms=77&ttfrms=27&bridua=3&tstype=2&eparams=DC4FC%3Dl9EEADTbpTauTauHHH%5D3
tps-dn-ew1.doubleverify.comDoubleVerify (brand safety)MEASUREMENT2026-04-01T23:29:34https://tps-dn-ew1.doubleverify.com/event.jpg?impid=8984bf1de8324c0799dc759ce184857a&consid=&api=1&rc=true
tpsc-ew1.doubleverify.comDoubleVerify (brand safety)MEASUREMENT2026-04-01T23:29:34https://tpsc-ew1.doubleverify.com/event.png?impid=8984bf1de8324c0799dc759ce184857a&flavor=0&gdpr=1&gdpr_consent=CQh-8AAQ
C.3 Full cookie inventory (with expiry, HttpOnly, Secure, SameSite) after Accept All
ℹ INFO

34 cookies in storage after Accept All (full metadata).

▶ Show all 34 rows
namedomainexpires_dayshttp_onlysecuresame_siteclassification
ckns_mvt.bbc.co.uk365.0FalseTrueLaxUNKNOWN
optimizelyEndUserId.bbc.com180.0FalseFalseLaxAD
optimizelySession.bbc.com180.0FalseFalseLaxESSENTIAL
ckns_mvt.bbc.com365.0FalseFalseLaxUNKNOWN
https://www.bbc.com_oeu1775086170103r0.7661490551611259$$27302320011$$session_statea4621041136.cdn.optimizely.com180.0FalseTrueNoneESSENTIAL
ckns_policy.bbc.com365.0FalseFalseLaxUNKNOWN
ckns_policy_exp.bbc.com365.0FalseFalseLaxUNKNOWN
ckns_explicit.bbc.com365.0FalseFalseLaxUNKNOWN
ckns_privacy.bbc.com365.0FalseFalseLaxUNKNOWN
_cb.bbc.com395.0FalseTrueLaxUNKNOWN
_chartbeat2.bbc.com395.0FalseTrueLaxUNKNOWN
_cb_svref.bbc.com0.0FalseTrueLaxUNKNOWN
_sp_su.bbc.com365.0FalseTrueNoneESSENTIAL
_pcid.bbc.com395.0FalseTrueLaxUNKNOWN
consentUUIDwww.bbc.com365.0FalseTrueNoneESSENTIAL
usnatUUID.bbc.com365.0FalseTrueNoneUNKNOWN
_pctx.bbc.com395.0FalseTrueLaxUNKNOWN
_pprv.bbc.com395.0FalseTrueLaxUNKNOWN
__tbc.bbc.com400.0FalseFalseLaxUNKNOWN
xbc.bbc.com400.0FalseFalseLaxUNKNOWN
_pcus.bbc.com395.0FalseTrueLaxUNKNOWN
cX_P.bbc.com395.0FalseTrueLaxUNKNOWN
permutive-id.bbc.com183.0FalseTrueNoneUNKNOWN
UID.scorecardresearch.com390.0FalseTrueNoneUNKNOWN
XID.scorecardresearch.com390.0FalseTrueNoneUNKNOWN
pxid.e488cdb0-e7cb-4d91-9648-60d437d8e491.prmutv.co91.0TrueTrueNoneUNKNOWN
cX_G.bbc.com395.0FalseTrueLaxUNKNOWN
__gads.bbc.com390.0FalseTrueNoneAD
__gpi.bbc.com390.0FalseTrueNoneAD
gckp.cxense.com365.0TrueTrueNoneUNKNOWN
__eoi.bbc.com180.0FalseTrueNoneAD
IDE.doubleclick.net390.0TrueTrueNoneAD
ckns_eds.www.bbc.com400.0FalseFalseLaxUNKNOWN
ecos.dt.www.bbc.comsessionFalseFalseLaxUNKNOWN
C.4 Tracker JS globals active after Accept All (baseline)
ℹ INFO

Globals defined after consent: ['analytics']

global: analytics  ·  type: __defined_object__
D. Decline Non-Essential Consent 1 PASS   0 MANUAL
D.4 Reject requires no more clicks than Accept (EDPB symmetry)
✓ PASS

Accept and Reject both require 1 click(s). Symmetric.

accept clicks: 1  ·  reject clicks: 1  ·  extra clicks to reject: 0  ·  reject required manage panel: False
E. Network Request Verification 2 FAIL   2 PASS   0 MANUAL
E.1 No requests to non-essential third-party domains after reject-all
✗ FAIL

13 tracking domain(s) continued firing after reject-all.

▶ Show all 13 rows
domainvendorcategoryrequest_countin_baselinefirst_seenexample_url
pub.doubleverify.comDoubleVerify (brand safety)MEASUREMENT3False2026-04-01T23:29:54https://pub.doubleverify.com/dvtag/signals/ids/pub.json?ctx=29028254&cmp=DV1298722&url=https%3A%2F%2Fbbc.com&ids=1&token
sb.scorecardresearch.comComscoreANALYTICS2False2026-04-01T23:29:54https://sb.scorecardresearch.com/internal-cs/default/beacon.js
ep1.adtrafficquality.googleGoogle SODAR/IVTADVERTISING2False2026-04-01T23:29:54https://ep1.adtrafficquality.google/getconfig/sodar?sv=200&tid=gpt&tv=m202603240101&st=env&sjk=7252211227740584
pagead2.googlesyndication.comGoogle AdSense/GAMADVERTISING9False2026-04-01T23:29:54https://pagead2.googlesyndication.com/gampad/ads?pvsid=7252211227740584&correlator=22190794992333&eid=31097430&output=ld
a61e8b95a6c4b2cd4f071e5993f576fd.safeframe.googlesyndication.comGoogle SafeFrame (viewability)MEASUREMENT1False2026-04-01T23:29:54https://a61e8b95a6c4b2cd4f071e5993f576fd.safeframe.googlesyndication.com/safeframe/1-0-45/html/container.html
ep2.adtrafficquality.googleGoogle SODAR/IVTADVERTISING3False2026-04-01T23:29:54https://ep2.adtrafficquality.google/sodar/sodar2.js
cdn.doubleverify.comDoubleVerifyMEASUREMENT3False2026-04-01T23:29:54https://cdn.doubleverify.com/dvtp_src.js
tps.doubleverify.comDoubleVerify (brand safety)MEASUREMENT1False2026-04-01T23:29:55https://tps.doubleverify.com/visit.js?flvr=0&ttmms=65&ttfrms=24&bridua=3&tstype=2&eparams=DC4FC%3Dl9EEADTbpTauTauHHH%5D3
cm.g.doubleclick.netGoogle DoubleClickADVERTISING1False2026-04-01T23:29:55https://cm.g.doubleclick.net/pixel?google_nid=doubleverify_ddp&google_ula=7327243&google_hm=**&google_redir=https%3A%2F%
tps-dn-ew1.doubleverify.comDoubleVerify (brand safety)MEASUREMENT1False2026-04-01T23:29:55https://tps-dn-ew1.doubleverify.com/event.jpg?impid=a14d4c4ff7f64d70bab81daa83c788a4&consid=&api=1&rc=true
tpsc-ew1.doubleverify.comDoubleVerify (brand safety)MEASUREMENT3False2026-04-01T23:29:55https://tpsc-ew1.doubleverify.com/event.png?impid=a14d4c4ff7f64d70bab81daa83c788a4&flavor=0&gdpr=1&gdpr_consent=CQh-8AAQ
securepubads.g.doubleclick.netGoogle Publisher AdsADVERTISING1False2026-04-01T23:29:55https://securepubads.g.doubleclick.net/pagead/managed/dict/m202603310101/gpt
ib.adnxs.comXandr AppNexusADVERTISING1False2026-04-01T23:29:55https://ib.adnxs.com/setuid?entity=584&code=1f9f90df-bf7e-4d6b-b3f9-ef9f355fc015-tuct10c72ff3&gdpr=1&gdpr_consent=
Recommendation: Ensure Prebid.js, Google Publisher Tags, and all analytics SDKs are gated behind a TCF consent check. Use the __tcfapi('addEventListener') callback and only initialise bidders when gdprApplies=true and purpose consents are granted.
E.2 No tracker JS libraries loaded after reject-all
✓ PASS

No tracker scripts observed post-reject.

E.3 No tracking pixels or beacons fired after reject-all
✗ FAIL

13 tracking pixel/beacon call(s) post-reject.

▶ Show all 13 rows
urlvendorcategorytimestamp
https://sb.scorecardresearch.com/internal-cs/default/beacon.jsComscoreANALYTICS2026-04-01T23:29:54
https://ep1.adtrafficquality.google/getconfig/sodar?sv=200&tid=gpt&tv=m202603240101&st=env&sjk=7252211227740584Google SODAR/IVTADVERTISING2026-04-01T23:29:54
https://ep2.adtrafficquality.google/sodar/sodar2.jsGoogle SODAR/IVTADVERTISING2026-04-01T23:29:54
https://ep2.adtrafficquality.google/sodar/sodar2/253/runner.htmlGoogle SODAR/IVTADVERTISING2026-04-01T23:29:54
https://pagead2.googlesyndication.com/pcs/view?xai=AKAOjsu-8wsfxMQJLqNeWfjfa2SnlnqSKOLGKwgaPvoZHYgtwi1T59EclxzJycpeG8GbFGoogle AdSense/GAMADVERTISING2026-04-01T23:29:54
https://pagead2.googlesyndication.com/pagead/gen_204?id=av-js&type=colleague-executed&name=4Google AdSense/GAMADVERTISING2026-04-01T23:29:55
https://pagead2.googlesyndication.com/pagead/gen_204?id=av-js&type=reach&proto=CAlgAWgDGoogle AdSense/GAMADVERTISING2026-04-01T23:29:55
https://pagead2.googlesyndication.com/pcs/view?xai=AKAOjss4zSImb491lDGUAgemh_43iEIXXwi91NZsXa5Ns_InIlUPVWmvEsVryZbMtUqtxGoogle AdSense/GAMADVERTISING2026-04-01T23:29:55
https://cm.g.doubleclick.net/pixel?google_nid=doubleverify_ddp&google_ula=7327243&google_hm=**&google_redir=https%3A%2F%Google DoubleClickADVERTISING2026-04-01T23:29:55
https://ep2.adtrafficquality.google/generate_204?qGFJsQGoogle SODAR/IVTADVERTISING2026-04-01T23:29:55
https://pagead2.googlesyndication.com/pagead/ping?e=1Google AdSense/GAMADVERTISING2026-04-01T23:29:55
https://ep1.adtrafficquality.google/pagead/sodar?id=sodar2&v=253&t=2&li=gpt_m202603240101&jk=7252211227740584&bg=!OzilOFGoogle SODAR/IVTADVERTISING2026-04-01T23:29:55
https://pagead2.googlesyndication.com/pcs/activeview?xai=AKAOjsuFMdROxdrfpl2kIiXYDMqNnEd10PhYHZWylIUSQC8wM7qUof7avSRKa5WGoogle AdSense/GAMADVERTISING2026-04-01T23:29:56
E.4 No tracking activity on subpages after reject-all
✓ PASS

No tracker globals or tracking storage observed on 2 subpage(s).

F. Cookie Verification (Third-Party) 2 FAIL   1 PASS   0 MANUAL
F.1 No analytics/marketing cookies present after reject-all
✗ FAIL

1 advertising cookie(s) still being sent in request headers post-reject. Note: HAR does not capture full Storage tab state — use Component 2 for definitive Storage verification.

name: optimizelyEndUserId  ·  domain: gn-web-assets.api.bbc.com  ·  value snippet: oeu1775086177131r0.5938044045327691  ·  first seen: 2026-04-01T23:29:54
Recommendation: On consent withdrawal, the CMP must delete all non-essential cookies and clear localStorage tracking entries. Implement server-side consent-state awareness to suppress Set-Cookie headers for tracking cookies when no valid consent is stored.
F.2 document.cookie contains only essential cookies post-reject
✗ FAIL

Advertising cookies in document.cookie post-reject: ['optimizelyEndUserId=oeu1775086177131r0.5938044045327691']

doc cookie snippet: optimizelyEndUserId=oeu1775086177131r0.5938044045327691; optimizelySession=1775086177143; ckns_mvt=fe33751a-c4f2-41de-a580-d515b67a64fb; ckns_policy=000; ckns_policy_exp=1775086177567; ckns_explicit=0; ckns_privacy=july2019; _cb=B9IVeiBox9epCnGC6z; _chartbeat2=.1775086177845.1775086177845.1.CqOl1ODByNqAjv014CCsktnBGHwd1.1; _cb_svref=https%3A%2F%2Fwww.bbc.co.uk%2F; _pcid=%7B%22browserId%22%3A%22mng
F.3 No tracking identifiers in web storage post-reject
✓ PASS

No tracking identifiers found in localStorage/sessionStorage post-reject.

G. First-Party Cookie Classification 3 FAIL   5 PASS   0 MANUAL
G.1 Complete first-party cookie inventory with full metadata
ℹ INFO

27 first-party cookies in Storage after Accept All.

▶ Show all 27 rows
namedomainexpires_dayshttp_onlysecuresame_siteclassification
optimizelyEndUserId.bbc.com180.0FalseFalseLaxAD
optimizelySession.bbc.com180.0FalseFalseLaxESSENTIAL
ckns_mvt.bbc.com365.0FalseFalseLaxUNKNOWN
ckns_policy.bbc.com365.0FalseFalseLaxUNKNOWN
ckns_policy_exp.bbc.com365.0FalseFalseLaxUNKNOWN
ckns_explicit.bbc.com365.0FalseFalseLaxUNKNOWN
ckns_privacy.bbc.com365.0FalseFalseLaxUNKNOWN
_cb.bbc.com395.0FalseTrueLaxUNKNOWN
_chartbeat2.bbc.com395.0FalseTrueLaxUNKNOWN
_cb_svref.bbc.com0.0FalseTrueLaxUNKNOWN
_sp_su.bbc.com365.0FalseTrueNoneESSENTIAL
_pcid.bbc.com395.0FalseTrueLaxUNKNOWN
consentUUIDwww.bbc.com365.0FalseTrueNoneESSENTIAL
usnatUUID.bbc.com365.0FalseTrueNoneUNKNOWN
_pctx.bbc.com395.0FalseTrueLaxUNKNOWN
_pprv.bbc.com395.0FalseTrueLaxUNKNOWN
__tbc.bbc.com400.0FalseFalseLaxUNKNOWN
xbc.bbc.com400.0FalseFalseLaxUNKNOWN
_pcus.bbc.com395.0FalseTrueLaxUNKNOWN
cX_P.bbc.com395.0FalseTrueLaxUNKNOWN
permutive-id.bbc.com183.0FalseTrueNoneUNKNOWN
cX_G.bbc.com395.0FalseTrueLaxUNKNOWN
__gads.bbc.com390.0FalseTrueNoneAD
__gpi.bbc.com390.0FalseTrueNoneAD
__eoi.bbc.com180.0FalseTrueNoneAD
ckns_eds.www.bbc.com400.0FalseFalseLaxUNKNOWN
ecos.dt.www.bbc.comsessionFalseFalseLaxUNKNOWN
G.2 All observed cookies declared in cookie policy
✗ FAIL

33 cookie(s) observed but not found in cookie policy at https://www.bbc.co.uk/cookies.

▶ Show all 30 rows
cookie_namestatus
__tbcobserved but not in cookie policy
__gpiobserved but not in cookie policy
_pctxobserved but not in cookie policy
_cb_svrefobserved but not in cookie policy
ckns_policy_expobserved but not in cookie policy
https://www.bbc.com_oeu1775086170103r0.7661490551611259$$27302320011$$session_stateobserved but not in cookie policy
ckns_policyobserved but not in cookie policy
XIDobserved but not in cookie policy
ckns_explicitobserved but not in cookie policy
cX_Gobserved but not in cookie policy
__gadsobserved but not in cookie policy
ecos.dtobserved but not in cookie policy
ckns_mvtobserved but not in cookie policy
ckns_privacyobserved but not in cookie policy
usnatUUIDobserved but not in cookie policy
_pcusobserved but not in cookie policy
ckns_edsobserved but not in cookie policy
_cbobserved but not in cookie policy
IDEobserved but not in cookie policy
https://www.bbc.com_oeu1775086177131r0.5938044045327691$$27302320011$$session_stateobserved but not in cookie policy
datadomeobserved but not in cookie policy
UIDobserved but not in cookie policy
optimizelySessionobserved but not in cookie policy
_chartbeat2observed but not in cookie policy
__eoiobserved but not in cookie policy
xbcobserved but not in cookie policy
permutive-idobserved but not in cookie policy
optimizelyEndUserIdobserved but not in cookie policy
_pprvobserved but not in cookie policy
cX_Pobserved but not in cookie policy
G.3 Strictly necessary two-part test (AI-assisted)
✓ PASS

AI analysis: 0 cookie(s) fail the strictly-necessary test and should be absent after reject-all. Summary:

G.4 Server-side analytics/ad cookies identified in Set-Cookie headers
✓ PASS

No advertising cookies observed in Set-Cookie response headers.

G.5 No CNAME cloaking detected (first-party subdomains resolving to tracker infrastructure)
✓ PASS

No CNAME cloaking detected across 9 subdomain(s).

▶ Show all 9 rows
subdomaincname_targetis_trackervendorerror
mybbc-analytics.files.bbci.co.uk(no CNAME / A record only)FalseNoneNone
idcta.api.bbc.co.uk(no CNAME / A record only)FalseNoneNone
static.files.bbci.co.uk(no CNAME / A record only)FalseNoneNone
emp.bbci.co.uk(no CNAME / A record only)FalseNoneNone
static.bbci.co.uk(no CNAME / A record only)FalseNoneNone
bbc.co.uk(no CNAME / A record only)FalseNoneNone
a1.api.bbc.co.uk(no CNAME / A record only)FalseNoneNone
nav.files.bbci.co.uk(no CNAME / A record only)FalseNoneNone
ichef.bbci.co.uk(no CNAME / A record only)FalseNoneNone
G.6 Non-essential first-party cookies absent after reject-all
✗ FAIL

1 advertising/analytics cookie(s) present in both baseline and post-reject storage.

cookie name: optimizelyEndUserId
G.7 No non-essential Set-Cookie headers after reject-all
✗ FAIL

13 Set-Cookie header(s) for non-essential cookies observed post-reject.

▶ Show all 13 rows
cookie_namedomainheaderclassificationtimestamp
gckpp1cluster.cxense.comgckp=2s3oaip9dhsdzntxliuv8d00e;Path=/;Domain=cxense.com;Expires=Thu, 1 Apr 2027 23:29:54 GMT;Max-Age=31536000;HttpOnly;Secure;Version=1;SameSite=NoneUNKNOWN2026-04-01T23:29:54
gckpcomcluster.cxense.comgckp=cx:1z6xit8ew47vq3vxrjzqbxotxg:ip6oka985kk8;Path=/;Domain=cxense.com;Expires=Thu, 1 Apr 2027 23:29:55 GMT;Max-Age=31536000;HttpOnly;Secure;VersionUNKNOWN2026-04-01T23:29:54
gckpid.cxense.comgckp=cx:1z6xit8ew47vq3vxrjzqbxotxg:ip6oka985kk8;Path=/;Domain=cxense.com;Expires=Thu, 1 Apr 2027 23:29:55 GMT;Max-Age=31536000;HttpOnly;Secure;VersionUNKNOWN2026-04-01T23:29:55
datadometrc.taboola.comdatadome=dK3hpFPgQkWxyoGF~G9EtefTBWGtWg0_xoiY5SqEg6lzhZQdKZ4~CaRhM8lyShemwCa8QLacc2oNYnDShwh0bPBndXxBtcN8W1l2cOJ4uIjPRWo4zz3PEGZHK2kNGPXZ; Path=/; DomUNKNOWN2026-04-01T23:29:55
api_uidwww.temu.comapi_uid=CnAQJ2nNqnPDT1XA4DftAg==; Secure; Path=/; Domain=temu.com; Expires=Thu, 01 Apr 2027 23:29:55 GMTUNKNOWN2026-04-01T23:29:55
DotMetrics.DeviceKeyuk-script.dotmetrics.netDotMetrics.DeviceKey=DeviceID=; expires=Thu, 01 Apr 2027 23:29:56 GMT; domain=.dotmetrics.net; path=/; SameSite=None; secureUNKNOWN2026-04-01T23:29:56
DotMetrics.UniqueUserIdentityCookieuk-script.dotmetrics.netDotMetrics.UniqueUserIdentityCookie=UserID=63545c67-ebd1-48ea-9918-37fe862a96c0&Created=04/01/2026 23:29:56&UserMode=0&guid=c5df64a2-7164-45d9-b650-aeUNKNOWN2026-04-01T23:29:56
DotMetrics.DeviceKeyuk-script.dotmetrics.netDotMetrics.DeviceKey=DeviceID=; expires=Thu, 01 Apr 2027 23:29:56 GMT; domain=.dotmetrics.net; path=/; SameSite=None; secureUNKNOWN2026-04-01T23:29:56
DotMetrics.UniqueUserIdentityCookieuk-script.dotmetrics.netDotMetrics.UniqueUserIdentityCookie=UserID=63545c67-ebd1-48ea-9918-37fe862a96c0&Created=04/01/2026 23:29:56&UserMode=0&guid=c5df64a2-7164-45d9-b650-aeUNKNOWN2026-04-01T23:29:56
DotMetrics.DeviceKeyuk-script.dotmetrics.netDotMetrics.DeviceKey=DeviceID=; expires=Thu, 01 Apr 2027 23:29:58 GMT; domain=.dotmetrics.net; path=/; SameSite=None; secureUNKNOWN2026-04-01T23:29:58
DotMetrics.UniqueUserIdentityCookieuk-script.dotmetrics.netDotMetrics.UniqueUserIdentityCookie=UserID=63545c67-ebd1-48ea-9918-37fe862a96c0&Created=04/01/2026 23:29:56&UserMode=0&guid=c5df64a2-7164-45d9-b650-aeUNKNOWN2026-04-01T23:29:58
DotMetrics.DeviceKeyuk-script.dotmetrics.netDotMetrics.DeviceKey=DeviceID=; expires=Thu, 01 Apr 2027 23:29:58 GMT; domain=.dotmetrics.net; path=/; SameSite=None; secureUNKNOWN2026-04-01T23:29:58
DotMetrics.UniqueUserIdentityCookieuk-script.dotmetrics.netDotMetrics.UniqueUserIdentityCookie=UserID=63545c67-ebd1-48ea-9918-37fe862a96c0&Created=04/01/2026 23:29:56&UserMode=0&guid=c5df64a2-7164-45d9-b650-aeUNKNOWN2026-04-01T23:29:58
Recommendation: Backend services must be aware of consent state. Identity tokens and advertising identifiers must not be set or refreshed via server-side Set-Cookie after a reject-all signal has been recorded.
G.8 Cookie lifetime analysis (ITP bypass detection)
✓ PASS

No obvious ITP bypass patterns in Set-Cookie headers.

G.9 No tracking keys in first-party localStorage/sessionStorage post-reject
✓ PASS

No tracking identifiers found in first-party web storage post-reject.

H. JS Global Object Verification 1 FAIL   1 PASS   0 MANUAL
H.1 Tracker JS globals (ga, gtag, fbq, hj, etc.) return undefined post-reject
✗ FAIL

Tracker globals still defined after reject-all: ['analytics']

global: analytics  ·  type: __defined_object__
H.2 Tracker globals not merely defined without values
ℹ INFO

See H.1 — same evidence applies.

global: analytics  ·  present: True
H.3 window.dataLayer absent or contains no tracking events post-reject
✓ PASS

dataLayer not present post-reject.

I. DOM / Source Inspection 3 FAIL   0 PASS   0 MANUAL
I.1 Tracker script tags have type=text/plain (CMP-blocked) in DOM post-reject
✗ FAIL

4 tracker script(s) in DOM without CMP type-blocking post-reject. 0 script(s) correctly blocked.

srctype_attrvendor
https://securepubads.g.doubleclick.net/tag/js/gpt.jstext/javascriptGoogle Publisher Ads
https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202603240101/pubads_impl.js?cb=3109743Google Publisher Ads
https://pub.doubleverify.com/dvtag/29028254/DV1298722/pub.jstext/javascriptDoubleVerify (brand safety)
https://sb.scorecardresearch.com/internal-cs/default/beacon.jstext/javascriptComscore
I.2 Non-essential scripts blocked (type=text/plain)
✗ FAIL

See I.1 — same check.

srctype_attrvendor
https://securepubads.g.doubleclick.net/tag/js/gpt.jstext/javascriptGoogle Publisher Ads
https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202603240101/pubads_impl.js?cb=3109743Google Publisher Ads
https://pub.doubleverify.com/dvtag/29028254/DV1298722/pub.jstext/javascriptDoubleVerify (brand safety)
https://sb.scorecardresearch.com/internal-cs/default/beacon.jstext/javascriptComscore
I.3 No tracker JS files in executed sources post-reject
✗ FAIL

Based on DOM script inventory; full Sources tab verification requires Chrome DevTools protocol introspection (beyond current scope).

srctype_attrvendor
https://securepubads.g.doubleclick.net/tag/js/gpt.jstext/javascriptGoogle Publisher Ads
https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202603240101/pubads_impl.js?cb=3109743Google Publisher Ads
https://pub.doubleverify.com/dvtag/29028254/DV1298722/pub.jstext/javascriptDoubleVerify (brand safety)
https://sb.scorecardresearch.com/internal-cs/default/beacon.jstext/javascriptComscore
J. Safari-Specific Considerations 1 PASS   2 MANUAL
J.1 ITP setting
☐ MANUAL

Requires manual browser configuration check.

J.2 ITP-off re-test
☐ MANUAL

Requires manual browser configuration check.

J.3 Server-side cookie-setting identified where ITP would block client-side
✓ PASS

No obvious ITP-bypass server-side cookies detected.

K. Consent Mechanism UX Compliance 3 PASS   2 MANUAL
K.1 Reject All at same prominence and level as Accept All
✓ PASS

Reject All available at first screen at same level as Accept All.

accept visible at first screen: True  ·  reject visible at first screen: True  ·  reject requires extra layer: False  ·  accept button text: I agree  ·  reject button text: I do not agree
K.2 Non-essential categories default to OFF
☐ MANUAL

Could not open preferences panel to check toggles.

K.3 No dark patterns in consent banner (colour, visual hierarchy)
☐ MANUAL

DOM-level button detection completed. Full visual assessment of colour contrast, typography prominence, and deceptive visual hierarchy requires screenshot review. See screenshots in report.

K.5 Persistent consent withdrawal mechanism accessible after interaction
✓ PASS

Persistent consent widget found: '(consent widget)'

found: True  ·  text: (consent widget)  ·  in iframe: False
K.6 Site fully accessible after declining consent (no cookie wall)
✓ PASS

Site content accessible after declining consent.

accessible: True
L. Consent State Persistence 2 FAIL   0 PASS   0 MANUAL
L.2 Consent choice respected on second tab (same session)
✗ FAIL

Advertising cookies found in second tab — consent state may not be persisted.

consent cookie found: True  ·  ad cookies found: True  ·  tcf available: True  ·  tcf display status: None
L.3 Declined state maintained after closing and reopening (simulate new session)
✗ FAIL

Advertising cookies found on return — consent state not correctly maintained.

ad cookies on return: True  ·  total cookies: 25
Additional Findings 1 FAIL   3 PASS   0 MANUAL
ADD.1 Persistent identifier bridging across consent states
✓ PASS

No persistent cross-phase identifiers detected in POST bodies.

ADD.2 TCF consent string analysis (all phases)
✗ FAIL

Found 1 unique TCF strings. 1 reject-all string(s) transmitted to RTB/ad vendors — transmission itself is a processing act.

phasedomaintimestampsummaryis_reject_allis_accept_allcmptcf_policy_versionpurpose_consentsli_claimsdecode_error
post_acceptcm.g.doubleclick.net2026-04-01T23:29:33Accept-all (purposes 1–10 consented, CMP: Sourcepoint Technologies)FalseTrueSourcepoint Technologies5All 10 core purposes CONSENTED[2]None
post_rejectpagead2.googlesyndication.com2026-04-01T23:29:54Reject-all (no purpose consents)TrueFalseSourcepoint Technologies5All 24 purposes REJECTED (no consents)noneNone
Recommendation: Under IAB TCF 2.2 Policy §2, initiating a bid request is itself a processing activity. Even with a reject-all TC string, the act of calling out to DSPs/SSPs transmits personal data (IP address, user agent, page URL). Bid requests must be suppressed entirely when GDPR applies and no consent is given.
ADD.3 Session ID bridging across consent and rejection phases
✓ PASS

No session ID bridging detected across consent states.

ADD.4 Persistent vendor userIds transmitted after reject-all
✓ PASS

No persistent vendor userIds detected in post-reject requests.

Test Details 0 PASS   0 MANUAL
META Site URL, test date, CMP platform
ℹ INFO

CMP identified as: Sourcepoint CMP

urlAccessibility - BBC
test date2026-04-01
test time utc2026-04-01T23:29:35
cmp detectedSourcepoint CMP
total requests369
phases detected
pre_consentpost_reject
phase strategy{'accept': 'not_detected', 'reject': 'url_pattern'}
run_id: f3331e88  ·  raw log  ·  ⬇ report JSON  ·  all runs  ·  ← Home
🤖 AI-Enhanced Analysis
Add regulatory citations, risk ratings, enforcement precedents, and a remediation roadmap using Claude AI. Results are cached — generation only runs once per report.
🤖 View AI Report