14 października 2026 roku Barry Schwartz napisał w Search Engine Roundtable, że OpenAI przydziela reklamodawcom na swojej platformie reklamowej ludzi, a nie tylko panel. Jego podsumowanie brzmi: “OpenAI ma ludzi, którzy kontaktują się z reklamodawcami, aby pomóc im zarządzać reklamami w ChatGPT” (tłumaczenie własne). Dowodem był e-mail opublikowany na X przez Anthony’ego Higmana, zatytułowany Introducing your ChatGPT Ads Account Manager. Wskazuje on osobę kontaktową, zachęca do zadawania pytań, proponuje spotkanie zapoznawcze i sugeruje przegląd co dwa tygodnie, żeby omówić wyniki i poszukać możliwości optymalizacji.
To nie jest start reklam w ChatGPT. OpenAI opublikowało swoje zasady reklamowe wcześniej w 2026 roku, a portal dla deweloperów dokumentuje już pełny zestaw narzędzi dla reklamodawców: kampanie, feedy produktowe, Measurement Pixel i serwerowe Conversions API. E-mail od opiekuna konta to warstwa sprzedażowa, która dochodzi do platformy działającej już wcześniej.
Dla sklepów WooCommerce sensowne pytanie nie dotyczy tego, czy reklamy w rozmowach z AI będą mieć ogólnie znaczenie. Chodzi o to, czego platforma faktycznie oczekuje od sklepu: jakich danych produktowych, w jakim formacie i w jaki sposób zakup ma zostać zgłoszony z powrotem. Ten poradnik trzyma się tego, co dokumentuje OpenAI, i przekłada każde wymaganie na kod WordPressa i WooCommerce.
co oferuje reklamodawcom e-mail od opiekuna konta chatgpt ads
E-mail z artykułu Search Engine Roundtable to obsługa konta, a nie zimny kontakt z markami, które nigdy nie reklamowały się w ChatGPT. Przedstawia imiennie wskazanego opiekuna, proponuje pierwszą rozmowę i regularne przeglądy wyników kampanii co dwa tygodnie. Schwartz odczytuje to jako ludzi, którzy mogą pomagać agencjom prowadzić reklamy ich klientów, i sam zaznacza, że to przypuszczenie.
Dwa szczegóły z dokumentacji OpenAI wyjaśniają, dlaczego kontakt z człowiekiem ma znaczenie nawet na platformie samoobsługowej:
- Część funkcji jest włączana dla każdego konta osobno. Przewodnik po feedach produktowych wymienia “dostęp do API feedu produktowego dla konta” jako warunek wstępny i mówi, że jeśli dostęp do feedu jest niedostępny, reklamodawca powinien skontaktować się z zespołem konta w OpenAI.
- Kilku ustawień nie da się później zmienić. Przewodnik po śledzeniu konwersji podaje, że celu kampanii nie można zmienić po jej utworzeniu, a w kampanii optymalizowanej pod konwersje nie można też zmienić wybranego zdarzenia konwersji. Błąd przy konfiguracji oznacza budowanie kampanii od nowa, więc rozmowa kontrolna przed startem ma realną wartość.
Reakcje na X były mieszane. Higman żartował z niekończących się rozmów z przedstawicielami Google, Meta i ChatGPT Ads, a inny użytkownik zauważył, że OpenAI do wsparcia używa AI, a do sprzedaży ludzi. Dla właściciela sklepu praktyczny wniosek jest prostszy: jeśli dostaniesz taki e-mail, pierwsza rozmowa to dobry moment, żeby zapytać, czy na twoim koncie włączono dostęp do feedu i optymalizację pod konwersje.
jak reklamy pojawiają się w chatgpt według openai
Wpis OpenAI o podejściu firmy do reklam i rozszerzaniu dostępu do ChatGPT ustala zasady, którym podlega każda emisja. Reklamy pojawiają się na dole odpowiedzi, gdy na podstawie bieżącej rozmowy istnieje pasujący sponsorowany produkt lub usługa. Są oznaczone i wizualnie oddzielone od odpowiedzi organicznej.
Ten sam wpis wymienia zobowiązania, które określają, co reklamodawcy mogą kupić, a czego nie:
- Niezależność odpowiedzi. Reklamy nie wpływają na odpowiedzi udzielane przez ChatGPT. Sklep nie może zapłacić za to, żeby został wymieniony w treści odpowiedzi.
- Prywatność rozmów. Rozmowy pozostają niedostępne dla reklamodawców, a OpenAI deklaruje, że nie sprzedaje im danych użytkowników.
- Kontrola po stronie użytkownika. Można wyłączyć personalizację reklam i usunąć dane wykorzystywane do reklam.
- Wykluczone grupy i tematy. Reklamy nie są wyświetlane na kontach użytkowników poniżej 18 lat i nie pojawiają się przy tematach wrażliwych, takich jak zdrowie, zdrowie psychiczne czy polityka.
- Plany płatne. Wyższe plany płatne pozostają bez reklam; reklamy są kierowane do planu bezpłatnego i tańszych planów.
To obala częste nieporozumienie. Doniesienia o sponsorowanych produktach wplecionych w rozumowanie modelu przeczą temu, co opisuje OpenAI: dwa osobne systemy, odpowiedź organiczną i oznaczoną jednostkę reklamową pod nią. Widoczność organiczna i widoczność płatna to osobne problemy i żadna z nich nie kupuje drugiej.
jak działa kierowanie reklam w chatgpt ads bez słów kluczowych
Dokumentacja kierowania kampanii wymienia cztery dźwignie i żadna z nich nie jest listą słów kluczowych:
| Dźwignia | Co kontroluje | Uwagi z dokumentacji |
|---|---|---|
| Kierowanie geograficzne | Kraje lub identyfikatory lokalizacji, z wykluczeniami | Kampanie z feedem produktowym obsługują tylko kierowanie na poziomie kraju |
| Kierowanie na platformę | ios_app, android_app, web | web obejmuje przeglądarki mobilne, nie tylko komputery |
| Własne listy odbiorców | Zahaszowane listy klientów do włączenia, wykluczenia lub mnożników stawek | Gdy użytkownik jest na obu listach, wygrywa wykluczenie |
| Wskazówki kontekstowe | Opisy produktów, zastosowań lub potrzeb dla grupy reklam | Nie są słowami kluczowymi w dopasowaniu ścisłym |
Wskazówki kontekstowe są najbliższe badaniu słów kluczowych, ale dokumentacja wprost mówi, że słowami kluczowymi nie są. Opisują, co sprzedaje dana grupa reklam i dla kogo, więc działają najlepiej, gdy wyglądają jak krótki opis produktu, a nie lista fraz wyszukiwania.
Różnica między włączeniem listy odbiorców a mnożnikiem stawki ma znaczenie dla sklepów, które mają listę klientów. Włączenie listy ogranicza emisję do pasujących użytkowników. Mnożnik stawki podnosi stawkę dla pasujących użytkowników, a wszyscy pozostali nadal mogą zobaczyć reklamę. Sklep, który wgra dotychczasowych klientów jako listę włączającą, całkowicie przestaje docierać do nowych klientów; ta sama lista wgrana jako mnożnik tego nie robi.
opcje ustalania stawek i cele kampanii w chatgpt ads
Przewodnik po stawkach i budżetach rozdziela trzy ustawienia, które użytkownicy Google Ads zwykle traktują jak jedno: cel kampanii (pod co optymalizować), zdarzenie rozliczeniowe (za co płacisz) i strategię ustalania stawek (kto ustala stawkę).
| Cel kampanii | Zdarzenie rozliczeniowe | Strategia stawek |
|---|---|---|
| Wyświetlenia | Wyświetlenie | Stała stawka |
| Kliknięcia | Kliknięcie | Stała stawka albo maksymalizacja kliknięć |
| Konwersje | Kliknięcie | Stała stawka albo maksymalizacja konwersji |
Kampanie konwersyjne optymalizują pod zakup lub lead, ale nadal rozliczają się za ważne kliknięcia. Obie strategie maksymalizacji wymagają budżetu dziennego i braku stawki maksymalnej. Mnożniki stawek dla list odbiorców działają tylko przy stałych stawkach.
Kwoty pieniężne są na platformie podawane w trzech różnych jednostkach, a ich pomylenie to najbardziej prawdopodobny błąd integracji:
- Budżety i stawki używają mikrojednostek: milion mikrojednostek to jedna jednostka waluty konta. Stawkę 2,50 wysyła się jako 2500000.
- Stawki za wyświetlenia dotyczą jednego wyświetlenia, więc wartość CPM dzieli się przez 1000 przed przeliczeniem na mikrojednostki.
- Kwoty zdarzeń konwersji i ceny w Delta API używają całkowitych jednostek podrzędnych: 8900 oznacza 89,00 w walucie z groszami lub centami.
- Ceny w feedzie CSV używają jednostek głównych z kodem waluty, na przykład
79.99 EUR.
Optymalizacja pod konwersje wymaga dokładnie jednego aktywnego standardowego zdarzenia konwersji, na przykład order_created. Zdarzenia niestandardowe można mierzyć, ale nie mogą być celem optymalizacji. Ponieważ cel i wybrane zdarzenie są ustalane przy tworzeniu kampanii, opisane niżej śledzenie konwersji trzeba skończyć przed utworzeniem pierwszej kampanii konwersyjnej.
jak zbudować feed produktowy chatgpt ads z woocommerce
Reklamy produktowe w ChatGPT powstają na podstawie feedu produktowego. Przewodnik po feedach produktowych opisuje przebieg: utworzenie feedu przez Advertiser API, konfiguracja dostępu SFTP hasłem lub kluczem SSH, a potem wgranie pliku CSV w UTF-8 z jednym wierszem na produkt lub wariant. Pliki trafiają bezpośrednio do katalogu głównego SFTP, bez podkatalogów, a każdy produkt powinien wystąpić tylko raz we wszystkich plikach.
Definicje pól znajdują się w schemacie pliku produktowego OpenAI, wspólnym z organicznym odkrywaniem produktów w ChatGPT. Wymaganych jest dziewięć pól podstawowych i każde z nich łatwo przypisać do danych WooCommerce:
| Pole feedu | Źródło w WooCommerce | Uwagi ze schematu |
|---|---|---|
item_id | SKU produktu lub wariantu albo jego ID | Stałe, nigdy nie używane ponownie dla innej pozycji |
title | Nazwa produktu, łącznie z wariantem | Najwyżej około 150 znaków |
description | Krótki lub długi opis bez znaczników | Zwykły tekst, do około 5000 znaków |
url | Bezpośredni link, w miarę możliwości z wybranym wariantem | Publiczny HTTPS, niezmienny |
brand | Atrybut lub taksonomia marki | Prawdziwa marka, nie wypełniacz |
seller_name | Nazwa sklepu | Sprzedawca tej oferty |
image_url | Główny obraz tego wariantu | Bezpośredni adres pliku JPEG lub PNG |
price | Cena regularna | Jednostki główne plus waluta, na przykład 79.99 EUR |
availability | Status magazynowy | in_stock, out_of_stock, pre_order, backorder lub unknown |
Produkty z wariantami potrzebują trzech dodatkowych pól w każdym wierszu wariantu: wspólnego group_id (wystarczy ID produktu nadrzędnego), listing_has_variations ustawionego na true oraz variant_dict, na przykład {"color":"Black","size":"10"}, zbudowanego z atrybutów wariantu. Identyfikator grupy musi się różnić od identyfikatora każdej pozycji.
Identyfikatory wymagają uwagi. Od WooCommerce 9.1 produkty udostępniają get_global_unique_id(), czyli pole widoczne w panelu jako GTIN, UPC, EAN lub ISBN. Schemat przyjmuje jeden GTIN o długości dokładnie 8, 12, 13 lub 14 cyfr z poprawną cyfrą kontrolną i każe sprzedawcom pominąć pole, zamiast wymyślać wartość. Rozwiązaniem zastępczym jest numer części producenta (mpn) razem z marką.
Dwie flagi decydują, gdzie produkt może się pojawić. is_ads_eligible musi mieć wartość true dla produktów, które ma przetwarzać system reklamowy; gdy pole jest pominięte, przetwarzanie reklamowe jest wyłączone, chyba że istnieje wartość domyślna na poziomie feedu. is_eligible_search steruje odkrywaniem organicznym i działa niezależnie od kwalifikacji do reklam.
W świecie WordPressa często zakłada się, że da się ponownie wykorzystać istniejący feed XML Google Shopping z wtyczki. Ścieżka zgodna z Google w schemacie przyjmuje pliki tekstowe rozdzielane tabulatorem lub przecinkiem z nazwami kolumn Google, i to dopiero po tym, jak OpenAI potwierdzi ten format dla zarejestrowanego feedu. JSON, arkusze kalkulacyjne, XML, RSS i Atom nie są na tej ścieżce obsługiwane. Większość sklepów będzie potrzebować osobnego eksportu CSV.
/**
* Zapisuje plik CSV produktów ChatGPT Ads dla produktów prostych i wariantów.
* Nazwy pól zgodne z developers.openai.com/commerce/specs/file-upload/products.
*/
function wppoland_write_chatgpt_feed( string $path ): void {
$fh = fopen( $path, 'w' );
fputcsv( $fh, [ 'item_id', 'group_id', 'listing_has_variations', 'variant_dict',
'title', 'description', 'url', 'brand', 'seller_name', 'image_url',
'price', 'availability', 'gtin', 'is_ads_eligible' ] );
$map = [ 'instock' => 'in_stock', 'outofstock' => 'out_of_stock', 'onbackorder' => 'backorder' ];
$ids = wc_get_products( [ 'status' => 'publish', 'limit' => -1, 'return' => 'ids',
'type' => [ 'simple', 'variation' ] ] );
foreach ( $ids as $id ) {
$p = wc_get_product( $id );
$parent = $p->get_parent_id() ? wc_get_product( $p->get_parent_id() ) : null;
$image = wp_get_attachment_image_url( $p->get_image_id() ?: ( $parent ? $parent->get_image_id() : 0 ), 'full' );
if ( ! $image || '' === $p->get_regular_price() ) {
continue; // Brak wymaganych pól: pomiń zamiast wysyłać wypełniacze.
}
$variant = $parent ? wp_json_encode( array_map( 'strval', $p->get_attributes() ) ) : '';
fputcsv( $fh, [
$p->get_sku() ?: (string) $id,
$parent ? 'group-' . $parent->get_id() : '',
$parent ? 'true' : '',
$variant,
$p->get_name(),
wp_strip_all_tags( $p->get_description() ?: ( $parent ? $parent->get_description() : '' ) ),
$p->get_permalink(),
get_bloginfo( 'name' ), // Zastąp prawdziwym atrybutem marki, jeśli produkty go mają.
get_bloginfo( 'name' ),
$image,
wc_format_decimal( $p->get_regular_price(), 2 ) . ' ' . get_woocommerce_currency(),
$map[ $p->get_stock_status() ] ?? 'unknown',
$p->get_global_unique_id(),
'true',
] );
}
fclose( $fh );
}Samo wgrywanie odbywa się przez SFTP, więc wystarczy zadanie cron albo polecenie WP-CLI, które zapisze plik i wyśle go serwerowym klientem SFTP. Po każdym wgraniu punkt końcowy historii wgrań zwraca status (completed, completed_with_errors, failed i inne) oraz liczbę zaakceptowanych i odrzuconych wierszy z kodami diagnostycznymi, takimi jak missing_required_column czy invalid_value. OpenAI zaznacza, że zakończone wgranie nie oznacza, że każdy produkt może być emitowany.
jak aktualizować ceny i stany magazynowe przez delta api
Przewodnik po feedach dzieli aktualizacje według typu. Zmiany tytułu, ceny lub dostępności istniejącej pozycji przechodzą przez Delta API, czyli żądanie PATCH, które wysyła tylko zmienione pola. Nowe produkty i zmiany innych pól, na przykład obrazów lub opisów, wymagają ponownego wgrania katalogu przez SFTP.
Zasada dotycząca stanów jest prosta: pozycja oznaczona jako out_of_stock przestaje kwalifikować się do emisji, gdy zmiana się rozpropaguje, i znów się kwalifikuje po przywróceniu in_stock. Dokumentacja ostrzega też, że daty promocji i dostępności w feedzie niczego nie planują, więc zmianę ceny trzeba wysłać w chwili, gdy następuje.
W WooCommerce naturalnymi punktami wyzwalającymi są hooki stanów magazynowych dla produktów i wariantów. Żądanie wymaga klucza Advertiser API, który musi zostać na serwerze, obok innych sekretów sprawdzanych podczas audytu bezpieczeństwa WordPressa. W sklepach, w których stanami i cenami zarządza ERP, to samo wywołanie należy umieścić w warstwie integracji WooCommerce z ERP, a nie w motywie.
/**
* Wysyła zmianę stanu magazynowego do Delta API ChatGPT Ads.
* Punkt końcowy i struktura danych: developers.openai.com/ads/product-feeds
*/
function wppoland_push_chatgpt_stock( WC_Product $product ): void {
if ( ! defined( 'OPENAI_ADS_API_KEY' ) || ! defined( 'OPENAI_ADS_FEED_ID' ) ) {
return;
}
$item_id = $product->get_sku() ?: (string) $product->get_id();
$group_id = $product->get_parent_id() ? 'group-' . $product->get_parent_id() : $item_id;
wp_remote_request( 'https://api.ads.openai.com/v1/feeds/' . OPENAI_ADS_FEED_ID . '/products', [
'method' => 'PATCH',
'timeout' => 10,
'headers' => [
'Authorization' => 'Bearer ' . OPENAI_ADS_API_KEY,
'Content-Type' => 'application/json',
],
'body' => wp_json_encode( [ 'products' => [ [
'id' => $group_id,
'variants' => [ [
'id' => $item_id,
'availability' => [ 'status' => $product->is_in_stock() ? 'in_stock' : 'out_of_stock' ],
] ],
] ] ] ),
] );
}
add_action( 'woocommerce_product_set_stock', 'wppoland_push_chatgpt_stock' );
add_action( 'woocommerce_variation_set_stock', 'wppoland_push_chatgpt_stock' );Identyfikator produktu w żądaniu Delta to group_id z katalogu, gdy warianty są zgrupowane, a w przeciwnym razie item_id. Aktualizacja ceny ma tę samą strukturę, a price jest obiektem z kwotą w całkowitych jednostkach podrzędnych i walutą, na przykład {"amount": 7999, "currency": "EUR"}. Odpowiedź accepted: true potwierdza tylko przyjęcie zgłoszenia; zmiana jest stosowana asynchronicznie. Eksport CSV musi być zgodny ze zmianami z Delta API, inaczej kolejne pełne wgranie nadpisze je nieaktualnymi wartościami.
jak zainstalować measurement pixel chatgpt ads w wordpressie
Przewodnik po Measurement Pixel wymaga małego skryptu ładującego umieszczonego blisko początku sekcji <head> na każdej stronie, która ma rejestrować konwersje, zainicjowanego identyfikatorem piksela utworzonym w zakładce konwersji w Ads Managerze. Do przeglądarki nie trafia żaden klucz API. W WordPressie oznacza to akcję wp_head z wczesnym priorytetem albo miejsce w nagłówku w istniejącej konfiguracji menedżera tagów.
Trzy części przewodnika wymagają decyzji przed wdrożeniem:
- Zgoda. Domyślnie piksel zakłada udzieloną zgodę, chyba że dostanie inną informację. Dla ruchu z UE wywołaj
oaiq("consent", false)przed inicjalizacją i przełącz na true, gdy odwiedzający zaakceptuje pomiar w banerze zgód. Zablokowane zdarzenia nie są później odtwarzane, a ustawienie zgody na false usuwa ciasteczka piksela. - Content Security Policy. Strony z CSP muszą dopuścić
https://bzrcdn.openai.comwscript-srciconnect-srcorazhttps://bzr.openai.comwconnect-srciimg-src. Przewodnik zaleca, żeby nie dodawać'unsafe-inline'tylko dla piksela, tylko użyć istniejącego na stronie mechanizmu nonce lub hashy. - Ciasteczka. Po udzieleniu zgody piksel ustawia
__oppref, które przechowuje identyfikator kliknięcia przez 30 dni, oraz__obref, losowy identyfikator przeglądarki ważny 365 dni. Oba należy opisać w polityce cookies.
W sklepie najważniejsze jest zdarzenie order_created na stronie potwierdzenia zamówienia, z sumą zamówienia w jednostkach podrzędnych i numerem zamówienia jako event_id.
add_action( 'woocommerce_thankyou', function ( $order_id ) {
$order = wc_get_order( $order_id );
if ( ! $order || $order->get_meta( '_oaiq_sent' ) ) {
return; // Zapobiega drugiemu zdarzeniu po przeładowaniu strony.
}
$order->update_meta_data( '_oaiq_sent', 1 );
$order->save();
$payload = [
'type' => 'contents',
'amount' => (int) round( $order->get_total() * 100 ), // Jednostki podrzędne dla walut z dwoma miejscami po przecinku.
'currency' => $order->get_currency(),
];
printf(
'<script>window.oaiq && oaiq("measure","order_created",%s,{event_id:%s});</script>',
wp_json_encode( $payload ),
wp_json_encode( 'order_' . $order->get_order_number() )
);
} );Mnożenie przez 100 pasuje do walut z dwoma miejscami po przecinku, takich jak EUR, PLN czy NOK. Dokumentacja podaje jako przykład JPY, gdzie 8900 oznacza 8900, więc sklepy sprzedające w walutach bez części ułamkowej muszą je pominąć.
jak wysyłać zamówienia woocommerce przez conversions api
Piksel zależy od przeglądarki: blokery reklam, odmowa zgody albo karta zamknięta po płatności mogą sprawić, że zdarzenie przepadnie. Conversions API zamyka tę lukę, wysyłając potwierdzone zamówienia z serwera na adres https://bzr.openai.com/v1/events, z uwierzytelnieniem osobnym kluczem Conversions API.
Udokumentowane zasady składają się na krótką listę kontrolną dla integracji z WooCommerce:
- Deduplikacja. Użyj tego samego identyfikatora piksela, tej samej nazwy zdarzenia i tego samego identyfikatora zdarzenia co w pikselu. OpenAI zachowuje pierwsze otrzymane zdarzenie o pasującym kluczu i ignoruje późniejsze duplikaty.
- Identyfikator kliknięcia. W przeciwieństwie do piksela API nie przechwytuje
oppref. Odczytaj go z ciasteczka__opprefpodczas składania zamówienia, zapisz przy zamówieniu i wyślij oryginalny ciąg bez zmian. - Znaczniki czasu.
timestamp_msto czas zakupu w milisekundach Unix i musi mieścić się w ostatnich 7 dniach, a w przyszłość wybiegać najwyżej o 10 minut. Kolejka, która ponawia nieudane zamówienia po kilku dniach, straci je. - Paczki. Do 1000 zdarzeń na żądanie, a jedno nieprawidłowe zdarzenie powoduje odrzucenie całej paczki.
validate_only: truesprawdza dane bez ich zapisywania. - Dane klienta. Opcjonalne zahaszowane identyfikatory poprawiają dopasowanie. Adresy e-mail przed haszowaniem SHA-256 są przycinane i zamieniane na małe litery; numery telefonów zachowują kod kraju i tracą symbole oraz zera wiodące.
- Wszystkie zamówienia, nie tylko oznaczone. OpenAI zaleca wysyłanie każdej konwersji, nie tylko tych z
oppref, żeby dało się policzyć konwersje po wyświetleniu.
// Zapisz identyfikator kliknięcia przy zamówieniu, póki ciasteczko jest jeszcze dostępne.
add_action( 'woocommerce_checkout_create_order', function ( $order ) {
if ( ! empty( $_COOKIE['__oppref'] ) ) {
$order->update_meta_data( '_oppref', sanitize_text_field( wp_unslash( $_COOKIE['__oppref'] ) ) );
}
} );
add_action( 'woocommerce_payment_complete', function ( $order_id ) {
$order = wc_get_order( $order_id );
if ( ! $order || ! defined( 'OPENAI_CONVERSIONS_API_KEY' ) || ! defined( 'OPENAI_PIXEL_ID' ) ) {
return;
}
$event = [
'id' => 'order_' . $order->get_order_number(), // Ta sama wartość co event_id w pikselu.
'type' => 'order_created',
'timestamp_ms' => $order->get_date_paid()->getTimestamp() * 1000,
'action_source' => 'web',
'source_url' => $order->get_checkout_order_received_url(),
'user' => [ 'emails_sha256' => [ hash( 'sha256', strtolower( trim( $order->get_billing_email() ) ) ) ] ],
'data' => [
'type' => 'contents',
'amount' => (int) round( $order->get_total() * 100 ),
'currency' => $order->get_currency(),
],
];
if ( $order->get_meta( '_oppref' ) ) {
$event['oppref'] = $order->get_meta( '_oppref' );
}
wp_remote_post( 'https://bzr.openai.com/v1/events?pid=' . rawurlencode( OPENAI_PIXEL_ID ), [
'timeout' => 10,
'headers' => [
'Authorization' => 'Bearer ' . OPENAI_CONVERSIONS_API_KEY,
'Content-Type' => 'application/json',
],
'body' => wp_json_encode( [ 'events' => [ $event ] ] ),
] );
} );Haszowanie adresu e-mail ma sens tylko w sklepach, których polityka prywatności i konfiguracja zgód obejmują przekazywanie zahaszowanych identyfikatorów platformie reklamowej. Bez takiej podstawy prawnej usuń blok user; zdarzenie nadal zostanie policzone, tylko z gorszym dopasowaniem.
Przed wklejeniem piksela sprawdź też, co wysyła po swojej stronie. Analiza Buchodi z 20 września 2026 opisuje ciasteczko __obi, które ChatGPT ustawia w domenie .openai.com na rok i które wraca do OpenAI ze stron reklamodawców razem ze zdarzeniami z oaiq.min.js. SDK potrafi samo zbierać dane z pól formularzy i z data layer menedżera tagów, a automatyczne dopasowanie było włączone w 638 z 881 pikseli o znanym ustawieniu. Każdy zdekodowany token miał consent_decision: analytics_allowed, więc OpenAI traktuje to ciasteczko jako analityczne. W sklepie WooCommerce ładuj piksel dopiero po zgodzie marketingowej w swoim banerze i wyłącz automatyczne dopasowanie, jeśli nie chcesz, żeby skrypt czytał pola checkoutu.
czym atrybucja chatgpt ads różni się od śledzenia utm
Narzędzia analityczne oparte na parametrach UTM zobaczą kliknięcia w reklamy ChatGPT tylko w takim stopniu, w jakim oznaczono adresy stron docelowych. Atrybucja ChatGPT Ads nie zależy od UTM. Korzysta z własnego identyfikatora kliknięcia, oppref, przekazywanego w adresie strony docelowej i przechowywanego w opisanym wyżej ciasteczku własnym.
Udokumentowany model atrybucji ma trzy części:
- Konwersje po kliknięciu są przypisywane w oknie kliknięcia ustawionym w konfiguracji zdarzenia konwersji. Przewodnik konfiguracyjny używa okna 30 dni.
- Konwersje po wyświetleniu, jeśli są dostępne dla konta, mają stałe okno jednego dnia od kwalifikującego się wyświetlenia. Ads Manager pokazuje je jako osobny wskaźnik kampanii; nie wchodzą do sumy Conversions, a CPA, ustalanie stawek i rozliczenia nadal opierają się na kliknięciach.
- Gdy zachodzą oba przypadki, pierwszeństwo ma kliknięcie.
Do testów służy punkt końcowy monitorowania, który zwraca próbkę zdarzeń z mniej więcej ostatnich 15 minut i pokazuje, czy każde przyszło przez pixel_sdk, czy przez server_to_server. Zakup testowy powinien pojawić się w obu kanałach z tym samym identyfikatorem zdarzenia i tylko raz w raportowanych konwersjach.
Praktyczna konsekwencja dla raportowania jest taka, że liczby z ChatGPT Ads i z GA4 z założenia nie będą się zgadzać. GA4 widzi sesje i dodane przez ciebie UTM; Ads Manager widzi dopasowania oppref i konwersje po wyświetleniu, których GA4 w żaden sposób nie zaobserwuje. Porównuj trendy, nie sumy.
schema produktu na stronach woocommerce obok feedu reklamowego
Dokumentacja feedów OpenAI nie wspomina o danych strukturalnych na stronie produktu, więc nie istnieje udokumentowana zasada, według której znaczniki schema wpływają na emisję reklam w ChatGPT. Mają one jednak znaczenie dla strony organicznej: Google korzysta z danych strukturalnych Product przy informacjach o produktach sprzedawców, a jedno źródło prawdy dla ceny, dostępności i GTIN sprawia, że feed, strona i znaczniki sobie nie przeczą.
WooCommerce już generuje znaczniki Product. Poniższy filtr dodaje GTIN z wbudowanego pola i jawnie określa dostępność, nie zastępując danych oferty generowanych przez WooCommerce:
add_filter( 'woocommerce_structured_data_product', function ( $markup, $product ) {
$gtin = $product->get_global_unique_id();
if ( $gtin && preg_match( '/^\d{8}$|^\d{12,14}$/', $gtin ) ) {
$markup[ 'gtin' . strlen( $gtin ) ] = $gtin;
}
if ( isset( $markup['offers'][0] ) ) {
$markup['offers'][0]['availability'] = $product->is_in_stock()
? 'https://schema.org/InStock'
: 'https://schema.org/OutOfStock';
}
return $markup;
}, 10, 2 );W obu miejscach obowiązuje ta sama zasada walidacji GTIN: 8, 12, 13 lub 14 cyfr, nigdy wymyślona wartość.
jak łączyć organiczną widoczność w chatgpt z chatgpt ads
Ponieważ OpenAI oddziela reklamy od odpowiedzi, obecność organiczna i emisja płatna wymagają osobnej pracy, a każda z nich zamyka lukę, której druga nie zamknie.
- Odpowiedzi organiczne. Cytowanie w odpowiedzi zależy od treści i danych produktowych, które ChatGPT potrafi znaleźć i którym ufa: jasnych poradników, porównań, rzetelnych stron produktów, a w przypadku produktów od pola
is_eligible_searchw feedzie. Płacenie za reklamy tego nie zmienia. - Emisja płatna. Reklama pod odpowiedzią to miejsce, w którym sklep może pojawić się przy rozmowach o zakupach nawet bez wzmianki organicznej. Działa na podstawie feedu, stawek i danych o konwersjach opisanych wyżej.
Sklep, który tylko kupuje reklamy, za każdą wizytę płaci budżetem. Sklep, który pracuje tylko nad widocznością organiczną, nie ma jak się pokazać, gdy rozmowa jest blisko zakupu, a odpowiedź cytuje kogoś innego. Prowadzenie obu kanałów z jednym przepływem danych produktowych, który zasila zarówno kwalifikację do wyszukiwania, jak i do reklam, pozwala uniknąć utrzymywania dwóch katalogów.
lista kroków wdrożenia dla wordpressa i woocommerce
- Uporządkuj identyfikatory. Nadaj każdemu produktowi i wariantowi stałe SKU, uzupełnij pole GTIN tam, gdzie kod istnieje, i nigdy nie wpisuj w nie wypełniaczy.
- Zbuduj eksport CSV. Przypisz dziewięć wymaganych pól, dodaj
group_id,listing_has_variationsivariant_dictdla wariantów oraz ustawis_ads_eligibledla każdego produktu. - Zautomatyzuj wgrywanie. Zapisuj plik według harmonogramu, wysyłaj go do katalogu głównego SFTP i sprawdzaj w historii wgrań odrzucone wiersze.
- Podłącz Delta API. Wysyłaj zmiany stanów i cen z WooCommerce lub z ERP w chwili, gdy następują, w jednostkach podrzędnych.
- Zainstaluj piksel ze zgodą. Ładuj go wcześnie w sekcji head, uzależnij od banera zgód, zaktualizuj CSP i politykę cookies.
- Dodaj Conversions API. Przechwytuj
opprefprzy składaniu zamówienia, wysyłaj potwierdzone zamówienia z tym samym identyfikatorem zdarzenia co w pikselu i trzymaj oba klucze API na serwerze. - Utwórz ustawienia konwersji przed kampaniami. Wybierz standardowe zdarzenie, sprawdź zdarzenia w punkcie końcowym monitorowania i dopiero potem utwórz kampanię optymalizowaną pod konwersje, bo celu nie da się później zmienić.







