Przejdź do treści

TikTok Pixel i Events API: wdrożenie, deduplikacja i najczęstsze błędy

TikTok Pixel sam nie zarejestruje wszystkich konwersji, a Events API bez wspólnego identyfikatora policzy je podwójnie. Pokazujemy, jak połączyć oba kanały, przekazać dane klienta i uniknąć błędów, które psują optymalizację.

Redakcja Pixel Insider9 min czytaniaPoziom: średni

  • TikTok Pixel
  • Events API
  • GTM
  • sGTM
Spis treści
  1. Pixel czy Events API: co mierzy każdy kanał
  2. Jak wdrożyć TikTok Pixel z event_id
  3. Jak skonfigurować TikTok Events API krok po kroku
  4. Deduplikacja w TikToku: zasady i event_id
  5. ttclid, _ttp i dane klienta: jak poprawić dopasowanie
  6. Zgody i server-side: jak nie obejść decyzji użytkownika
  7. Najczęstsze błędy w TikTok Pixel i Events API
  8. Najczęściej zadawane pytania

TikTok Events API to interfejs, przez który wysyłasz zdarzenia konwersji z serwera bezpośrednio do TikToka, niezależnie od tego, czy piksel w przeglądarce zadziałał. Działa w parze z TikTok Pixel: piksel rejestruje zachowanie na stronie, a Events API uzupełnia zdarzenia utracone przez blokady skryptów, ograniczenia przeglądarek czy przerwane sesje. Aby TikTok nie policzył zakupu dwa razy, oba kanały muszą przekazać tę samą nazwę zdarzenia i ten sam event_id. W tym poradniku opisujemy wdrożenie piksela, konfigurację Events API, deduplikację, dane poprawiające dopasowanie i błędy, które najczęściej psują pomiar kampanii.

Najważniejsze w skrócie

  • TikTok Events API uzupełnia piksel o zdarzenia z serwera, dlatego w sklepie internetowym najlepiej korzystać z obu kanałów jednocześnie.
  • Deduplikacja wymaga identycznej nazwy zdarzenia i event_id; TikTok porównuje zdarzenia w oknie 48 godzin i zachowuje pierwsze z nich.
  • Dopasowanie poprawiają ttclid z adresu kliknięcia, plik cookie _ttp, zahaszowane e-mail, telefon i external_id oraz adres IP i user agent.
  • Na liście zdarzeń standardowych zakup to Purchase; starsze wdrożenia często używają CompletePayment lub PlaceAnOrder, więc nazwa musi być spójna w pikselu, API i kampaniach.
  • Token dostępu do Events API generujesz w ustawieniach piksela w Events Managerze i przechowujesz wyłącznie na serwerze.

Pixel czy Events API: co mierzy każdy kanał

Oba kanały wysyłają te same zdarzenia, ale z różnych miejsc i z innym zestawem danych. Piksel widzi przeglądarkę, a Events API – system sklepu albo kontener serwerowy.

Cecha TikTok Pixel TikTok Events API
Miejsce wysyłki przeglądarka użytkownika serwer, kontener server-side GTM lub integracja partnera
Odporność na blokady skryptów niska wysoka
Zdarzenia offline i po płatności nie tak
Pliki cookie i ttclid odczytuje sam musisz je przekazać
Dane klienta (e-mail, telefon) przez rozszerzone dopasowanie w obiekcie użytkownika, zahaszowane
Konfiguracja kod bazowy lub szablon GTM token dostępu i integracja
Wpływ na szybkość strony dodatkowy skrypt brak po stronie przeglądarki

W praktyce najczęściej spotyka się trzy warianty: tylko piksel (najprostszy, ale z największymi stratami danych), piksel z Events API przez integrację platformy sklepowej oraz piksel z Events API przez server-side tagging. Ostatni wariant daje najwięcej kontroli i pozwala obsłużyć TikToka z tego samego kontenera co Meta, którego konfigurację opisujemy w poradniku Meta Conversions API przez server-side GTM.

Jak wdrożyć TikTok Pixel z event_id

Kod bazowy piksela pobierasz z Events Managera w TikTok Ads Manager albo instalujesz przez szablon piksela w galerii szablonów GTM. Niezależnie od metody każde zdarzenie, które ma trafić także przez Events API, musi otrzymać event_id w trzecim argumencie funkcji ttq.track.

