Błędy ciągu zgody, które po cichu zabijają Twoje przychody reklamowe
Cichy wyciek przychodów
Gdy Twój eCPM spada o kilka procent każdego miesiąca, przyczyną rzadko jest inwentarz lub ceny minimalne. Częściej jest to uszkodzony TC string — sygnał IAB Transparency & Consent Framework (TCF), który podróżuje z każdym żądaniem reklamowym. Źle sformułowany lub brakujący ciąg nie zgłasza żadnego głośnego błędu. Zamiast tego serwer reklamowy po cichu przechodzi na reklamy niespersonalizowane, partnerzy popytowi się wycofują, a przychody uciekają bez ani jednego alertu. Dla wydawców aplikacji i gier zarabiających w EOG i Wielkiej Brytanii to najczęściej pomijana przyczyna utraconych dochodów.
Co właściwie niesie TC string
TC string to zakodowany w base64 blob tworzony przez Twoją Consent Management Platform (CMP). Koduje wybory użytkownika: zaakceptowane cele, dozwolonych dostawców, Twój CMP ID, wersję polityki i znacznik czasu. Kupujący dekodują go w milisekundach, by zdecydować, czy mogą licytować z personalizowanym targetowaniem. Dwa sygnały mają równie duże znaczenie:
gdprApplies— flaga (1, 0 lub undefined) mówiąca kupującym, czy RODO ma zastosowanie.- Google Consent Mode v2 — sygnały
ad_storage,ad_user_dataiad_personalization, które Google odczytuje niezależnie od ciągu TCF.
Jeśli którykolwiek z nich jest błędny, popyt wyparowuje — nawet gdy użytkownik faktycznie wyraził zgodę.
Pięć błędów, które po cichu kosztują Cię pieniądze
1. Brakujący lub wygasły ciąg. Jeśli CMP nigdy nie zapisze ciągu lub zbuforowana zgoda przekroczy Twoje okno ponownego pytania, żądania wychodzą bez sygnału. Kupujący traktują „brak ciągu” jak „brak zgody” i licytują tylko z kontekstowym popytem o niskim eCPM albo pomijają aukcję.
2. Błędny CMP ID. Każda certyfikowana CMP ma zarejestrowany identyfikator wbudowany w ciąg. Jeśli zapisany zostanie nierozpoznany identyfikator, Google i dostawcy IAB go odrzucają — częste po migracji, gdy stary SDK jest wciąż dołączony.
3. Niezadeklarowany dostawca. Partner popytowy może mieć pełną zgodę, ale jeśli jego vendor ID nie znajduje się na liście dozwolonych dostawców, nie może licytować personalizowanie. Wydawcy często zapominają zaktualizować listę po dodaniu partnera.
4. Źle sformułowany gdprApplies. Przekazanie ciągu „1” zamiast liczby całkowitej lub pozostawienie go jako undefined dla użytkownika wyraźnie w EOG dezorientuje kupujących. Nieprawidłowy gdprApplies=0 może też narazić Cię na ryzyko zgodności, choć wygląda w porządku.
5. Sygnały Consent Mode nie odpalają. Ciąg TCF może być idealny, podczas gdy Consent Mode pozostaje w domyślnym stanie odmowy — na przykład, gdy SDK ładuje reklamy przed rozstrzygnięciem zgody. Google serwuje wtedy reklamy niespersonalizowane niezależnie od TC string.
Workflow debugowania krok po kroku
Pracuj od urządzenia na zewnątrz w stronę serwera reklamowego i odtwarzaj w czystym stanie — wyczyść dane aplikacji lub użyj świeżego profilu przeglądarki, by przeterminowana zgoda Cię nie zmyliła.
- Krok 1 — Przechwyć surowy ciąg. W sieci odczytaj go przez
__tcfapi('getTCData', 2, cb). W aplikacji zrzuć kluczIABTCF_TCStringzSharedPreferences(Android) lubNSUserDefaults(iOS). - Krok 2 — Zdekoduj i zwaliduj. Wklej go do dekodera IAB TCF lub walidatora CMP. Potwierdź, że CMP ID jest Twoje, wersja polityki i znacznik czasu są aktualne, a identyfikatory kluczowych dostawców pojawiają się na liście.
- Krok 3 — Sprawdź żądanie reklamowe. Użyj Charles Proxy lub inspektora sieci, by obserwować żądanie GAM, i zweryfikuj, czy parametry
gdprigdpr_consentniosą właściwe wartości. - Krok 4 — Sprawdź Consent Mode. Użyj Google Tag Assistant, by potwierdzić, że
ad_user_dataiad_personalizationprzełączają się na granted, gdy użytkownik akceptuje. - Krok 5 — Potwierdź w GAM. Otwórz wymiar raportowania reklam niespersonalizowanych w Ad Managerze. Skok ruchu NPA, który nie odpowiada Twojemu wskaźnikowi rezygnacji, to odcisk palca złego ciągu.
Naprawa pierwotnej przyczyny
Załatanie jednego złego żądania jest łatwe; zapobieżenie kolejnemu to prawdziwa praca. Spraw, by reklamy czekały na zgodę przed inicjalizacją, utrzymuj listę dostawców zsynchronizowaną ze stosem popytowym i śledź stosunek wyświetleń spersonalizowanych do niespersonalizowanych — przesunięcie tam to Twoje najwcześniejsze ostrzeżenie.
Tu certyfikowana przez Google CMP zarabia na siebie. FlexyConsent emituje ważne ciągi IAB TCF 2.3 z właściwym CMP ID i deklaracjami dostawców, odpala sygnały Consent Mode v2, by ad_user_data i ad_personalization śledziły wybór użytkownika, oraz udostępnia analitykę wskaźnika zgód w sieci, na Androidzie i iOS — tak że uszkodzony ciąg ujawnia się na pulpicie, a nie w Twojej wypłacie.
Najważniejsze wnioski
- Zły TC string nie powoduje awarii — po cichu degraduje Cię do reklam niespersonalizowanych i niższego eCPM.
- Pięciu winowajców: brakujące/wygasłe ciągi, błędny CMP ID, niezadeklarowani dostawcy, źle sformułowany
gdprAppliesi martwe sygnały Consent Mode. - Debuguj od urządzenia do serwera reklamowego: przechwyć, zdekoduj, sprawdź żądanie, zweryfikuj Consent Mode, sprawdź GAM.
- Śledź stale swój stosunek spersonalizowanych do NPA — certyfikowana CMP jak FlexyConsent czyni ważne ciągi i prawidłowe sygnały Consent Mode v2 stanem domyślnym.