Как читать строку согласия TCF: практическое руководство для разработчиков
Что на самом деле такое TC String
IAB Transparency & Consent Framework создаёт единый компактный токен — TC string — который путешествует с каждым рекламным запросом и точно сообщает поставщикам, на что пользователь согласился, а на что нет. Он закодирован в Base64-URL и упакован на уровне битов, поэтому выглядит как бессмыслица (CPxy...AAA), но кодирует точную, пригодную для аудита запись.
Сегменты
Полная TC string — это несколько разделённых точками сегментов. Первый — это core string; остальные необязательны:
- Core — CMP ID, версия CMP, временные метки согласия, версия политики и, что критично, битовые поля согласий на цели и согласий на поставщиков.
- Раскрытые поставщики — каких поставщиков показали пользователю.
- Publisher TC — согласия, специфичные для вас, издателя.
Битовые поля — это его сердце: бит N, установленный в 1, означает согласие на цель N или поставщика N. Цель 1 — это “хранить/получать доступ к информации на устройстве,” цели 3 и 4 охватывают персонализированную рекламу и так далее.
Декодирование одной на практике
Вы редко декодируете биты вручную. Используйте предоставленные IAB библиотеки или публичный декодер:
- Разделите по
.и декодируйте core-сегмент через Base64-URL. - Считайте поля заголовка фиксированной ширины (version, created, lastUpdated, cmpId, cmpVersion).
- Пройдитесь по битовым полям целей и поставщиков, чтобы точно увидеть, какие предоставлены.
В JavaScript вызов __tcfapi('getTCData', 2, cb) возвращает уже разобранный объект — tcData.purpose.consents и tcData.vendor.consents являются картами id → boolean. Это ваша истина в основе во время выполнения.
Ошибки, убивающие доход
Когда персонализированный спрос тихо исчезает, обычно причина — TC string:
- Отсутствующая строка — рекламный запрос не несёт никакого
gdprApplies/TC string, поэтому совместимые SSP опускаются до неперсонализированного. - Поставщик не дал согласия — бит ID поставщика вашего партнёра спроса равен 0, поэтому они не могут делать ставки с персонализацией.
- Просроченная или устаревшая строка — старая временная метка заставляет нижестоящие платформы не доверять ей.
- Неправильный CMP ID — незарегистрированный или тестовый CMP ID делает недействительной всю строку.
Рабочий процесс отладки
Воспроизведите согласие пользователя, получите живую TC string из __tcfapi или рекламного запроса, прогоните её через валидатор и сравните декодированные цели/поставщиков с тем, что требуют ваши партнёры. В девяти случаях из десяти пробел — это один бит поставщика или отсутствующая цель 1.
Где вписывается FlexyConsent
FlexyConsent генерирует TC string, действительные по спецификации, с зарегистрированным CMP ID, держит их свежими, предоставляет декодированное состояние для отладки и сообщает, какие цели и поставщики действительно предоставляются в вашем трафике — так что вы можете видеть, а не гадать, где утекает согласие (и доход).
Ключевые выводы
- TC string — это упакованная в биты, пригодная для аудита запись каждого выбора согласия.
- Битовые поля целей и поставщиков решают, могут ли партнёры показывать персонализированную рекламу.
- Большинство падений дохода сводятся к отсутствующей строке, поставщику без согласия или устаревшему/недействительному CMP ID.
- Декодируйте живую строку с помощью
__tcfapiи проверяйте её на соответствие требованиям партнёров при отладке.