Spis treści
- Jak działa Conversions API przez GTM w wersji serwerowej
- Co przygotować przed konfiguracją
- Konfiguracja kontenera web: zdarzenia, event_id i dane klienta
- Konfiguracja kontenera serwerowego krok po kroku
- event_id, fbp i fbc w kontenerze serwerowym
- Zgody i dane osobowe w kontenerze serwerowym
- Testowanie, monitoring i najczęstsze błędy
- Najczęściej zadawane pytania
Konfiguracja Conversions API przez GTM w wersji serwerowej polega na tym, że kontener w przeglądarce wysyła zdarzenia GA4 na Twoją subdomenę, np. sgtm.twojsklep.pl, klient GA4 w kontenerze serwerowym je odbiera, a tag Meta Conversions API przekazuje je do Meta. Piksel w przeglądarce działa dalej, a oba kanały łączy wspólny event_id. Takie rozwiązanie daje jeden strumień danych dla wielu platform, kontrolę nad tym, co trafia do Meta, i niezależność od blokad części skryptów. Wymaga za to utrzymania serwera i starannej konfiguracji zgód. Poniżej opisujemy cały proces krok po kroku.
Najważniejsze w skrócie
- Przepływ wygląda tak: kontener web, klient GA4 w kontenerze serwerowym, tag Meta Conversions API i Meta; piksel działa równolegle w przeglądarce.
- Przed startem przygotuj identyfikator zbioru danych (piksela), token dostępu z Menedżera zdarzeń, kontener serwerowy na subdomenie i warstwę danych e-commerce.
- event_id musi być identyczny w tagu piksela i w zdarzeniu GA4 wysyłanym do serwera, inaczej Meta policzy zdarzenia podwójnie.
- Tag w kontenerze serwerowym nie zna decyzji z banera, dlatego regułę uzupełnij o warunek zgody oparty na parametrze gcs.
- Kod zdarzeń testowych usuń z tagu przed publikacją – służy wyłącznie do diagnozy, a zostawiony w produkcji zaciemnia kolejne testy.
Jak działa Conversions API przez GTM w wersji serwerowej
W server-side tagging przeglądarka nie wysyła danych bezpośrednio do każdej platformy, tylko do Twojego serwera. Serwer decyduje, które dane i w jakiej postaci przekazać dalej. Dla Meta oznacza to, że Conversions API otrzymuje zdarzenia z kontenera serwerowego, a piksel nadal raportuje je z przeglądarki.
Przepływ jednego zakupu wygląda następująco:
- Sklep wypycha do warstwy danych zdarzenie
purchasez numerem zamówienia, wartością i produktami. - Kontener web odpala tag piksela Meta z
eventIDoraz tag GA4, który wysyła zdarzenie do kontenera serwerowego. - Klient GA4 w kontenerze serwerowym odbiera żądanie i zamienia je na dane zdarzenia.
- Tag Meta Conversions API odczytuje dane zdarzenia, pliki cookie
_fbpi_fbc, adres IP oraz user agent i wysyła zdarzenie do Meta. - Meta deduplikuje zdarzenie z przeglądarki i z serwera na podstawie nazwy i
event_id.
Jeśli nie masz jeszcze kontenera serwerowego, zacznij od poradnika server-side tagging w praktyce. Wybór infrastruktury i jej koszty porównujemy w tekście o hostingu server-side GTM.
Co przygotować przed konfiguracją
Zanim zaczniesz, zbierz wszystkie elementy w jednym miejscu. Brak któregokolwiek z nich zatrzyma konfigurację w połowie.
| Element | Gdzie go znajdziesz | Uwagi |
|---|---|---|
| Identyfikator zbioru danych (piksela) | Menedżer zdarzeń, źródła danych | ten sam, którego używa piksel w przeglądarce |
| Token dostępu Conversions API | ustawienia zbioru danych, sekcja Conversions API | przechowuj go tylko w kontenerze serwerowym |
| Kod zdarzeń testowych | karta testowania zdarzeń | używasz go tylko na czas testów |
| Kontener serwerowy z własną subdomeną | Cloud Run lub inny hosting | subdomena w tej samej domenie co sklep |
| Tag Google z adresem kontenera serwerowego | kontener web | parametr server_container_url |
| Warstwa danych e-commerce | kod sklepu | z event_id dla każdego zdarzenia |
| Konfiguracja zgód | CMP i Consent Mode | stan zgody w parametrze gcs |
Subdomena musi należeć do tej samej domeny co sklep. Tylko wtedy przeglądarka dołączy do żądania pliki cookie _fbp i _fbc, zapisane przez piksel na poziomie domeny głównej, a tag w kontenerze serwerowym będzie mógł je odczytać.
Konfiguracja kontenera web: zdarzenia, event_id i dane klienta
Kontener web ma dwa zadania: wysłać do serwera komplet danych o zdarzeniu i zadbać, by piksel używał tego samego identyfikatora. W tagu Google ustaw parametr server_container_url na adres Twojej subdomeny, np. https://sgtm.twojsklep.pl, a następnie skonfiguruj tagi zdarzeń GA4.
Tag: GA4 – purchase
Typ: Zdarzenie Google Analytics
Identyfikator pomiaru: G-XXXXXXX
Nazwa zdarzenia: purchase
Parametry zdarzenia:
event_id {{DL - event_id}}
value {{DL - ecommerce.value}}
currency {{DL - ecommerce.currency}}
items {{DL - ecommerce.items}}
Reguła: CE - purchase
Kontrole zgody: wbudowane
Tag: Meta Pixel – Purchase
Typ: szablon piksela Meta lub Custom HTML
eventID: {{DL - event_id}}
Kontrole zgody: wymagaj dodatkowej zgody: ad_storage
Reguła: CE - purchase
Ta sama zmienna {{DL - event_id}} w obu tagach to warunek poprawnej deduplikacji. Jak generować identyfikatory dla zdarzeń bez numeru z backendu, pokazujemy w artykule o deduplikacji zdarzeń piksela i Conversions API.
Dane klienta, takie jak e-mail i telefon z formularza zamówienia, możesz przekazać w obiekcie danych użytkownika w tagu Google albo jako parametry zdarzenia. Przed konfiguracją tagu Meta otwórz podgląd kontenera serwerowego i sprawdź, pod jakimi kluczami pojawiają się w danych zdarzenia. Od kompletności tych danych zależy jakość dopasowania, którą opisujemy w poradniku o Event Match Quality.
Konfiguracja kontenera serwerowego krok po kroku
W kontenerze serwerowym korzystasz z oficjalnego szablonu tagu Conversions API publikowanego przez Meta w galerii szablonów. Wszystkie kroki wykonujesz w jednym obszarze roboczym, a publikujesz dopiero po testach.
- Sprawdź klienta GA4. Domyślny klient GA4 powinien przejmować żądania kierowane do ścieżki
/g/collect. - Dodaj szablon. W sekcji szablonów tagów wyszukaj w galerii szablon Conversions API od Meta i dodaj go do obszaru roboczego.
- Utwórz zmienne. Zapisz identyfikator piksela i token dostępu jako zmienne typu stała, a parametr
gcsjako zmienną typu Query Parameter. - Skonfiguruj tag. Podaj identyfikator piksela, token dostępu, kod zdarzeń testowych i źródło akcji
website. - Utwórz regułę. Warunki: nazwa klienta równa się GA4, nazwa zdarzenia pasuje do wyrażenia
^(page_view|view_item|add_to_cart|begin_checkout|purchase|generate_lead)$, agcspasuje do^G11. - Sprawdź mapowanie nazw. Szablon zamienia standardowe nazwy zdarzeń GA4 na zdarzenia standardowe Meta. Dla zdarzeń o własnych nazwach sprawdź w dokumentacji szablonu, jak ustawić nazwę zdarzenia Meta.
- Uruchom podgląd. Złóż testowe zamówienie i w szczegółach tagu sprawdź wychodzące żądanie HTTP do Meta oraz kod odpowiedzi.
- Sprawdź narzędzie testowania zdarzeń. Zdarzenie serwerowe powinno pojawić się obok zdarzenia z przeglądarki z tym samym identyfikatorem.
- Usuń kod testowy i opublikuj najpierw kontener serwerowy, potem web.
Typowe mapowanie zdarzeń wygląda tak:
| Zdarzenie GA4 | Zdarzenie Meta | Najważniejsze dane |
|---|---|---|
| page_view | PageView | adres strony, fbp, fbc |
| view_item | ViewContent | content_ids, value, currency |
| add_to_cart | AddToCart | content_ids, value, currency |
| begin_checkout | InitiateCheckout | value, currency, num_items |
| add_payment_info | AddPaymentInfo | value, currency |
| purchase | Purchase | value, currency, contents, event_id |
| generate_lead | Lead | event_id, dane kontaktowe |
| sign_up | CompleteRegistration | event_id, e-mail |
Sklepy, które chcą optymalizować kampanie pod zysk, a nie pod przychód, mogą w kontenerze serwerowym podmienić lub uzupełnić wartość zdarzenia o marżę z własnej bazy. Taki scenariusz opisujemy w artykule o wzbogacaniu zdarzeń po stronie serwera.
event_id, fbp i fbc w kontenerze serwerowym
Plik _fbp zapisuje piksel przy pierwszej wizycie i zawiera identyfikator przeglądarki. Plik _fbc powstaje, gdy użytkownik trafia na stronę z reklamy z parametrem fbclid w adresie. Oba trafiają do tagu w kontenerze serwerowym, o ile żądanie idzie na subdomenę w tej samej domenie.
Jeśli pliku _fbc brakuje, a adres strony docelowej zawiera fbclid, wartość fbc można zbudować samodzielnie. Format to fb.1., znacznik czasu w milisekundach i identyfikator kliknięcia:
// Wywołuj tylko na stronie docelowej z fbclid, a wynik zapisz i używaj dalej
function zbudujFbc(adres) {
var fbclid = new URL(adres).searchParams.get('fbclid');
return fbclid ? 'fb.1.' + Date.now() + '.' + fbclid : undefined;
}
Nie generuj fbc od nowa na każdej podstronie, bo zmieniający się znacznik czasu zaburza dopasowanie. Część przeglądarek ogranicza ważność plików cookie zapisywanych przez skrypty, a Safari 26 w określonych kontekstach usuwa z adresów znane parametry śledzące, w tym fbclid. Co to oznacza dla pomiaru, wyjaśniamy w tekście o Safari 26 i identyfikatorach kliknięć.
Zwróć też uwagę na adres IP. Jeśli kontener serwerowy działa za load balancerem lub CDN, upewnij się, że klient GA4 odczytuje adres użytkownika, a nie adres pośrednika. Błędny IP obniża jakość dopasowania wszystkich zdarzeń jednocześnie.
Zgody i dane osobowe w kontenerze serwerowym
Tag Meta w kontenerze serwerowym nie widzi banera, więc decyzję użytkownika musi dostać razem z żądaniem. Najprostszy sposób to warunek w regule oparty na parametrze gcs: wartość zaczynająca się od G11 oznacza zgodę na ad_storage. Jak sprawdzić, że parametr dociera poprawnie, pokazujemy w poradniku o teście Consent Mode z parametrami gcs i gcd, a pełną konfigurację zgód w kontenerze web – w checkliście Consent Mode v2.
Dane osobowe w kontenerze serwerowym wymagają dodatkowej dyscypliny:
- e-mail i telefon wysyłaj do Meta wyłącznie w postaci zahaszowanej SHA-256 po normalizacji; sprawdź w opisie wersji szablonu, czy haszuje dane automatycznie,
- nie zapisuj pełnych danych zdarzeń w logach serwera, bo logi zawierają wtedy dane osobowe klientów,
- przekazuj tylko te parametry, których Meta potrzebuje do pomiaru i dopasowania,
- opisz przekazywanie danych do Meta w polityce prywatności i skonsultuj podstawę prawną z prawnikiem.
Testowanie, monitoring i najczęstsze błędy
Po publikacji obserwuj zbiór danych w Menedżerze zdarzeń przez co najmniej tydzień. Przy kluczowych zdarzeniach powinny być widoczne oba źródła, przeglądarka i serwer, a karta diagnostyki nie powinna zgłaszać problemów z deduplikacją ani z parametrami.
Najczęstsze błędy w tej konfiguracji to:
- nieważny token dostępu – tag zwraca błąd autoryzacji, a w Menedżerze zdarzeń nie ma zdarzeń serwerowych,
- kod testowy zostawiony w produkcji – narzędzie testowe zapełnia się ruchem produkcyjnym i kolejne testy stają się nieczytelne,
- subdomena w innej domenie – brak
fbpifbcw zdarzeniach serwerowych, - podwójna integracja – wtyczka sklepu i kontener serwerowy wysyłają Conversions API równolegle,
- brak warunku zgody – zdarzenia serwerowe wysyłane także dla użytkowników, którzy odmówili.
Jeśli prowadzisz kampanie leadowe, ten sam kontener możesz wykorzystać do wysyłania zdarzeń z CRM o zakwalifikowanych leadach; szczegóły znajdziesz w tekście o kampaniach leadowych w Meta Ads. Kompletne i wiarygodne sygnały konwersji mają też znaczenie dla systemu dobierania reklam, co opisujemy w artykule o Meta Ads po Andromedzie. Ten sam kontener obsłuży również TikTok Events API, a pozostałe poradniki o pikselach i API konwersji znajdziesz w podtemacie Meta Pixel i Conversions API. Ustawienia kontenerów opisujemy na stronie Google Tag Manager.
Najczęściej zadawane pytania
Czy po wdrożeniu Conversions API przez GTM mogę wyłączyć piksel Meta?
Meta zaleca korzystanie z obu kanałów jednocześnie. Piksel rejestruje interakcje w przeglądarce i zapisuje plik _fbp, który poprawia dopasowanie zdarzeń serwerowych, a Conversions API uzupełnia zdarzenia utracone przez blokady. Wyłączenie piksela zmniejsza ilość danych i utrudnia deduplikację, dlatego w sklepie internetowym zwykle zostawia się oba.
Gdzie znaleźć token dostępu do Conversions API?
Token generujesz w Menedżerze zdarzeń, w ustawieniach zbioru danych, w sekcji Conversions API. Zapisz go jako zmienną typu stała w kontenerze serwerowym i nie umieszczaj go nigdy w kontenerze web ani w kodzie strony, bo byłby widoczny dla każdego użytkownika. Po zmianie właściciela zbioru danych wygeneruj nowy token.
Czy kontener serwerowy musi działać na subdomenie sklepu?
Technicznie może działać pod domyślnym adresem dostawcy hostingu, ale wtedy przeglądarka nie dołączy do żądań plików cookie _fbp i _fbc zapisanych w domenie sklepu. Zdarzenia serwerowe będą miały słabsze dopasowanie. Dlatego zalecaną konfiguracją jest subdomena w tej samej domenie co sklep, np. sgtm.twojsklep.pl.
Jak sprawdzić, czy tag Meta w kontenerze serwerowym wysyła zdarzenia?
W podglądzie kontenera serwerowego wybierz zdarzenie i otwórz szczegóły tagu Meta. W sekcji wychodzących żądań HTTP zobaczysz adres, treść i kod odpowiedzi. Równolegle otwórz narzędzie testowania zdarzeń w Menedżerze zdarzeń z kodem testowym – zdarzenie serwerowe powinno pojawić się obok zdarzenia z przeglądarki.
Czy Conversions API przez GTM działa bez zgody użytkownika?
Technicznie tak, bo kontener serwerowy nie zna decyzji z banera, jeśli jej nie przekażesz. Dlatego w regule tagu Meta dodaj warunek oparty na parametrze gcs, który dopuszcza wysyłkę tylko przy zgodzie na ad_storage. Conversions API nie jest sposobem na obejście odmowy, a podstawę prawną przetwarzania skonsultuj z prawnikiem.