Identity and Privacy
GDPR, ePrivacy and RTB: TCF 2.2 Bid Request Consent Signals
Published · Last updated
Next scheduled review:

For an EU user, a bid request may contain identifiers, IP address, device IDs and segments only where the TC String shows a legal basis for each purpose and vendor. Reading or storing anything on the device needs ePrivacy consent. Without a valid signal, the request must carry context only. This page walks through every field and signal, with sources.
This page is general information for engineering and privacy teams. It is not legal advice.
Key facts
- The consent string is personal data. On 7 March 2024 the CJEU held that a TC String is personal data when it can be linked to an IP address, and that IAB Europe is a joint controller for it (CJEU C-604/22).
- Legitimate interest is gone for personalized ads inside the TCF. TCF v2.2, mandatory since 20 November 2023, allows consent only for purposes 3 to 6 (IAB Europe, TCF v2.2). TCF v2.3 made the Disclosed Vendors segment mandatory with a deadline of 28 February 2026 (IAB Europe).
- Contract is not a basis either. The Irish DPC fined Meta €210 million and €180 million on 4 January 2023 after the EDPB found contract could not justify behavioural advertising (DPC, 4 January 2023).
- Regulators are now inside the bidstream. The Norwegian DPA fined Xandr €8.6 million in a decision of 2 October 2026 for real-time bidding with Grindr users' advertising ID and IP address, holding that "accountability cannot be outsourced" (EDPB, 16 October 2026).
- Cookie-banner design is fined at scale. CNIL fined Google €325 million and Shein €150 million on 1 September 2025 (Privacy Laws & Business, 4 September 2025), after €150 million and €60 million against Google and Facebook on 31 December 2021 for making refusal harder than acceptance (CNIL sanctions list).
- The UK rewrote its cookie rule. PECR regulation 6 was substituted on 5 February 2026 under the Data (Use and Access) Act 2025, with new consent exceptions and GDPR-level fines (legislation.gov.uk, PECR reg. 6; SI 2026/82).
Definition
Bidstream: the stream of OpenRTB bid requests that a publisher's ad server or SSP sends to buyers for each impression, together with the bid responses and the win, impression and event notifications that follow. Each request describes the impression, the site or app, the device and, where permitted, the user.
TC String (Transparency and Consent String): a base64 string created by a Consent Management Platform under the IAB Europe TCF that records, for each TCF purpose and each registered vendor, whether the user gave consent or legitimate-interest transparency was established, plus publisher restrictions and the list of vendors disclosed to the user.
Two laws, two questions
Every field in a bid request has to pass two tests.
- ePrivacy: did you touch the device? Article 5(3) of Directive 2002/58/EC requires consent to store information, or gain access to information already stored, on a user's terminal equipment, unless strictly necessary for a service the user requested (Directive 2002/58/EC). The CJEU confirmed in Planet49 on 1 October 2019 that this applies whether or not the information is personal data, that pre-ticked boxes are not consent, and that users must be told the cookie duration and which third parties may access it (CJEU C-673/17). The EDPB's Guidelines 2/2023, finalized in October 2024, extend "access" to pixels, URL and link tracking, local processing that reports back, and identifiers derived from the device (EDPB, Guidelines 2/2023). Reading a cookie ID, an advertising ID or a fingerprint to populate a bid request is covered.
- GDPR: do you have a lawful basis for each purpose? Once data is personal, Article 6 applies to every purpose, and Article 9 to special categories. Three routes have been closed for personalized advertising on the open web. Contract: the DPC's Meta decisions of 4 January 2023 (DPC). Legitimate interest: the CJEU in Meta v Bundeskartellamt on 4 July 2023 treated Article 6(1) as "an exhaustive and restrictive list" to be read narrowly, and TCF v2.2 removed the option for purposes 3 to 6 (CJEU C-252/21; IAB Europe). Consent-or-pay without a real alternative: EDPB Opinion 08/2024 of 17 April 2024 and the Commission's €200 million DMA fine on Meta of 23 April 2025 (EDPB; Commission).
The practical result is that, for EU open-web traffic, consent recorded in the TC String is the only basis that reliably supports identifiers in a bid request, and legitimate interest survives only for measurement and non-personalized purposes. The identifiers themselves are compared in the identity and privacy hub; the US rules for regulated data sit in the ad tech compliance hub.
What a bid request may contain, field by field
The table maps OpenRTB 2.6 fields to the test each one has to pass. Field names and descriptions are from the IAB Tech Lab specification (OpenRTB 2.6).
16 of 16 rows
Download JSONTable by AdSovereign, CC BY 4.0.
| Ad slot, sizes, deal IDs | No | No | None | Keep |
| Page and content context | Usually no (watch sensitive content categories) | No | None for context; Article 9 care if content reveals health, politics, sexuality | Keep; suppress sensitive categories |
| App identity | No, but the app itself can be sensitive (the Grindr case) | No | None; Article 9 if the app reveals a special category | Keep unless the app is sensitive |
| User agent | Yes, in combination | Reading is passive, but fingerprinting is Article 5(3) access per EDPB 2/2023 | Consent for profiling uses; purpose 1 for fingerprinting | Pass a reduced UA; no fingerprinting |
| IP address | Yes (CJEU C-604/22) | Not itself access, but used to link | Consent for identification; truncate otherwise | Truncate (drop last octet, or the IPv6 interface identifier) |
| Location | Yes; precise location is TCF special feature 1 | GPS read is access | Consent (special feature 1) for precise; coarse is context | Reduce to country or region |
| Advertising ID (IDFA, GAID) | Yes | Yes (reading an on-device identifier) | Purpose 1 consent plus purposes 2 to 4 for use | Remove |
| Limit-ad-tracking and Do Not Track flags | No | No | None; must be honored | Keep and honor |
| Exchange cookie ID; buyer's synced ID | Yes | Yes (cookie read) | Purpose 1 consent plus purposes 2 to 4 | Remove |
| Extended IDs (EUID, UID2, ID5, RampID) | Yes | Depends on source; a hashed email is personal data | Consent for the ID provider's vendor ID and purposes | Remove any ID whose vendor lacks consent |
| Segments from data providers | Yes; may reveal special categories | No | Consent for the provider and purposes 3 and 4 | Remove |
| Demographics | Yes | No | Deprecated as of OpenRTB 2.6 | Remove |
| The TC String | Yes (CJEU C-604/22) | No | Needed to pass signals; its own processing is purpose 1 and the CMP's basis | Keep |
| 1 if GDPR applies, 0 if not, omitted if unknown | No | No | n/a | Keep; treat omitted as 1 for EU geo |
| Global Privacy Platform string and applicable sections | Contains the TC String when section 2 applies | No | n/a | Keep |
| Supply chain | No | No | None | Keep |
Three rules follow. First, context fields are always safe; identifier fields are never safe without a signal. Second, "consent for purpose 1" is the gate for anything read from the device, and it is a separate question from the advertising purposes. Third, the IP address is both an identifier and a routing necessity, which is why truncation, not removal, is the practice.
TCF signals, field by field
The TCF is the mechanism that tells each vendor in the chain what it may do. The CMP writes the TC String; the publisher's ad stack passes it in user.consent and in the URL macros gdpr and gdpr_consent; every vendor decodes it before processing (IAB Europe, TCF Implementation Guidelines).
The gdpr flag
regs.gdpr is 1 if the request is subject to GDPR, 0 if not, and omitted if unknown (OpenRTB 2.6). Older integrations use regs.ext.gdpr and user.ext.consent; most exchanges populate both. An EU-facing stack should treat "omitted" as 1 for traffic geolocated to the EEA or UK.
The TC String core segment
The core segment is a bit field decoded in order (IAB Tech Lab, Consent string and vendor list formats v2).
21 of 21 rows
Download JSONTable by AdSovereign, CC BY 4.0.
1 | Version | 6 bits | TC String format version (2) |
2 | Created | 36 bits | When the string was created |
3 | LastUpdated | 36 bits | When it was last changed |
4 | CmpId | 12 bits | Which CMP wrote it |
5 | CmpVersion | 12 bits | CMP version |
6 | ConsentScreen | 6 bits | Which screen the user acted on |
7 | ConsentLanguage | 12 bits | Language shown |
8 | VendorListVersion | 12 bits | GVL version used |
9 | TcfPolicyVersion | 6 bits | TCF policy version (identifies v2.2 vs v2.3 policies) |
10 | IsServiceSpecific | 1 bit | Site-specific or (historically) global scope |
11 | UseNonStandardTexts | 1 bit | Whether non-standard purpose texts were used |
12 | SpecialFeatureOptIns | 12 bits | Opt-in to precise geolocation (1) and active device scanning (2) |
13 | PurposesConsent | 24 bits | Consent per purpose 1 to 11 |
14 | PurposesLITransparency | 24 bits | Legitimate-interest transparency per purpose |
15 | PurposeOneTreatment | 1 bit | Whether purpose 1 is treated differently in the publisher's country |
16 | PublisherCC | 12 bits | Publisher country code |
17 | VendorConsent | variable | Consent per vendor ID (bitfield or range) |
18 | VendorLegitimateInterest | variable | LI transparency per vendor ID |
19 | PublisherRestrictions | variable | Per-purpose restrictions on vendors (not allowed, consent required, LI required) |
Segment 1 | DisclosedVendors | variable | Vendors shown to the user; mandatory under v2.3 |
Segment 3 | PublisherTC | variable | Publisher's own purposes (optional) |
Purposes and the legal bases they allow
Under TCF v2.2 policies the eleven purposes and the bases a vendor may register for them are (IAB Europe, TCF v2.2):
13 of 13 rows
Download JSONTable by AdSovereign, CC BY 4.0.
1 | Store and/or access information on a device | Yes | No |
2 | Use limited data to select advertising | Yes | Yes |
3 | Create profiles for personalized advertising | Yes | No (removed in v2.2) |
4 | Use profiles to select personalized advertising | Yes | No (removed in v2.2) |
5 | Create profiles to personalize content | Yes | No (removed in v2.2) |
6 | Use profiles to select personalized content | Yes | No (removed in v2.2) |
7 | Measure advertising performance | Yes | Yes |
8 | Measure content performance | Yes | Yes |
9 | Understand audiences through statistics or combinations of data | Yes | Yes |
10 | Develop and improve services | Yes | Yes |
11 | Use limited data to select content | Yes | Yes |
Special purpose 1 | Ensure security, prevent and detect fraud, fix errors | n/a | Always permitted |
Special purpose 2 | Deliver and present advertising and content | n/a | Always permitted |
How a vendor reads it, per the implementation guidelines: evaluate publisher restrictions first; then check its own vendor ID in VendorConsent or VendorLegitimateInterest; then the purpose bit. Processing is allowed "only if both signals are positive for the applicable legal basis". A vendor that is not in DisclosedVendors was not shown to the user and may not process (TCF Implementation Guidelines).
What changed in v2.2 and v2.3
2 of 2 rows
Download JSONTable by AdSovereign, CC BY 4.0.
v2.2 | 16 May 2023 | 20 November 2023 | Legitimate interest removed for purposes 3 to 6; plain-language purpose texts; vendors declare data categories and retention; CMP must show total vendor count on first layer; easy withdrawal; GVL v3; | |
v2.3 | April 2025 | 28 February 2026 | Disclosed Vendors segment mandatory in every TC String; resolves ambiguity for vendors that declare only special purposes |
GPP wrapping
The Global Privacy Platform carries the TC String as section 2 inside regs.gpp, with regs.gpp_sid listing the applicable sections. IAB Tech Lab's GPP API v1.1 is the current client-side interface, and the Lab shipped GPP updates with the Data Deletion Request Framework v2 on 23 October 2025 (IAB Tech Lab, GPP; IAB Tech Lab press releases). A bidder should read regs.gpp first and fall back to user.consent and regs.gdpr.
The IAB Europe case, 2022 to 2025
The TCF itself has been litigated for four years. The outcome defines who is responsible for what.
4 of 4 rows
Download JSONTable by AdSovereign, CC BY 4.0.
2 February 2022 | Belgian APD | Decision 21/2022: TC String is personal data; IAB Europe is a controller; no legal basis for the TC String; transparency, security and DPIA failures; €250,000 fine; action plan within two months | |
11 January 2023 | Belgian APD | Action plan approved, six months to implement; implementation later suspended pending the Market Court | |
7 March 2024 | CJEU (C-604/22) | TC String is personal data when linkable to an IP address; IAB Europe is a joint controller for recording preferences; joint controllership "does not extend automatically to the subsequent processing" by publishers and vendors | |
14 May 2025 | Brussels Market Court (2022/AR/292) | Upheld the APD's findings (personal data, joint controller within the TCF, Articles 6, 12 to 14, 35, 5(1)(f), 25, 32, 37); IAB Europe not a controller for processing solely within OpenRTB; decision partially annulled on procedural grounds |
What this means in practice: IAB Europe answers for the consent string; publishers, CMPs, SSPs and DSPs answer for what they do with it and with the bid request. Nobody in the chain can point to the framework as their legal basis.
Enforcement table
10 of 10 rows
Download JSONTable by AdSovereign, CC BY 4.0.
31 December 2021 | CNIL (France) | €150 million | Refusing cookies harder than accepting them; injunction | ||
31 December 2021 | CNIL | €60 million | Same cookie-refusal design plus information failures | ||
2 February 2022 | Belgian APD | IAB Europe | €250,000 | TCF design: no legal basis for the TC String, transparency, accountability | |
4 January 2023 | Irish DPC | Meta (Facebook, Instagram) | €210 million + €180 million | Contract used as basis for behavioural advertising | |
22 May 2023 | Irish DPC | Meta | €1.2 billion | EU-US transfers under SCCs (Article 46(1)); suspension within five months | |
15 June 2023 | CNIL | Criteo | €40 million | Targeted advertising without proof of consent; transparency; access and withdrawal rights; joint-controller agreement | |
23 April 2025 | European Commission (DMA) | Meta | €200 million | "Consent or pay" without a less-personalized equivalent (Article 5(2)) | |
1 September 2025 | CNIL | Google LLC, Google Ireland | €325 million | Ads between Gmail messages without consent; advertising cookies at account creation; injunction with €100,000 per day; closed 23 September 2026 after changes | |
1 September 2025 | CNIL | Shein (Infinite Styles Services) | €150 million | Cookies placed without valid consent on shein.com | |
2 October 2026 (published 16 October 2026) | Norwegian Datatilsynet | Xandr | €8.6 million (NOK 92 million) | RTB with Grindr users' app use, advertising ID and IP; joint controller as SSP and DSP; relied on the app's consent; Articles 6(1), 9(1) |
The direction of travel is clear. The 2021 cases were about banner design. The 2023 cases were about legal basis and transfers. The 2025 and 2026 cases are about what travels in the request and who in the chain is accountable for it.
An annotated bid request with consent fields
The example is OpenRTB 2.6 with inline comments (strip the comments before use; JSON does not allow them). It shows an EU user who has consented to purposes 1, 2, 3, 4 and 7 for vendor 999 (the receiving DSP) and vendor 21 (the exchange).
{
"id": "4f2a9c1e-7b3d-4e2f-9a1c-5d6e7f8a9b0c",
"tmax": 120,
"imp": [{
"id": "1",
"banner": { "w": 300, "h": 250, "pos": 1 },
"secure": 1,
"pmp": { "private_auction": 1, "deals": [{ "id": "eu-only-deal-42", "bidfloor": 1.20 }] }
}],
"site": {
"id": "site-77", "domain": "example.de", "page": "https://example.de/wirtschaft/artikel",
"cat": ["IAB13"], // context: no legal basis needed
"publisher": { "id": "pub-7" }
},
"device": {
"ua": "Mozilla/5.0 ...", // keep; no fingerprinting without purpose 1
"ip": "203.0.113.0", // truncated last octet; full IP only with consent
"geo": { "country": "DEU", "type": 2 }, // coarse; precise geo needs special feature 1
"ifa": "", // empty: web traffic; in-app only with purpose 1 consent
"lmt": 0, "dnt": 0 // honour if set to 1
},
"user": {
"id": "exch-cookie-9f8e...", // present only because purpose 1 consent for vendor 21 is set
"buyeruid": "dsp-sync-3c2b...", // present only because vendor 999 has purposes 1 to 4
"consent": "CQAbcDEFAbcDEFAAAAENCZCAAAAAAAAAAAAAAAAAAAAA...", // TC String, v2.3 with DisclosedVendors
"eids": [{
"source": "euid.eu", // EUID token; vendor must be in VendorConsent
"uids": [{ "id": "A4...", "atype": 3 }]
}]
},
"regs": {
"gdpr": 1, // GDPR applies
"gpp": "DBABMA~CQAbcDEFAbcDEF...", // GPP string; section 2 = TCF EU v2
"gpp_sid": [2],
"ext": { "gdpr": 1 } // legacy field for 2.5 consumers
},
"source": { "ext": { "schain": { "ver": "1.0", "complete": 1, "nodes": [{ "asi": "exchange.example", "sid": "pub-7", "hp": 1 }] } } },
"ext": { "consent_audit_id": "cmp-log-2026-10-17T10:04:11Z-8812" } // optional: your own pointer to the consent record
}
Field semantics are from the IAB Tech Lab specification (OpenRTB 2.6). The consent_audit_id extension is not standard; it illustrates the practice of keeping a pointer from every request to the consent record that justified it, which is what the Xandr decision implies a platform must be able to produce.
What to strip for EU traffic without a valid signal
Apply these steps at the SSP or exchange edge, before the request leaves your control. They assume regs.gdpr is 1 (or omitted with EU geolocation).
- No TC String, or a TC String with no purpose 1 consent: remove
user.id,user.buyeruid,user.eids,user.data,device.ifa; truncatedevice.ip; reducedevice.geoto country; keepsite,app,imp,regs,source. Send a context-only request or no request. - Purpose 1 present, but the receiving vendor is not in VendorConsent for purposes 2 to 4: remove
user.id,user.buyeruid,user.eidsfor that buyer; keep the TC String so the buyer can verify. - Vendor has purposes 2 and 7 only (non-personalized ads and measurement): send the request without
user.eidsanduser.data; buyer may bid on context and measure. - DisclosedVendors missing (pre-v2.3 string): treat as v2.2 until 28 February 2026; after that date treat the string as non-compliant and fall back to step 1 (IAB Europe).
- Special feature 1 not opted in: never send precise
device.geo(lat/long, type 1). - Sensitive app or content category: drop identifiers regardless of consent unless you hold an explicit Article 9(2)(a) consent for that category; the Grindr chain shows why (EDPB, 16 October 2026).
- Buyer outside the EEA: apply steps 1 to 6 and, in addition, record the transfer mechanism; the sovereignty side of this is in EU sovereign ad tech.
- Log the decision. Store the request ID, the TC String hash, the vendor IDs evaluated and the stripping outcome, so that an audit can reconstruct the chain.
A bidder on the buy side should apply the mirror image: decode before bidding, bid on context only when the signals are absent, and never write a cookie or sync an ID on the win notification without purpose 1 consent. The identity side of the question is in Identity after Privacy Sandbox; the architecture of the request path is in RTB architecture explained and the bidstream flow diagram.
UK differences: PECR after the Data (Use and Access) Act
The UK kept GDPR as UK GDPR and the ePrivacy rules as PECR. The TCF is used in the UK under the same v2.2 and v2.3 policies, with PublisherCC set to GB. Four things differ.
5 of 5 rows
Download JSONTable by AdSovereign, CC BY 4.0.
Cookie rule | ePrivacy Article 5(3): consent unless strictly necessary | PECR regulation 6, substituted on 5 February 2026; new Schedule A1 lists exceptions | |
Consent exceptions | Strictly necessary; transmission | Adds statistical purposes, appearance, emergency assistance, with a simple means of objecting | |
Who is liable | The party storing or accessing | Includes anyone "instigating" storage or access, so a publisher answers for third-party tags it embeds | |
Maximum fine | GDPR: €20 million or 4% | PECR aligned with UK GDPR: £17.5 million or 4% of global turnover (previously £500,000) | |
Guidance | EDPB Guidelines 2/2023 | ICO storage and access technologies guidance (published 20 December 2024, finalized 29 April 2026) covering cookies, pixels, link decoration, fingerprinting, web storage and scripts |
The Act received Royal Assent on 19 June 2025 (Clyde & Co, July 2025); the cookie and enforcement provisions commenced on 5 February 2026 under SI 2026/82, which also says breaches before that date are enforced under the old rules (SI 2026/82). For the bidstream the net effect is small: advertising identifiers still need consent, the statistical exception does not cover ad measurement that identifies users, and the penalty for a non-compliant banner is now forty times higher.
Diagram spec
Diagram by AdSovereign, CC BY 4.0.
FAQ
Is a bid request personal data under GDPR? Usually yes. It carries an IP address, often a cookie or advertising ID, and the TC String, which the CJEU held on 7 March 2024 is itself personal data when linkable to an IP address (CJEU C-604/22). A request reduced to context and a truncated IP can fall outside the definition, which is the point of the strip list above.
What is the difference between TCF 2.2 and TCF 2.3? v2.2 (launched 16 May 2023, mandatory 20 November 2023) removed legitimate interest for purposes 3 to 6, rewrote purpose texts, required vendor counts on the first layer and introduced GVL v3 (IAB Europe). v2.3 (launched April 2025, deadline 28 February 2026) made the Disclosed Vendors segment mandatory in every TC String so vendors declaring only special purposes can prove they were shown (IAB Europe).
Can I use legitimate interest for programmatic advertising? Not for personalized advertising inside the TCF: purposes 3 to 6 are consent-only since v2.2 (IAB Europe). Legitimate interest remains available for purposes 2, 7, 8, 9, 10 and 11, subject to a balancing test and publisher restrictions. Outside the TCF, the CJEU's Meta judgment of 4 July 2023 reads Article 6(1) narrowly (CJEU C-252/21).
What happens if gdpr=1 and there is no consent string? The implementation guidelines say that if transparency or consent information is unavailable where the TCF applies, "you may not be able to process the user's data" (TCF Implementation Guidelines). In practice: strip every identifier, truncate the IP, and send a context-only request or none. The Xandr decision of 2 October 2026 confirms that relying on an upstream party's claim of consent is not a defence (EDPB).
Does TCF apply in the UK after Brexit? The TCF is an industry framework, not a law, and UK publishers use it under UK GDPR and PECR with PublisherCC set to GB. The legal rule changed on 5 February 2026 when PECR regulation 6 was substituted under the Data (Use and Access) Act 2025, adding exceptions for statistics and appearance and raising fines to UK GDPR levels (legislation.gov.uk; SI 2026/82). Advertising identifiers still need consent.
Diagram by AdSovereign, CC BY 4.0.
How this works on owned infrastructure
The strip list above has to run on every request, at the edge, under rules you can audit. AdSovereign is an enterprise, on-premise RTB stack (DSP, SSP, exchange, DMP and clean room) whose exchange decodes the TC String and GPP sections on ingest, applies per-buyer stripping rules for purposes, vendor IDs, disclosed vendors and special features, truncates IPs and geo for EU traffic, and writes a consent-decision log keyed to the request ID. The DSP side bids context-only when signals are absent and blocks cookie syncs without purpose 1. The architecture page shows where the consent gates sit, the API docs list the supported regs and user fields, and the security page covers log retention and access controls.
Sources
- Directive 2002/58/EC (ePrivacy Directive), Article 5(3). https://eur-lex.europa.eu/eli/dir/2002/58/oj
- Regulation (EU) 2016/679 (GDPR), Articles 4(11), 6, 7, 9, 26, 44 to 49. https://eur-lex.europa.eu/eli/reg/2016/679/oj
- CJEU, Case C-673/17, Planet49 (1 October 2019). https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:62017CJ0673
- EDPB, "Guidelines 2/2023 on Technical Scope of Art. 5(3) of ePrivacy Directive", final version (October 2024). https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-22023-technical-scope-art-53-eprivacy-directive_en
- CJEU, Case C-252/21, Meta Platforms v Bundeskartellamt (4 July 2023). https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:62021CJ0252
- Irish Data Protection Commission, "Data Protection Commission announces conclusion of two inquiries into Meta Ireland" (4 January 2023). https://www.dataprotection.ie/en/news-media/data-protection-commission-announces-conclusion-two-inquiries-meta-ireland
- Irish Data Protection Commission, "Data Protection Commission announces conclusion of inquiry into Meta Ireland" (22 May 2023). https://www.dataprotection.ie/en/news-media/press-releases/Data-Protection-Commission-announces-conclusion-of-inquiry-into-Meta-Ireland
- EDPB, "EDPB: 'Consent or Pay' models should offer real choice" (17 April 2024). https://www.edpb.europa.eu/news/news/2024/edpb-consent-or-pay-models-should-offer-real-choice_en
- European Commission, "Commission finds Apple and Meta in breach of the Digital Markets Act", IP/25/1085 (23 April 2025). https://ec.europa.eu/commission/presscorner/detail/en/ip_25_1085
- Belgian Data Protection Authority, "IAB Europe held responsible for a mechanism that infringes the GDPR" (2 February 2022; action plan 11 January 2023). https://www.dataprotectionauthority.be/citizen/iab-europe-held-responsible-for-a-mechanism-that-infringes-the-gdpr
- CJEU, Case C-604/22, IAB Europe v Gegevensbeschermingsautoriteit (7 March 2024). https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:62022CJ0604
- DLA Piper Privacy Matters, "EU: Brussels Court of Appeal rules on IAB Europe and the TC String" (11 June 2025; judgment 14 May 2025). https://privacymatters.dlapiper.com/2025/06/eu-brussels-court-of-appeal-rules-on-iab-europe-and-the-tc-string-implications-for-gdpr-compliance/
- IAB Europe, "TCF v2.2" (launched 16 May 2023; deadline 20 November 2023). https://iabeurope.eu/tcf-2-2/
- IAB Europe, "Transparency & Consent Framework" (v2.3 launched April 2025; deadline 28 February 2026). https://iabeurope.eu/transparency-consent-framework/
- IAB Tech Lab, "Consent string and vendor list formats v2" (TCF v2.x string specification; DisclosedVendors mandatory in v2.3). https://raw.githubusercontent.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/master/TCFv2/IAB%20Tech%20Lab%20-%20Consent%20string%20and%20vendor%20list%20formats%20v2.md
- IAB Europe and IAB Tech Lab, "TCF Implementation Guidelines". https://raw.githubusercontent.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/master/TCFv2/TCF-Implementation-Guidelines.md
- IAB Tech Lab, OpenRTB 2.6 specification. https://raw.githubusercontent.com/InteractiveAdvertisingBureau/openrtb2.x/main/2.6.md
- IAB Tech Lab, "Global Privacy Platform" (GPP API v1.1). https://iabtechlab.com/standards/global-privacy-platform/
- IAB Tech Lab, press releases (GPP updates and DDRF v2, 23 October 2025). https://iabtechlab.com/press-releases/
- CNIL, "Sanctions issued by the CNIL" (Google and Facebook 31 December 2021; Criteo 15 June 2023; Shein 1 September 2025). https://www.cnil.fr/en/sanctions-issued-cnil
- Privacy Laws & Business, "CNIL fines Google €325 million and Shein €150 million" (4 September 2025). https://www.privacylaws.com/news/cnil-fines-google-325-million-and-shein-150-million/
- CNIL, "Closure of the injunction against Google" (decision 23 September 2026; published 14 October 2026). https://www.cnil.fr/en/closure-injunction-google
- EDPB, "Norwegian DPA fines Xandr EUR 8 600 000 for unlawful processing of personal data" (16 October 2026; decision 2 October 2026). https://www.edpb.europa.eu/news/norwegian-dpa-fines-xandr-eur-8-600-000-for-unlawful-processing-of-personal-data_en
- legislation.gov.uk, Privacy and Electronic Communications (EC Directive) Regulations 2003, regulation 6 (as substituted 5 February 2026). https://www.legislation.gov.uk/uksi/2003/2426/regulation/6
- legislation.gov.uk, The Data (Use and Access) Act 2025 (Commencement No. 6 and Transitional and Saving Provisions) Regulations 2026, SI 2026/82 (made 29 January 2026). https://www.legislation.gov.uk/uksi/2026/82/made
- Clyde & Co, "The Data (Use and Access) Act 2025" (July 2025; Royal Assent 19 June 2025). https://www.clydeco.com/en/insights/2025/07/the-data-use-and-access-act-2025
- Mayer Brown, "PECR Reform: Rules relating to electronic marketing and cookies in the UK" (1 July 2025). https://www.mayerbrown.com/en/insights/publications/2025/06/the-data-use-and-access-act-pecr-reform-rules-relating-to-electronic-marketing-and-cookies-in-the-uk
- ICO, "Guidance on the use of storage and access technologies" (published 20 December 2024; updated 29 April 2026). https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guidance-on-the-use-of-storage-and-access-technologies/
Changelog
18 October 2026: aligned the title and heading and applied recorded source-URL corrections where needed. Factual research cutoff remains 17 October 2026.
17 October 2026. First edition. Covers TCF v2.2 and v2.3, the Market Court judgment of 14 May 2025, the CNIL decisions of 1 September 2025 and closure of 23 September 2026, the Xandr decision of 2 October 2026, and PECR as amended on 5 February 2026. Next review 15 January 2027.