// Rozszerzone dopasowanie dla zalogowanego klienta lub po złożeniu zamówienia
ttq.identify({
  email: '<SHA-256 adresu e-mail>',
  phone_number: '<SHA-256 numeru telefonu>',
  external_id: '<SHA-256 identyfikatora klienta>'
});

// Zakup z identyfikatorem wspólnym dla piksela i Events API
ttq.track('Purchase', {
  contents: [
    { content_id: 'SKU-001', content_type: 'product', quantity: 1, price: 259.99 }
  ],
  value: 259.99,
  currency: 'PLN'
}, {
  event_id: 'ord-2026-104578'
});

Wartości content_id powinny odpowiadać identyfikatorom produktów w katalogu TikToka. Jeśli prowadzisz kampanie katalogowe, niezgodność identyfikatorów w zdarzeniach i w feedzie produktowym uniemożliwia dopasowanie konwersji do produktów. Jak utrzymać spójne identyfikatory w kilku kanałach, opisujemy w tekście o jednym feedzie dla Google, Meta, TikToka i Allegro.

Dane do tagów najlepiej czerpać z jednej warstwy danych e-commerce, z której korzystają też GA4 i Meta. Gotową specyfikację dla programisty zawiera artykuł o warstwie danych dla e-commerce GA4. Jeśli tag TikToka wdrażasz jako Custom HTML, rozważ zastąpienie go szablonem, co omawiamy w poradniku o szablonach niestandardowych w GTM.

Jak skonfigurować TikTok Events API krok po kroku

Konfiguracja Events API zaczyna się w Events Managerze, a kończy testem zdarzenia z kodem testowym. Poniższe kroki dotyczą integracji przez kontener serwerowy lub własny backend.

  1. W Events Managerze wybierz źródło danych typu web i piksel, do którego chcesz wysyłać zdarzenia.
  2. W ustawieniach piksela wygeneruj token dostępu do Events API i zapisz go w bezpiecznym miejscu na serwerze.
  3. Wybierz metodę integracji: aplikację lub wtyczkę platformy sklepowej, szablon tagu w kontenerze serwerowym GTM albo bezpośrednie wywołania API z backendu.
  4. Ustal listę zdarzeń wysyłanych oboma kanałami i nazwy zgodne z tymi, które optymalizujesz w kampaniach.
  5. Przekazuj w każdym zdarzeniu event_id, event_time, dane strony oraz dane użytkownika: ttclid, ttp, IP, user agent i zahaszowane identyfikatory.
  6. W narzędziu testowania zdarzeń pobierz kod testowy, dodaj go do zdarzeń serwerowych i złóż testowe zamówienie.
  7. Sprawdź, czy zdarzenie z piksela i z serwera zostały rozpoznane jako jedno, a potem usuń kod testowy i opublikuj zmiany.

Uproszczona struktura zdarzenia w Events API wygląda tak. Nazwy pól i wersję interfejsu potwierdź w aktualnej dokumentacji TikToka, bo zmieniają się między wersjami:

{
  "event_source": "web",
  "event_source_id": "TWOJ_PIXEL_ID",
  "data": [{
    "event": "Purchase",
    "event_time": 1793095200,
    "event_id": "ord-2026-104578",
    "user": {
      "email": "<SHA-256 adresu e-mail>",
      "phone": "<SHA-256 numeru telefonu>",
      "external_id": "<SHA-256 identyfikatora klienta>",
      "ttclid": "<wartość ttclid z kliknięcia>",
      "ttp": "<wartość pliku _ttp>",
      "ip": "203.0.113.10",
      "user_agent": "Mozilla/5.0 (...)"
    },
    "properties": {
      "currency": "PLN",
      "value": 259.99,
      "content_type": "product",
      "contents": [{ "content_id": "SKU-001", "quantity": 1, "price": 259.99 }]
    },
    "page": { "url": "https://twojsklep.pl/zamowienie/dziekujemy/" }
  }]
}

Zwróć uwagę na event_time. W tej strukturze to znacznik czasu w sekundach, a nie w milisekundach, jak w niektórych innych API. Pomyłka sprawia, że zdarzenie ma datę z odległej przyszłości i zostaje odrzucone.

