Spis treści
- Jak działa pomiar konwersji z reklam w ChatGPT
- Instalacja OpenAI Pixel krok po kroku
- Zdarzenia standardowe OpenAI Pixel i mapowanie z GA4
- Conversions API: wysyłka zdarzeń z serwera
- Deduplikacja OpenAI Pixel i Conversions API
- Zgody i prywatność przy OpenAI Pixel w Polsce
- Jak sprawdzić wdrożenie i połączyć dane z GA4
- Najczęściej zadawane pytania
OpenAI Pixel to skrypt JavaScript od OpenAI, który mierzy na stronie reklamodawcy konwersje z reklam wyświetlanych w ChatGPT. Uzupełnia go Conversions API, czyli interfejs do wysyłania tych samych zdarzeń z serwera. Oba kanały łączy wspólny identyfikator zdarzenia, a atrybucję – parametr oppref, który trafia do adresu strony po kliknięciu reklamy. Od 31 sierpnia 2026 r. samoobsługowy OpenAI Ads Manager działa w 31 krajach Europy, w tym w Polsce, więc polskie sklepy i firmy usługowe mogą optymalizować kampanie pod konwersje. Poniżej opisujemy instalację piksela, wysyłkę zdarzeń z serwera, deduplikację i zgody (stan na październik 2026 r.).
Najważniejsze w skrócie
- OpenAI Pixel inicjujesz wywołaniem
oaiq('init', { pixelId }), a zdarzenia wysyłasz przezoaiq('measure', nazwa, dane, opcje), np. order_created dla zamówienia. - Kwoty podajesz w polu amount jako liczbę całkowitą w najmniejszej jednostce waluty: 259,99 zł to 25999 z currency „PLN”.
- Deduplikacja działa po identyfikatorze piksela, nazwie zdarzenia i identyfikatorze: event_id w pikselu musi być równy polu id w Conversions API.
- Piksel domyślnie zakłada zgodę, dlatego w Polsce wywołaj
oaiq('consent', false)przed init i zmieniaj ją na true dopiero po akceptacji w banerze. - Conversions API przyjmuje do 1000 zdarzeń w jednym żądaniu, ze znacznikiem czasu z ostatnich 7 dni, i ma tryb validate_only do testów bez zapisu.
Jak działa pomiar konwersji z reklam w ChatGPT
Reklamy w ChatGPT to oznaczone, sponsorowane boksy pod odpowiedzią, widoczne dla użytkowników planów Free i Go. Treść rozmów nie jest udostępniana reklamodawcom, więc pomiar efektów opiera się wyłącznie na tym, co dzieje się na Twojej stronie po kliknięciu. Jak skonfigurować samą kampanię, opisujemy w poradniku o reklamie w ChatGPT w Polsce.
| Element | Do czego służy | Czas życia |
|---|---|---|
Parametr oppref w adresie |
identyfikator kliknięcia reklamy, podstawa atrybucji | przekazywany przy kliknięciu |
Plik cookie __oppref |
przechowuje oppref po wejściu na stronę |
30 dni, odnawiane przy nowym kliknięciu |
Plik cookie __obref |
losowy identyfikator przeglądarki | 365 dni, bez przedłużania |
| OpenAI Pixel | zdarzenia z przeglądarki | – |
| Conversions API | zdarzenia z serwera, także offline i z aplikacji | zdarzenia z ostatnich 7 dni |
Atrybucja po kliknięciu korzysta z okna ustawionego w konfiguracji konwersji. Konwersje po wyświetleniu OpenAI liczy w stałym, jednodniowym oknie i raportuje osobno, poza główną kolumną konwersji. Przeglądarki z ograniczeniami prywatności albo czyszczenie plików cookie mogą skracać faktyczny czas ich życia.
Parametr oppref musi przetrwać drogę do strony docelowej. Jeśli link prowadzi przez przekierowanie, które gubi parametry adresu, piksel nie zapisze identyfikatora kliknięcia i konwersja nie zostanie przypisana kampanii.
Instalacja OpenAI Pixel krok po kroku
Fragment kodu bazowego pobierasz z karty konwersji w OpenAI Ads Manager. Skrypt tworzy kolejkę oaiq, ładuje asynchronicznie bibliotekę OpenAI i obsługuje wywołania zapisane przed jej załadowaniem.
- W OpenAI Ads Manager utwórz piksel w karcie konwersji i skopiuj jego identyfikator oraz kod bazowy.
- Umieść kod bazowy w sekcji
<head>na wszystkich stronach albo w tagu Custom HTML w GTM. - Przed inicjalizacją ustaw brak zgody, a po akceptacji marketingu w banerze ją włącz.
- Wywołaj
initz identyfikatorem piksela; na czas testów dodajdebug: true, żeby widzieć działanie w konsoli. - Dodaj wywołania
measuredla kluczowych zdarzeń, zawsze z własnymevent_id. - Jeśli strona ma politykę Content Security Policy, dopisz domeny OpenAI podane w dokumentacji do dyrektyw
script-src,connect-srciimg-src, korzystając z nonce lub hasha zamiast'unsafe-inline'. - Sprawdź w konsoli i w karcie Network, czy zdarzenia wychodzą dopiero po zgodzie.
Wywołania po załadowaniu kodu bazowego wyglądają tak:
// Brak zgody do czasu decyzji w banerze
oaiq('consent', false);
oaiq('init', { pixelId: 'TWOJ-PIXEL-ID', debug: true });
// Po akceptacji kategorii marketingowej (np. na zdarzeniu z CMP w GTM)
oaiq('consent', true);
// Zamówienie na stronie podziękowania
oaiq('measure', 'order_created', {
type: 'contents',
amount: 25999,
currency: 'PLN',
contents: [
{ id: 'SKU-001', name: 'Buty do biegania', content_type: 'product', quantity: 1, amount: 25999 }
]
}, { event_id: 'ord-2026-104578' });
W wywołaniu init możesz przekazać obiekt user z zahaszowanymi SHA-256 polami email_sha256, phone_number_sha256, external_id_sha256, first_name_sha256 i last_name_sha256 oraz jawnymi polami lokalizacji. Rób to tylko wtedy, gdy użytkownik zgodził się na marketing.
Zdarzenia standardowe OpenAI Pixel i mapowanie z GA4
OpenAI ma własny zestaw nazw zdarzeń, zapisywanych małymi literami z podkreśleniem. Najprościej uruchamiać je na tych samych zdarzeniach warstwy danych, z których korzysta GA4.
| Zdarzenie GA4 | Zdarzenie OpenAI | Typ danych (type) |
|---|---|---|
| page_view | page_viewed | według dokumentacji |
| view_item | contents_viewed | contents |
| add_to_cart | items_added | contents |
| begin_checkout | checkout_started | contents |
| purchase | order_created | contents |
| generate_lead | lead_created | customer_action |
| sign_up | registration_completed | customer_action |
| umówienie wizyty | appointment_scheduled | customer_action |
| zakup subskrypcji | subscription_created | plan_enrollment |
| rozpoczęcie okresu próbnego | trial_started | plan_enrollment |
Każda nazwa zdarzenia odpowiada jednemu kształtowi danych, a walidacja odrzuca niezgodne połączenia, więc przypisanie typu potwierdź w dokumentacji przed wdrożeniem. Zdarzenia własne wysyłasz z nazwą custom, typem custom i polem custom_event_name w opcjach. Zdarzenia app_installed i app_opened obsługuje wyłącznie Conversions API.
Najczęstszy błąd na tym etapie to kwota. GA4 i Meta przyjmują wartość dziesiętną (value: 259.99), a OpenAI – liczbę całkowitą w groszach (amount: 25999). W GTM przelicz ją zmienną JavaScript niestandardową: Math.round({{DL - ecommerce.value}} * 100).
Conversions API: wysyłka zdarzeń z serwera
Conversions API przyjmuje zdarzenia metodą POST na endpoint zdarzeń OpenAI (ścieżka /v1/events z parametrem pid równym identyfikatorowi piksela). Uwierzytelnienie odbywa się nagłówkiem Authorization: Bearer z kluczem Conversions API, który tworzysz w karcie konwersji w Ads Manager. Klucz przechowuj wyłącznie na serwerze.
Najważniejsze zasady:
- Wymagane pola zdarzenia:
id,type(nazwa zdarzenia),timestamp_ms,action_sourceidata; dlaaction_source: "web"takżesource_url. - Czas:
timestamp_msw milisekundach, z ostatnich 7 dni i najwyżej 10 minut w przyszłości. - Paczki: do 1000 zdarzeń w żądaniu, ale błąd jednego zdarzenia odrzuca całą paczkę.
- Dane użytkownika: pola haszowane mają postać list w liczbie mnogiej, np.
emails_sha256,phone_numbers_sha256,external_ids_sha256, maksymalnie trzy wartości; jawnie przekazujeszip_address,user_agent,countries,citiesiobref(wartość pliku__obref, tylko przy zgodzie). - Normalizacja: e-mail bez spacji i małymi literami; telefon z kodem kraju, bez znaku plus, spacji, nawiasów, myślników i zer wiodących (8–15 cyfr); imię i nazwisko małymi literami, bez spacji i interpunkcji ASCII, z zachowaniem polskich znaków; identyfikator klienta tylko przycięty, z zachowaniem wielkości liter.
- Testy: pole
validate_only: truesprawdza poprawność bez zapisywania zdarzeń.
{
"validate_only": true,
"integration_source": "twojsklep_backend",
"events": [{
"id": "ord-2026-104578",
"type": "order_created",
"timestamp_ms": 1793095200000,
"oppref": "<wartość oppref z kliknięcia>",
"action_source": "web",
"source_url": "https://twojsklep.pl/zamowienie/dziekujemy/",
"user": {
"emails_sha256": ["<SHA-256 adresu e-mail>"],
"obref": "<wartość pliku __obref>",
"countries": ["PL"],
"ip_address": "203.0.113.10",
"user_agent": "Mozilla/5.0 (...)"
},
"data": {
"type": "contents",
"amount": 25999,
"currency": "PLN",
"contents": [{ "id": "SKU-001", "name": "Buty do biegania", "quantity": 1, "amount": 25999 }]
}
}]
}
API nie odczyta oppref samodzielnie – musisz go zapisać przy wejściu na stronę (np. z pliku __oppref) i dołączyć do zdarzenia. Zasady normalizacji danych są zbliżone do tych, które opisujemy w artykule o Event Match Quality w Meta, choć nazwy pól różnią się między platformami. Jeśli masz już kontener server-side GTM dla Meta, możesz wysyłać zdarzenia do OpenAI z tego samego miejsca, korzystając z tagu HTTP lub szablonu od zaufanego dostawcy.
Deduplikacja OpenAI Pixel i Conversions API
OpenAI deduplikuje zdarzenia po trzech elementach: identyfikatorze piksela, nazwie zdarzenia i identyfikatorze. Wartość event_id w opcjach wywołania piksela musi być równa polu id w Conversions API, a dla zdarzeń własnych zgodna musi być także custom_event_name. Pierwsze zdarzenie z danym kluczem zostaje, kolejne są ignorowane. Ten sam id wysyłaj również przy ponawianiu nieudanego żądania.
Deduplikacja działa podobnie jak w innych systemach, ale nazwy pól są różne, co przy jednym kontenerze dla kilku platform łatwo pomylić:
| Platforma | Pole w przeglądarce | Pole na serwerze | Klucz deduplikacji |
|---|---|---|---|
| OpenAI | event_id w opcjach measure |
id |
piksel, nazwa zdarzenia, identyfikator |
| Meta | eventID w czwartym argumencie fbq |
event_id |
nazwa zdarzenia i identyfikator, 48 godzin |
| TikTok | event_id w trzecim argumencie ttq.track |
event_id |
nazwa zdarzenia i identyfikator, 48 godzin |
Szczegóły dla pozostałych platform znajdziesz w artykułach o deduplikacji piksela i Conversions API w Meta oraz o TikTok Pixel i Events API.
Zgody i prywatność przy OpenAI Pixel w Polsce
OpenAI Pixel domyślnie przyjmuje, że zgoda została udzielona, chyba że ustawisz ją na false albo znajdzie zapisaną odmowę. Dla polskiej strony oznacza to, że wywołanie oaiq('consent', false) przed init jest obowiązkowym elementem wdrożenia, a nie opcją.
Przy zgodzie ustawionej na false piksel nie wysyła zdarzeń pomiarowych i usuwa oba pliki cookie. Zdarzenia zablokowane w tym czasie nie są odtwarzane po późniejszej zgodzie. Jeśli użytkownik akceptuje baner dopiero na stronie produktu, zdarzenie contents_viewed z tej odsłony nie zostanie wysłane, chyba że wywołasz je ponownie po zmianie zgody. W GTM najprościej podpiąć oaiq('consent', true) pod zdarzenie, które CMP wysyła po akceptacji, i uruchamiać tagi zdarzeń z wymogiem zgody na ad_storage, tak jak opisujemy w checkliście Consent Mode v2.
Opcja opt_out: true przy zdarzeniu wyłącza je z przyszłej personalizacji na poziomie użytkownika. Wartość __obref przekazuj do Conversions API wyłącznie przy wymaganej zgodzie. Opis przekazywania danych do OpenAI dodaj do polityki prywatności, a podstawę prawną skonsultuj z prawnikiem.
Jak sprawdzić wdrożenie i połączyć dane z GA4
Pierwszy test wykonaj z debug: true w trybie prywatnym: odrzuć zgody i sprawdź, że w karcie Network nie ma żądań pomiarowych do OpenAI, a następnie zaakceptuj marketing i złóż testowe zamówienie. Zdarzenia serwerowe sprawdź najpierw z validate_only: true, a dopiero potem wysyłaj na produkcję.
Typowe błędy we wdrożeniach:
- amount jako liczba dziesiętna –
259.99zamiast25999, - znacznik czasu w sekundach –
timestamp_mswymaga milisekund, więc zdarzenie trafia poza dozwolone okno, - różne identyfikatory w pikselu i w API – konwersja liczy się dwa razy,
- brak
consent falseprzedinit– piksel mierzy użytkowników przed decyzją w banerze, opprefgubiony w przekierowaniach – konwersje bez przypisania do kampanii.
W GA4 płatny ruch z ChatGPT dobrze jest oznaczyć parametrami UTM w adresie docelowym reklamy, np. utm_source=chatgpt i utm_medium=cpc, żeby nie mieszał się z bezpłatnym ruchem z asystentów AI. Jak działa kanał „AI Assistant”, wyjaśniamy w tekście o ruchu z ChatGPT w GA4, a zasady nazewnictwa – w konwencji UTM dla zespołu. Gdy pomiar działa, możesz rzetelnie porównać koszt pozyskania z innymi kanałami; orientacyjne stawki zebraliśmy w artykule ile kosztuje reklama w ChatGPT, a różnice w pomiarze między platformami – w porównaniu reklam w ChatGPT i w Google AI Mode. Pozostałe poradniki o pikselach znajdziesz w podtemacie Meta Pixel i Conversions API, a teksty o kampaniach w asystentach AI – w dziale reklama w ChatGPT i asystentach AI.
Najczęściej zadawane pytania
Czy OpenAI Pixel wystarczy bez Conversions API?
Do podstawowego pomiaru tak, ale piksel działa tylko w przeglądarce, po zgodzie i bez blokad skryptów. Conversions API uzupełnia zdarzenia, których przeglądarka nie wysłała, i pozwala raportować konwersje offline, telefoniczne czy z aplikacji. Przy obu kanałach pamiętaj o wspólnym identyfikatorze zdarzenia, żeby OpenAI nie policzyło konwersji podwójnie.
Jak podać wartość zamówienia w OpenAI Pixel?
Wartość podajesz w polu amount jako liczbę całkowitą w najmniejszej jednostce waluty, razem z trzyliterowym kodem currency. Zamówienie za 259,99 zł to amount 25999 i currency „PLN”. To inna konwencja niż w GA4 i Meta, które przyjmują wartość dziesiętną, dlatego w GTM przelicz kwotę, mnożąc ją przez 100 i zaokrąglając.
Czy OpenAI Pixel respektuje baner cookies?
Tylko wtedy, gdy przekażesz mu decyzję. Piksel domyślnie przyjmuje zgodę, dlatego przed inicjalizacją wywołaj oaiq('consent', false), a po akceptacji marketingu w banerze oaiq('consent', true). Przy braku zgody piksel nie wysyła zdarzeń i usuwa swoje pliki cookie. Zdarzenia zablokowane przed zgodą nie są później odtwarzane.
Jak długo OpenAI przypisuje konwersję do kliknięcia reklamy?
Atrybucja po kliknięciu korzysta z okna ustawionego w konfiguracji konwersji, a plik __oppref przechowuje identyfikator kliknięcia przez 30 dni, odnawiane przy kolejnym kliknięciu. Konwersje po wyświetleniu OpenAI liczy w stałym jednodniowym oknie i raportuje oddzielnie od głównej kolumny konwersji. Ograniczenia przeglądarek mogą skracać ten czas.
Czy reklamodawca widzi treść rozmów użytkowników z ChatGPT?
Nie. OpenAI nie udostępnia reklamodawcom treści rozmów, a użytkownik może kontrolować personalizację reklam. Pomiar opiera się na kliknięciu reklamy z parametrem oppref oraz na zdarzeniach z Twojej strony lub serwera. Reklamy widzą tylko użytkownicy planów Free i Go, a w planach Plus, Pro i Enterprise reklam nie ma.