OpenAI wprowadza opiekunów kont ChatGPT Ads: co monetyzacja wyszukiwania AI oznacza dla e-commerce i WordPressa

OpenAI wprowadza opiekunów kont ChatGPT Ads: co monetyzacja wyszukiwania AI oznacza dla e-commerce i WordPressa

Ostatnio zweryfikowano: 20 października 2026
20 min czytania
Przewodnik
500+ projektów WP

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źwigniaCo kontrolujeUwagi z dokumentacji
Kierowanie geograficzneKraje lub identyfikatory lokalizacji, z wykluczeniamiKampanie z feedem produktowym obsługują tylko kierowanie na poziomie kraju
Kierowanie na platformęios_app, android_app, webweb obejmuje przeglądarki mobilne, nie tylko komputery
Własne listy odbiorcówZahaszowane listy klientów do włączenia, wykluczenia lub mnożników stawekGdy użytkownik jest na obu listach, wygrywa wykluczenie
Wskazówki kontekstoweOpisy produktów, zastosowań lub potrzeb dla grupy reklamNie 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 kampaniiZdarzenie rozliczenioweStrategia stawek
WyświetleniaWyświetlenieStała stawka
KliknięciaKliknięcieStała stawka albo maksymalizacja kliknięć
KonwersjeKliknięcieStał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 WooCommerceUwagi ze schematu
item_idSKU produktu lub wariantu albo jego IDStałe, nigdy nie używane ponownie dla innej pozycji
titleNazwa produktu, łącznie z wariantemNajwyżej około 150 znaków
descriptionKrótki lub długi opis bez znacznikówZwykły tekst, do około 5000 znaków
urlBezpośredni link, w miarę możliwości z wybranym wariantemPubliczny HTTPS, niezmienny
brandAtrybut lub taksonomia markiPrawdziwa marka, nie wypełniacz
seller_nameNazwa sklepuSprzedawca tej oferty
image_urlGłówny obraz tego wariantuBezpośredni adres pliku JPEG lub PNG
priceCena regularnaJednostki główne plus waluta, na przykład 79.99 EUR
availabilityStatus magazynowyin_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.com w script-src i connect-src oraz https://bzr.openai.com w connect-src i img-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 __oppref podczas składania zamówienia, zapisz przy zamówieniu i wyślij oryginalny ciąg bez zmian.
  • Znaczniki czasu. timestamp_ms to 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: true sprawdza 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.

  1. 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_search w feedzie. Płacenie za reklamy tego nie zmienia.
  2. 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

  1. 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.
  2. Zbuduj eksport CSV. Przypisz dziewięć wymaganych pól, dodaj group_id, listing_has_variations i variant_dict dla wariantów oraz ustaw is_ads_eligible dla każdego produktu.
  3. Zautomatyzuj wgrywanie. Zapisuj plik według harmonogramu, wysyłaj go do katalogu głównego SFTP i sprawdzaj w historii wgrań odrzucone wiersze.
  4. 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.
  5. Zainstaluj piksel ze zgodą. Ładuj go wcześnie w sekcji head, uzależnij od banera zgód, zaktualizuj CSP i politykę cookies.
  6. Dodaj Conversions API. Przechwytuj oppref przy składaniu zamówienia, wysyłaj potwierdzone zamówienia z tym samym identyfikatorem zdarzenia co w pikselu i trzymaj oba klucze API na serwerze.
  7. 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ć.
Następny krok

Przekuj artykuł w realne wdrożenie

Pod tym wpisem dokładam linki, które domykają intencję użytkownika i prowadzą dalej w strukturze serwisu.

Chcesz wdrożyć ten temat na swojej stronie?

Jeśli zależy Ci na widoczności w Google i systemach AI, mogę przygotować architekturę treści, FAQ, schema i linkowanie pod GEO, AEO i SEO.

Powiązany klaster

Sprawdź inne usługi WordPress i bazę wiedzy

Wzmocnij swój biznes dzięki profesjonalnemu wsparciu technicznemu w kluczowych obszarach ekosystemu WordPress.

Często zadawane pytania

Najważniejsze odpowiedzi, które pomagają wdrożyć temat w praktyce.

Czy reklamy w ChatGPT zmieniają odpowiedzi ChatGPT#
Według OpenAI nie. Zasady reklamowe firmy mówią, że reklamy nie wpływają na odpowiedzi, pojawiają się pod odpowiedzią wtedy, gdy sponsorowany produkt lub usługa pasuje do rozmowy, a do tego są oznaczone i oddzielone od odpowiedzi organicznej.
Jak ChatGPT Ads kieruje reklamy do użytkowników bez słów kluczowych#
Kampanie łączą kierowanie na kraj lub lokalizację, kierowanie na platformę (aplikacja iOS, aplikacja Android, przeglądarka) i własne listy odbiorców. Grupy reklam mogą zawierać wskazówki kontekstowe opisujące produkty i zastosowania, a dokumentacja OpenAI wprost zaznacza, że wskazówki nie są słowami kluczowymi w dopasowaniu ścisłym.
Co musi zawierać feed produktowy WooCommerce dla ChatGPT Ads#
Jeden wiersz CSV na produkt lub wariant z wymaganymi polami podstawowymi, w tym item_id, title, description, url, brand, seller_name, image_url, price i availability, oraz pole is_ads_eligible ustawione na true. Strony produktów i obrazy muszą mieć publiczne adresy HTTPS, a pliki trafiają bezpośrednio do katalogu głównego SFTP.
Jak ChatGPT Ads śledzi konwersje ze sklepu WooCommerce#
Przez Measurement Pixel w przeglądarce, przez Conversions API z serwera albo przez oba kanały naraz. Kliknięcia niosą identyfikator oppref, który piksel zapisuje w ciasteczku własnym; integracja serwerowa musi go odczytać i przekazać dalej. Ten sam numer zamówienia użyty jako identyfikator zdarzenia w obu kanałach zapobiega podwójnemu liczeniu.
Dlaczego e-mail od opiekuna konta ma znaczenie dla mniejszych sklepów WooCommerce#
Pokazuje, że OpenAI prowadzi obsługę kont przez ludzi równolegle do samoobsługowego zakupu reklam. Część funkcji, na przykład dostęp do feedu produktowego, jest włączana dla każdego konta osobno, a przewodnik po feedach każe reklamodawcom bez dostępu skontaktować się z zespołem konta w OpenAI.

Potrzebujesz FAQ dopasowanego do branży i rynku? Przygotujemy wersję pod Twoje cele biznesowe.

Porozmawiajmy

Polecane artykuły