Meta Pixel pozwala śledzić działania użytkowników na Landing Page wydarzenia w Meeting Application i przekazywać do Meta informacje o kolejnych etapach ścieżki zakupowej — od wejścia na stronę, przez dodanie biletu do koszyka, aż po zakup.
Meta Pixel możesz podłączyć do Landing Page wydarzenia na dwa sposoby:
Ścieżka A — Meta Pixel wbudowany w Landing Page — integrację konfigurujemy po stronie Meeting Application.
Ścieżka B — Meta Pixel przez Twój Google Tag Manager — konfigurujesz Pixel samodzielnie w swoim kontenerze GTM.
Ścieżka A — Pixel wbudowany | Ścieżka B — Pixel przez Twój GTM | |
Kto konfiguruje Meta Pixel? | Meeting Application | Ty lub specjalista / agencja zarządzająca Twoim GTM |
Gdzie działa konfiguracja? | Bezpośrednio w kodzie Landing Page | W Twoim kontenerze Google Tag Manager |
Pixel ID | Przekazujesz go nam | Używasz go wyłącznie we własnym GTM — nie przekazujesz go Meeting Application |
Późniejsze zmiany | Wymagają zmiany po stronie Meeting Application | Możesz wprowadzać je samodzielnie w GTM |
Zakres podstawowych zdarzeń | Pełny funnel zakupowy + | Pełny funnel zakupowy |
eventID przy Purchase | Obsługiwany automatycznie | Konfigurujesz zgodnie z instrukcją poniżej |
Jeżeli nie zarządzasz samodzielnie Google Tag Managerem, prostszym wariantem jest Ścieżka A.
Jeżeli masz własnego specjalistę GTM lub agencję i chcesz samodzielnie zarządzać konfiguracją Meta Pixel, wybierz Ścieżkę B.
Oba warianty korzystają z tych samych podstawowych elementów.
Utwórz Pixel w swoim Meta Events Managerze:
Połącz źródła danych → Internet
W ustawieniach zestawu danych znajdziesz Pixel ID — ciąg 15–16 cyfr.
Meta używa obecnie również określenia zestaw danych — dataset. Dataset ID i Pixel ID oznaczają tutaj ten sam identyfikator.
Pixel ID będzie potrzebny w dalszej konfiguracji:
w Ścieżce A przekażesz go Meeting Application,
w Ścieżce B wykorzystasz go samodzielnie podczas konfiguracji tagów w swoim GTM.
Cookiebot jest wymagany w obu ścieżkach.
Landing Page uruchamia skrypty marketingowe zgodnie ze zgodą udzieloną przez użytkownika. Bez poprawnej konfiguracji Cookiebot Meta Pixel nie będzie działał zgodnie z założonym mechanizmem zgód.
Przygotuj:
konto i konfigurację Cookiebot,
identyfikator Cookiebot,
domenę Landing Page wydarzenia dodaną w swoim panelu Cookiebot.
📌 Zanim przejdziesz dalej
Jeżeli nie masz jeszcze skonfigurowanego Cookiebot i Google Tag Managera dla Landing Page wydarzenia, zacznij od tej konfiguracji. Szczegółową instrukcję znajdziesz w artykule: Analiza sprzedaży poprzez Google Analytics — Google Tag Manager i Cookiebot
Landing Page wydarzenia musi mieć podłączony Twój kontener Google Tag Manager.
Jego identyfikator ma format:
GTM-XXXXXXX
Przekaż nam:
ID kontenera GTM,
identyfikator Cookiebot.
Po naszej stronie podłączymy oba identyfikatory do konfiguracji Twojego wydarzenia.
Ta konfiguracja pozwala Landing Page załadować Twój kontener GTM oraz przekazywać do dataLayer zdarzenia i sygnały zgody.
W Meta Events Managerze, w ustawieniach Pixela, rekomendujemy wyłączenie:
„Śledź zdarzenia automatycznie bez kodu”
Track events automatically without code
Konfiguracje opisane w tym artykule korzystają z konkretnie zdefiniowanych zdarzeń.
Wyłączenie automatyki pomaga uniknąć dodatkowych zdarzeń generowanych samodzielnie przez Meta i utrzymać czytelne dane.
Nie musisz samodzielnie mapować zdarzeń Meta w Google Tag Managerze.
Po przygotowaniu wspólnej konfiguracji przekaż nam:
Pixel ID,
potwierdzenie, że Twój kontener GTM nie uruchamia tagów Meta Pixel dla tego Landing Page.
⚠ Jeżeli masz już Meta Pixel w swoim GTM
Zanim uruchomimy integrację wbudowaną, wyłącz tagi Meta Pixel działające w Twoim GTM dla Landing Page wydarzenia.
Jeżeli oba źródła będą aktywne jednocześnie, zdarzenia mogą być liczone podwójnie.
Po otrzymaniu potrzebnych informacji konfigurujemy Meta Pixel dla Twojego wydarzenia.
Późniejsze zmiany w tej integracji wymagają zmiany po stronie Meeting Application.
Zdarzenie Meta | Kiedy jest wysyłane? | Najważniejsze parametry |
| Wejście na Landing Page i każda zmiana podstrony | — |
| Tuż przed dodaniem pozycji do koszyka |
|
| Dodanie biletu, dodatku lub warsztatu do koszyka |
|
| Rozpoczęcie płatności |
|
| Wybór metody płatności |
|
| Potwierdzona płatność | wartość brutto, waluta, |
| Darmowe dołączenie do wydarzenia bez koszyka |
|
Pixel:
nie wysyła zdarzeń przed uzyskaniem zgody marketingowej,
nie dubluje PageView podczas poruszania się po Landing Page,
ma wyłączone automatyczne zdarzenia Meta,
może obsługiwać więcej niż jeden Pixel, np. Pixel organizatora i agencji,
przekazuje eventID przy zakupie, co przygotowuje zdarzenie do ewentualnej przyszłej deduplikacji z Conversions API.
Jeżeli uczestnik zdobywa darmowy bilet przez koszyk, przechodzi przez standardowy proces zakupowy i kończy go zdarzeniem: Purchase z wartością: 0
CompleteRegistration dotyczy darmowego dołączenia do wydarzenia odbywającego się bez koszyka.
Landing Page Meeting Application dostarcza gotowy dataLayer ze zdarzeniami e-commerce i sygnałami zgody.
Twoim zadaniem jest zmapowanie tych zdarzeń na odpowiednie zdarzenia Meta Pixel.
Przekaż nam:
ID kontenera GTM w formacie GTM-XXXXXXX,
identyfikator Cookiebot.
Upewnij się także, że domena Landing Page wydarzenia została dodana w Twoim panelu Cookiebot.
W tej ścieżce nie przekazujesz nam Pixel ID. Używasz go wyłącznie we własnych tagach Meta Pixel konfigurowanych w GTM.
Zdarzenia wykorzystują nazewnictwo GA4 i strukturę z obiektem:
ecommercePrzed każdym zdarzeniem e-commerce wysyłane jest także:
{ ecommerce: null }Dzięki temu wcześniejsze dane e-commerce są czyszczone przed kolejnym zdarzeniem.
Zdarzenie | Parametry w ecommerce |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Każdy element tablicy items zawiera:
item_id,
item_name,
item_category,
price,
quantity,
oraz opcjonalnie:
discount,
coupon.
ecommerce.value przekazywane przez Landing Page jest wartością netto. Podatek znajduje się osobno w: ecommerce.tax.Purchase Meta wymaga wartości brutto. Dlatego podczas konfiguracji utworzysz osobną zmienną, która zsumuje: value + taxPodstawowe mapowanie wygląda następująco:
dataLayer GA4 | Meta Pixel | Uwagi |
|
| Landing Page nie ma osobnej strony produktu. |
|
|
|
|
| — |
|
| — |
|
| Użyj wartości brutto, waluty, |
W Google Tag Manager przejdź do:
Zmienne → Zmienne zdefiniowane przez użytkownika → Nowa → Zmienna warstwy danych
Utwórz następujące zmienne:
DLV - ecommerce.value
DLV - ecommerce.tax
DLV - ecommerce.currency
DLV - ecommerce.transaction_id
DLV - ecommerce.items
DLV - consent.ad_storage
Dla każdej wybierz: Wersja warstwy danych → Wersja 2