Deduplikacja w TikToku: zasady i event_id

Deduplikacja zdarzeń w TikToku dotyczy tylko zdarzeń wysyłanych podwójnie. Jeśli AddToCart idzie wyłącznie z piksela, a Purchase wyłącznie z serwera, nie ma czego scalać. Gdy ten sam zakup idzie oboma kanałami, obowiązują następujące zasady:

  1. Oba zdarzenia muszą mieć identyczną nazwę (event) i identyczny event_id.
  2. TikTok porównuje zdarzenia w oknie 48 godzin od pierwszego z nich.
  3. Pierwsze otrzymane zdarzenie zostaje zachowane i uzupełnione, a duplikat nie jest liczony osobno.
  4. Ta sama reguła działa dla duplikatów w obrębie jednego kanału, np. dwóch zdarzeń z piksela po odświeżeniu strony podziękowania.

Najlepszym event_id dla zakupu jest numer zamówienia, bo jest znany i w przeglądarce, i w systemie sklepu. Dla pozostałych zdarzeń identyfikator generujesz raz na stronie i przekazujesz do obu tagów. Te same metody generowania identyfikatorów, wraz z gotową zmienną GTM, opisujemy w artykule o deduplikacji piksela i Conversions API w Meta. Mechanizm jest bardzo podobny w OpenAI Pixel i Conversions API, choć pola nazywają się tam inaczej.

ttclid, _ttp i dane klienta: jak poprawić dopasowanie

TikTok dopasowuje zdarzenie do użytkownika na podstawie identyfikatorów, które mu przekażesz. Im więcej poprawnych identyfikatorów w zdarzeniu, tym więcej konwersji trafi do raportów i do optymalizacji.

Parametr ttclid TikTok dokleja do adresu strony docelowej po kliknięciu reklamy. Piksel zapisuje go sam, ale dla zdarzeń serwerowych musisz go zachować – np. w pliku cookie lub w danych zamówienia – i dołączyć do zdarzenia. Plik _ttp zapisuje piksel jako identyfikator przeglądarki; jego wartość odczytasz w kontenerze serwerowym, jeśli działa na subdomenie sklepu. Przekierowania gubiące parametry adresu usuwają ttclid, więc przetestuj każdy link docelowy.

Dane kontaktowe – e-mail, telefon, external_id – wysyłasz zahaszowane SHA-256 po normalizacji: e-mail małymi literami i bez spacji, identyfikator klienta jako stała wartość z Twojego systemu. Format telefonu przed haszowaniem sprawdź w dokumentacji TikToka, bo platformy różnią się w tej kwestii; przykładowo Meta oczekuje samych cyfr z kodem kraju, bez znaku plus. Ogólne zasady normalizacji i najczęstsze błędy, takie jak podwójne haszowanie, opisujemy w poradniku o Event Match Quality w Meta – większość z nich dotyczy też TikToka. Diagnostykę jakości zdarzeń znajdziesz w Events Managerze, przy szczegółach piksela.

Zgody i server-side: jak nie obejść decyzji użytkownika

TikTok Pixel zapisuje pliki cookie i przesyła dane do celów reklamowych, więc wymaga zgody marketingowej. W GTM ustaw mu wymóg dodatkowej zgody na ad_storage i uruchamiaj go także na zdarzeniu, które CMP wysyła po akceptacji. Piksel udostępnia też metody wstrzymania i udzielenia zgody w kodzie (ttq.holdConsent(), ttq.grantConsent(), ttq.revokeConsent()); sprawdź w dokumentacji, czy obsługuje je Twoja wersja kodu bazowego. Całą konfigurację zgód opisuje checklista Consent Mode v2.

W kontenerze serwerowym tag TikToka nie zna decyzji z banera. Dodaj w regule warunek oparty na parametrze gcs przychodzącego żądania GA4 – wartość zaczynająca się od G11 oznacza zgodę na ad_storage. Jak sprawdzić, że parametr dociera poprawnie, pokazujemy w poradniku jak sprawdzić, czy Consent Mode działa. Events API nie służy do omijania odmowy, a przekazywanie danych klientów do TikToka opisz w polityce prywatności i skonsultuj z prawnikiem.

