Home / Blog / Server Side Tagging and Consent: Keeping the Signal Intact

TCF Consent Strings: What a Publisher Is Actually Passing to the Ad Stack

Published 2026-11-01

Most publishers have never seen their own consent string. It is a long, opaque block of characters, generated by the banner, passed hand to hand through the advertising supply chain, and decoded by systems the publisher does not operate. Inside that block sit the user's answers, purpose by purpose and vendor by vendor, in a standard format maintained for the IAB's Transparency and Consent Framework.

Opaque is not the same as unimportant. When a regulator or an advertising partner questions a publisher's consent, the string is the artefact they decode. What it says is what your banner told the market, whether or not it matches what the user thought they chose.

What the string carries

Three layers travel inside it. The user's consent and legitimate interest signals for a fixed list of standard purposes, things like storing information on a device, personalised advertising, and measurement, each with a defined meaning that vendors sign up to when they register. The vendor level signals, which registered companies the user was shown and what state each one is in. And the publisher's own declarations, including disclosures about vendors and any publisher restrictions layered on top.

The framework's discipline cuts both ways. Standard purposes stop every site inventing its own definitions, which is what makes machine reading down a chain possible. They also mean your banner's friendly wording has to map honestly onto the fixed purposes behind it. A purpose described to the user as improving your experience that encodes as personalised advertising in the string is a mismatch with a decode button on it.

Reading yours, and the checks that matter

Decoding tools are public: paste a string captured from your own site, as a test user in each consent state, and read what comes out. Refuse everything and decode again. The refusal string is the one nobody tests, and it should show the purposes off cleanly, with only the narrow legitimate interest positions the framework allows, matching what your notice promises a refusing user. Accept, customise, and withdraw each deserve the same thirty seconds.

Check the vendor list against reality. The string discloses the vendors presented to users, and that list comes from the global vendor list plus your configuration. Vendors your ad stack no longer uses still being disclosed is untidy. Vendors your stack uses that are missing from the disclosure, or receiving signals their registration does not cover, is a compliance problem with named counterparties attached.

Where publishers get caught

The recurring failure is drift. The banner was configured at integration, the ad stack evolved crate by crate, a new partner was added by the commercial team, and nobody revisited the consent configuration because the banner still appeared and the fill rate looked fine. Meanwhile the string kept telling the market a version of the truth from two years ago.

Assign the string an owner and a review trigger: any change to advertising partners, any CMP update, any new market or property. The check costs an afternoon a year. The alternative, discovering the mismatch from a partner's audit or a regulator's letter, costs the same afternoon in worse company.

Related reading

These earlier guides cover connected questions in more depth: Pre-Consent Tag Blocking: Verifying Nothing Fires Before the Click, Auditing Tag Manager Consent Defaults: Where the Leaks Actually Are, and When to Ask Again: Setting a Consent Refresh Cadence.

Frequently asked questions

What is a TCF consent string in plain terms?

It is the machine readable version of a user's consent choices under the IAB Transparency and Consent Framework: which standard purposes are on or off, which registered vendors were disclosed, and on what legal basis each may process data. Ad partners decode it to decide what they are allowed to do.

How can I see what my site's consent string says?

Consent management platforms usually expose it in their tooling, and public decoders will translate a captured string into readable purposes and vendors. Capture one for each consent state, including a full refusal, and compare the contents against your notice.

Does every site need to use the TCF?

No. It matters where programmatic advertising partners require it, which is mainly publisher and media contexts in Europe. A site that does not run framework based advertising may manage consent perfectly well without generating a TCF string.

What is the biggest risk with consent strings?

Drift between the string and reality: advertising partners changing while the consent configuration stays frozen, so the signals passed down the chain no longer match the choices users made or the vendors actually in use.