Następnie utwórz dwie zmienne typu: Niestandardowy kod JavaScript — Custom JavaScript
function () {
var net = Number({{DLV - ecommerce.value}}) || 0;
var tax = Number({{DLV - ecommerce.tax}}) || 0;
return Math.round((net + tax) * 100) / 100;
}
Ta zmienna oblicza wartość brutto: wartość netto + podatek
function () {
var items = {{DLV - ecommerce.items}} || [];
return items.map(function (item) {
return {
id: String(item.item_id),
quantity: item.quantity || 1,
item_price: item.price
};
});
}
Ta zmienna mapuje tablicę items z Landing Page na format contents wymagany przez Meta.

Utwórz triggery typu: Zdarzenie niestandardowe — Custom Event
Nazwa zdarzenia musi być dokładnie taka sama jak nazwa wysyłana przez Landing Page do dataLayer.
Utwórz:
CE - view_item
CE - add_to_cart
CE - begin_checkout
CE - add_payment_info
CE - purchase
Dodatkowo utwórz:
CE - update_consent (marketing granted)
Ustaw:
nazwa zdarzenia: update_consent,
uruchamianie: Niektóre zdarzenia niestandardowe,
warunek: DLV - consent.ad_storage równa się granted
Landing Page Meeting Application działa jako aplikacja SPA — adres może zmieniać się bez pełnego przeładowania strony.
Dlatego dla kolejnych PageView utwórz trigger typu: Zmiana w historii — History Change ((History Change; HC - all history changes, bez warunków), bez dodatkowych warunków.

Utwórz tag typu: Niestandardowy kod HTML — Custom HTML
Jako trigger ustaw: CE - update_consent (marketing granted)
Następnie przejdź do: Ustawienia zaawansowane → Opcje uruchamiania tagów i wybierz: Raz na stronę
Wklej poniższy kod:
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq.disablePushState = true;
fbq('set', 'autoConfig', false, 'TWOJ_PIXEL_ID');
fbq('init', 'TWOJ_PIXEL_ID');
fbq('trackSingle', 'TWOJ_PIXEL_ID', 'PageView');
window.__maLastPvPath = location.pathname;
</script>

Podmień: TWOJ_PIXEL_ID na właściwy Pixel ID.
autoConfig=false wyłącza automatyczne zdarzenia Meta.
disablePushState = true wyłącza automatyczne PageView wysyłane przez fbevents.js podczas zmian adresu w aplikacji SPA.
PageView podczas nawigacji skonfigurujesz samodzielnie w kolejnym kroku.
Co dzieje się przed zgodą marketingową?
Bazowy tag uruchamia się dopiero po otrzymaniu sygnału:
consent.ad_storage = grantedZdarzenia występujące wcześniej — również pierwszy
PageViewprzed zaakceptowaniem Cookiebot — nie zostaną wysłane do Meta.
Każdy z poniższych tagów utwórz jako: Custom HTML
W kodzie podmień: TWOJ_PIXEL_ID na właściwy Pixel ID.
Trigger: HC - all history changes
<script>
if (window.fbq && window.__maLastPvPath !== location.pathname) {
window.__maLastPvPath = location.pathname;
fbq('trackSingle', 'TWOJ_PIXEL_ID', 'PageView');
}
</script>
Warunek porównujący location.pathname zabezpiecza przed wysłaniem dwóch PageView, jeżeli Landing Page zmieni historię w więcej niż jednym kroku.
Trigger: CE - view_item
<script>
if (window.fbq) {
fbq('trackSingle', 'TWOJ_PIXEL_ID', 'ViewContent', {
contents: {{CJS - Meta contents}},
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: '{{DLV - ecommerce.currency}}'
});
}
</script>
Trigger:
CE - add_to_cart
<script>
if (window.fbq) {
fbq('trackSingle', 'TWOJ_PIXEL_ID', 'AddToCart', {
contents: {{CJS - Meta contents}},
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: '{{DLV - ecommerce.currency}}'
});
}
</script>
Trigger: CE - begin_checkout
<script>
if (window.fbq) {
fbq('trackSingle', 'TWOJ_PIXEL_ID', 'InitiateCheckout', {
contents: {{CJS - Meta contents}},
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: '{{DLV - ecommerce.currency}}',
num_items: {{CJS - Meta contents}}.length
});
}
</script>
Trigger: CE - add_payment_info
<script>
if (window.fbq) {
fbq('trackSingle', 'TWOJ_PIXEL_ID', 'AddPaymentInfo', {
contents: {{CJS - Meta contents}},
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: '{{DLV - ecommerce.currency}}'
});
}
</script>
Trigger: CE - purchase
<script>
if (window.fbq) {
fbq('trackSingle', 'TWOJ_PIXEL_ID', 'Purchase', {
value: {{CJS - Meta value brutto}},
currency: '{{DLV - ecommerce.currency}}',
contents: {{CJS - Meta contents}},
content_type: 'product',
num_items: {{CJS - Meta contents}}.length
}, {
eventID: String({{DLV - ecommerce.transaction_id}})
});
}
</script>
W tym zdarzeniu:
value jest wartością brutto,
currency określa walutę,
contents zawiera pozycje z koszyka,
eventID wykorzystuje transaction_id.
Ten sam eventID może zostać wykorzystany do deduplikacji, jeżeli w przyszłości wdrożysz również server-side Conversions API.

⚠ Nie używaj sekwencjonowania tagów
Nie ustawiaj bazowego tagu Meta Pixel jako tagu rozpoczynającego dla kolejnych tagów zdarzeń.
Bazowy tag działa z ustawieniem „Raz na stronę”. Przy kolejnej próbie uruchomienia GTM może zablokować jego ponowne wykonanie, a w efekcie także tag zdarzenia.
W kodach powyżej wykorzystywany jest zamiast tego warunek:
if (window.fbq)Jeżeli użytkownik nie udzielił zgody i bazowy Pixel nie został uruchomiony, kolejne zdarzenia nie zostaną wysłane.
⚠ Używaj
trackSingle, a nietrackDla
PageViewna Landing Page SPA używaj:
fbq('trackSingle', ...)Zwykłe
fbq('track', 'PageView')może zostać zdeduplikowane przezfbevents.js, przez co kolejne PageView wywoływane triggerem History Change nie zostaną poprawnie wysłane.
trackSingledodatkowo wskazuje konkretny Pixel ID.
Zamiast tagów Custom HTML możesz wykorzystać szablon: Facebook Pixel z Community Template Gallery, wydawca: facebookincubator
Szablon obsługuje:
bazowy kod,
standardowe zdarzenia,
Object Properties,
Event ID.
Mapowanie parametrów pozostaje takie samo jak w konfiguracji opisanej wcześniej.
Pamiętaj
Szablon nie ustawia
disablePushState.Jeżeli wybierzesz ten wariant, podczas testów zweryfikuj szczególnie, czy podczas nawigacji po Landing Page nie pojawiają się podwójne zdarzenia
PageView.
Podstawowa konfiguracja obejmuje zdarzenia, które mają bezpośrednie odpowiedniki wśród standardowych zdarzeń Meta.
Pozostałe zdarzenia z dataLayer możesz wykorzystać jako custom events.
Zdarzenie dataLayer | Standardowe zdarzenie Meta | Możliwe mapowanie |
| brak |
|
| brak |
|
| brak |
|
| brak | pomiń - w Meeting Appie jest to techniczny krok “Email”, nie realna wysyłka |
| brak |
|
Custom eventy możesz wysyłać przez: fbq('trackSingleCustom', ...).
Nie zasilają standardowej optymalizacji kampanii tak jak Purchase czy AddToCart — Meta nie wie, co znaczą.
Służą do budowy custom audiences — np. remarketing do osób, które doszły do kroku 2 checkoutu (CheckoutProgress z checkout_step ≥ 2), ale nie mają Purchase. To jest ich główna wartość.
Można na ich bazie zdefiniować custom conversions w Events Managerze i dopiero na takiej konwersji optymalizować kampanię.
Ograniczenia formatu: nazwa do 50 znaków, klucze parametrów bez spacji.
Trigger: CE - remove_from_cart
<script>
if (window.fbq) {
fbq('trackSingleCustom', 'TWOJ_PIXEL_ID', 'RemoveFromCart', {
contents: {{CJS - Meta contents}},
content_type: 'product',
value: {{DLV - ecommerce.value}},
currency: '{{DLV - ecommerce.currency}}'
});
}
</script>
Najpierw utwórz dodatkową zmienną Data Layer Variable: DLV - checkout_step
Klucz: checkout_step
Następnie użyj:
<script>
if (window.fbq) {
fbq('trackSingleCustom', 'TWOJ_PIXEL_ID', 'CheckoutProgress', {
checkout_step: {{DLV - checkout_step}}
});
}
</script>
Tak samo jak w podstawowych zdarzeniach korzystaj z: if (window.fbq) zamiast sekwencjonowania tagów.
Jeżeli uczestnik zdobywa darmowy bilet przez koszyk na Landing Page Meeting Application, nadal przechodzi przez standardowy flow:
koszyk → checkout → finalizacja
Dlatego rejestracja kończy się zdarzeniem: Purchase z: value: 0
Nie musisz tworzyć dodatkowego zdarzenia rejestracyjnego dla takiego procesu.

Zanim uruchomisz kampanię, wykonaj pełny test.
Jeżeli korzystasz ze Ścieżki B, otwórz jednocześnie:
GTM Preview,
Meta Events Manager → Test Events.
Następnie przejdź przez proces użytkownika na Landing Page.
Co robisz? | Co powinno się wydarzyć? |
Otwierasz Landing Page przed zaakceptowaniem Cookiebot | Brak requestów Meta do |
Akceptujesz zgodę marketingową | Pojawia się |
Przechodzisz między podstronami | Dokładnie jeden |
Dodajesz bilet do koszyka |
|
Rozpoczynasz checkout |
|
Wybierasz metodę płatności |
|
Finalizujesz zakup |
|
Odrzucasz zgodę marketingową | Brak ruchu do |
Przy zdarzeniach zakupowych sprawdź także parametry:
value,
currency,
contents.
Przy Purchase sprawdź dodatkowo:
wartość brutto,
Event ID.
Najpierw sprawdź, czy dla Landing Page nie działają jednocześnie:
wbudowany Meta Pixel ze Ścieżki A,
tagi Meta Pixel w Twoim GTM.
Jedno wydarzenie powinno korzystać z jednego źródła zdarzeń Meta.
Nie używaj bezpośrednio: ecommerce.value jako wartości Purchase.
ecommerce.value to wartość netto.
Dla Purchase korzystaj z: CJS - Meta value brutto czyli: ecommerce.value + ecommerce.tax
Sprawdź, czy w bazowym kodzie znajduje się: fbq.disablePushState = true
Bez tego fbevents.js może samodzielnie wysyłać PageView podczas zmiany adresu, równolegle z Twoim tagiem uruchamianym przez History Change.
contents nie zawiera quantityMeta wymaga id i quantity dla każdej pozycji.
Zmienna: CJS - Meta contents zapewnia ich prawidłowe mapowanie.
currency powinno zawierać kod waluty, np.: PLN a nie symbol: zł
Landing Page przekazuje kod waluty w odpowiednim formacie.
Upewnij się, że:
korzystasz tylko z jednej ścieżki Meta Pixel,
Cookiebot jest poprawnie skonfigurowany,
domena Landing Page została dodana w Cookiebot,
właściwy kontener GTM jest podłączony do wydarzenia,
automatyczne zdarzenia Meta są wyłączone,
wykonałeś pełny test ścieżki użytkownika,
Purchase przekazuje prawidłową wartość, walutę i Event ID.
Jeżeli nie masz pewności, która konfiguracja Meta Pixel jest aktywna dla Twojego wydarzenia, napisz do nas przed publikacją tagów lub uruchomieniem kampanii.
Udanego wydarzenia z Meeting Application!