Najczęstsze błędy w TikTok Pixel i Events API

Poniższe błędy odpowiadają za większość problemów z liczbą konwersji w TikTok Ads Manager. Wiele z nich wykryjesz, porównując liczbę zakupów w TikToku z panelem sklepu.

Błąd Objaw Rozwiązanie
Różne nazwy zakupu w pikselu i API zakupy liczone podwójnie lub optymalizacja na innym zdarzeniu ujednolicaj nazwę i sprawdź zdarzenie optymalizacji w kampaniach
Brak lub różny event_id więcej zakupów w TikToku niż w sklepie przekazuj ten sam identyfikator w obu kanałach
event_time w milisekundach zdarzenia serwerowe odrzucane wysyłaj znacznik czasu w sekundach
Wartość bez waluty lub jako tekst brak wartości konwersji i ROAS przekazuj value jako liczbę i currency „PLN”
content_id niezgodny z katalogiem brak dopasowania produktów w kampaniach katalogowych używaj tych samych identyfikatorów co w feedzie
Kod testowy w produkcji zdarzenia trafiają do narzędzia testowego usuń kod po zakończeniu testów
Wtyczka sklepu i kontener serwerowy naraz podwójne zdarzenia serwerowe zostaw jedną integrację serwerową
ttclid gubiony w przekierowaniach konwersje bez przypisania do kampanii testuj linki docelowe i zachowuj parametry

Po usunięciu błędów liczby w TikToku i w GA4 nadal nie będą identyczne, bo platformy stosują inne modele atrybucji. Skąd biorą się różnice i jak je interpretować, wyjaśniamy w artykule o rozbieżnościach konwersji między GA4, Google Ads i Meta. Do oceny opłacalności kampanii przyda się z kolei porównanie wskaźników w tekście o ROAS, POAS i MER. Pozostałe poradniki o pikselach i API konwersji znajdziesz w podtemacie Meta Pixel i Conversions API.

Najczęściej zadawane pytania

Czy TikTok Events API zastępuje TikTok Pixel?

Nie. Events API najlepiej działa razem z pikselem. Piksel rejestruje zachowanie w przeglądarce i zapisuje identyfikatory, które poprawiają dopasowanie, a Events API uzupełnia zdarzenia utracone przez blokady skryptów i pozwala wysyłać konwersje potwierdzone w systemie sklepu. Warunkiem jest wspólny event_id i identyczna nazwa zdarzenia w obu kanałach.

Jak działa deduplikacja w TikTok Events API?

TikTok uznaje zdarzenia za duplikaty, gdy mają identyczną nazwę i ten sam event_id, a dotarły w oknie 48 godzin od pierwszego z nich. Zachowuje pierwsze zdarzenie i uzupełnia je danymi, a duplikatu nie liczy osobno. Reguła dotyczy zdarzeń z piksela i serwera, a także powtórzeń w obrębie jednego kanału.

Którą nazwę zdarzenia zakupu wybrać w TikToku?

Na aktualnej liście zdarzeń standardowych zakup oznacza zdarzenie Purchase. Starsze wdrożenia często korzystają z CompletePayment lub PlaceAnOrder. Najważniejsza jest spójność: ta sama nazwa w pikselu, w Events API i w ustawieniach optymalizacji kampanii. Przed zmianą nazwy sprawdź, pod które zdarzenie optymalizują się Twoje aktywne kampanie.

Gdzie znaleźć token dostępu do TikTok Events API?

Token generujesz w Events Managerze w TikTok Ads Manager, w ustawieniach wybranego piksela. Przechowuj go wyłącznie po stronie serwera – w kontenerze server-side GTM lub w konfiguracji backendu – i nigdy nie umieszczaj w kodzie strony ani w kontenerze web, bo byłby widoczny dla każdego odwiedzającego.

Czy TikTok Events API wymaga zgody użytkownika?

Przekazywanie danych o zachowaniu i identyfikatorów klienta do celów reklamowych wymaga podstawy prawnej, a w przypadku danych z przeglądarki – zgody zgodnej z Prawem komunikacji elektronicznej. Events API nie zwalnia z tego obowiązku. W kontenerze serwerowym dodaj warunek zgody do reguły tagu TikToka, a zakres przetwarzania skonsultuj z prawnikiem.