Помилки рядка згоди, що непомітно вбивають ваш рекламний дохід
Непомітний витік доходу
Коли ваш eCPM щомісяця знижується на кілька відсотків, причина рідко криється в інвентарі чи мінімальних цінах. Частіше це зламаний TC string — сигнал IAB Transparency & Consent Framework (TCF), що супроводжує кожен рекламний запит. Некоректний або відсутній рядок не видає гучної помилки. Натомість рекламний сервер непомітно відкочується до неперсоналізованої реклами, партнери з попиту відпадають, і дохід витікає без жодного сповіщення. Для видавців застосунків та ігор, які монетизуються в ЄЕЗ і Великій Британії, це найбільш недооцінена причина втрати доходу.
Що насправді несе TC string
TC string — це закодований у base64 блок, який створює ваша платформа управління згодою (CMP). Він кодує вибір користувача: погоджені цілі, дозволених постачальників, ваш CMP ID, версію політики та позначку часу. Покупці декодують його за мілісекунди, щоб вирішити, чи можуть вони брати участь у торгах з персоналізованим таргетингом. Два сигнали важать не менше:
gdprApplies— прапорець (1, 0 або undefined), що повідомляє покупцям, чи застосовується GDPR.- Google Consent Mode v2 — сигнали
ad_storage,ad_user_dataтаad_personalization, які Google зчитує незалежно від рядка TCF.
Якщо щось із цього неправильне, попит випаровується — навіть коли користувач фактично надав згоду.
П'ять помилок, що непомітно коштують вам грошей
1. Відсутній або прострочений рядок. Якщо CMP ніколи не записує рядок або кешована згода застаріває за межами вікна повторного запиту, запити йдуть без сигналу. Покупці трактують "немає рядка" як "немає згоди" і беруть участь у торгах лише з контекстним попитом із низьким eCPM або пропускають аукціон.
2. Неправильний CMP ID. Кожна сертифікована CMP має зареєстрований ID, вбудований у рядок. Якщо записано нерозпізнаний ID, Google і постачальники IAB відхиляють його — поширено після міграції, коли старий SDK усе ще підключено.
3. Постачальник не оголошений. Партнер з попиту може мати повну згоду, але якщо його vendor ID відсутній у списку дозволених постачальників, він не може брати участь у персоналізованих торгах. Видавці часто забувають оновити список після додавання партнера.
4. Некоректний gdprApplies. Передавання рядка "1" замість цілого числа або залишення значення undefined для користувача, який явно перебуває в ЄЕЗ, збиває покупців з пантелику. Неправильний gdprApplies=0 також може наразити вас на ризик невідповідності вимогам, при цьому виглядаючи нормально.
5. Сигнали Consent Mode не спрацьовують. Рядок TCF може бути ідеальним, тоді як Consent Mode залишається у стані відмови за замовчуванням — наприклад, коли SDK завантажує рекламу до того, як згоду розв'язано. Тоді Google показує неперсоналізовану рекламу незалежно від TC string.
Покроковий процес налагодження
Рухайтеся від пристрою назовні до рекламного сервера й відтворюйте в чистому стані — очистьте дані застосунку або використовуйте свіжий профіль браузера, щоб застаріла згода не ввела вас в оману.
- Крок 1 — Захопіть сирий рядок. У вебі читайте його через
__tcfapi('getTCData', 2, cb). У застосунку вивантажте ключIABTCF_TCStringзSharedPreferences(Android) абоNSUserDefaults(iOS). - Крок 2 — Декодуйте й перевірте. Вставте його в декодер IAB TCF або валідатор CMP. Підтвердіть, що CMP ID ваш, версія політики й позначка часу актуальні, а ваші ключові vendor ID присутні у списку.
- Крок 3 — Огляньте рекламний запит. Використовуйте Charles Proxy або мережевий інспектор, щоб спостерігати за запитом GAM, і переконайтеся, що параметри
gdprтаgdpr_consentнесуть правильні значення. - Крок 4 — Перевірте Consent Mode. Використовуйте Google Tag Assistant, щоб підтвердити, що
ad_user_dataтаad_personalizationперемикаються на granted, коли користувач приймає. - Крок 5 — Підтвердіть у GAM. Відкрийте вимір звітності неперсоналізованої реклами в Ad Manager. Сплеск трафіку NPA, що не відповідає вашому рівню відмов, — це відбиток поганого рядка.
Усунення першопричини
Залатати один поганий запит легко; запобігти наступному — ось справжня робота. Змусьте рекламу чекати згоди перед ініціалізацією, тримайте список постачальників синхронізованим із вашим стеком попиту й відстежуйте співвідношення персоналізованих і неперсоналізованих показів — зсув там є вашим найранішим попередженням.
Ось де сертифікована Google CMP виправдовує себе. FlexyConsent видає дійсні рядки IAB TCF 2.3 з правильним CMP ID та оголошеннями постачальників, запускає сигнали Consent Mode v2, щоб ad_user_data та ad_personalization відстежували вибір користувача, і надає аналітику рівня згоди по вебу, Android та iOS — тож зламаний рядок проявляється на дашборді, а не у вашій виплаті.
Ключові висновки
- Поганий TC string не спричиняє збою — він непомітно знижує вас до неперсоналізованої реклами й нижчого eCPM.
- П'ять винуватців: відсутні/прострочені рядки, неправильний CMP ID, неоголошені постачальники, некоректний
gdprAppliesта мертві сигнали Consent Mode. - Налагоджуйте від пристрою до рекламного сервера: захопіть, декодуйте, огляньте запит, перевірте Consent Mode, перевірте GAM.
- Безперервно відстежуйте ваше співвідношення персоналізованих показів до NPA — сертифікована CMP, така як FlexyConsent, робить дійсні рядки й коректні сигнали Consent Mode v2 налаштуванням за замовчуванням.