A 14 de outubro de 2026, Barry Schwartz noticiou no Search Engine Roundtable que a OpenAI passou a atribuir pessoas, e não apenas um painel, aos anunciantes da sua plataforma de publicidade. O resumo dele: “A OpenAI tem pessoas a contactar os anunciantes para os ajudar a gerir os seus anúncios no ChatGPT.” (tradução própria). A prova foi um email publicado no X por Anthony Higman, com o título Introducing your ChatGPT Ads Account Manager. O email indica uma pessoa de contacto, convida a enviar perguntas, propõe uma reunião de apresentação e sugere uma revisão quinzenal para analisar o desempenho e procurar oportunidades de otimização.
A publicidade no ChatGPT já existia antes deste email. A OpenAI publicou os seus princípios de publicidade no início de 2026, e o seu portal para programadores já documenta uma pilha completa para anunciantes: campanhas, feeds de produtos, um Measurement Pixel e uma Conversions API do lado do servidor. O email do gestor de conta é a camada comercial que chega por cima de uma plataforma que já funciona.
Para lojas WooCommerce, a pergunta útil é o que a plataforma espera concretamente de uma loja: que dados de produto, em que formato e como uma compra é comunicada de volta. Saber se os anúncios conversacionais vão ter peso em geral ajuda pouco. Este guia limita-se ao que a OpenAI documenta e associa cada requisito a código WordPress e WooCommerce.
O que oferece aos anunciantes o email do gestor de conta do ChatGPT Ads
O email referido no Search Engine Roundtable é gestão de conta, dirigida a quem já anuncia, e não prospeção a frio de marcas que nunca anunciaram. Apresenta um gestor com nome, oferece uma primeira chamada e propõe revisões quinzenais regulares dos resultados das campanhas. Schwartz interpreta-o como pessoas que poderão ajudar agências a gerir anúncios para os seus clientes, e ele próprio classifica essa leitura como um palpite.
Dois pormenores da documentação da própria OpenAI explicam porque é que um contacto humano conta, mesmo numa plataforma self-service:
- Algumas capacidades são ativadas conta a conta. O guia do feed de produtos indica como pré-requisito o acesso à API do feed de produtos para a conta e diz que, se esse acesso não estiver disponível, o anunciante deve contactar a equipa de conta da OpenAI.
- Várias definições são permanentes. O guia de registo de conversões afirma que o objetivo de uma campanha não pode ser alterado depois de criada e que, numa campanha otimizada para conversões, o evento de conversão selecionado também não pode ser alterado. Um erro na configuração obriga a reconstruir a campanha, por isso uma chamada de revisão antes do lançamento tem valor real.
A reação no X foi mista. Higman brincou com as chamadas intermináveis com representantes da Google, da Meta e do ChatGPT Ads, e outro utilizador observou que a OpenAI usa IA para o suporte mas pessoas para as vendas. Para o dono de uma loja, a conclusão prática é mais simples: se receber este email, a primeira chamada é o momento certo para perguntar se o acesso ao feed e a otimização para conversões estão ativos na sua conta.
A lista de países onde estes anúncios podem ser comprados cresceu depressa. A 18 de agosto de 2026 a OpenAI anunciou o ChatGPT Ads em 31 países europeus e nomeou a Alemanha, a França, a Espanha, a Itália, a Suécia, a Noruega, a Dinamarca, os Países Baixos e a Áustria, e uma atualização de 31 de agosto de 2026 indica que a compra autónoma através do Ads Manager já está disponível nos 31 mercados. A 21 de outubro de 2026 juntaram-se mais 26 países, num total de 89, com acesso através de parceiros tecnológicos ou do Ads Manager. Portugal não é nomeado em nenhuma destas duas publicações, por isso os dois comunicados não confirmam se uma loja portuguesa já pode anunciar no ChatGPT.
Como aparecem os anúncios dentro do ChatGPT segundo a OpenAI
A publicação da OpenAI sobre a sua abordagem à publicidade e ao alargamento do acesso ao ChatGPT define as regras que todas as colocações seguem. Os anúncios surgem no fim de uma resposta quando existe um produto ou serviço patrocinado relevante para a conversa em curso. São identificados e separados visualmente da resposta orgânica.
A mesma publicação enumera os compromissos que determinam o que os anunciantes podem e não podem comprar:
- Independência da resposta. Os anúncios não influenciam as respostas que o ChatGPT dá. Uma loja não pode pagar para ser mencionada no texto da resposta.
- Privacidade das conversas. As conversas ficam privadas em relação aos anunciantes, e a OpenAI afirma que não lhes vende dados dos utilizadores.
- Controlo do utilizador. As pessoas podem desativar a personalização dos anúncios e apagar os dados usados para publicidade.
- Públicos e temas excluídos. Os anúncios não são mostrados a contas de utilizadores com menos de 18 anos e não surgem junto de temas sensíveis como saúde, saúde mental ou política.
- Planos pagos. Os planos pagos mais caros continuam sem anúncios; a publicidade destina-se aos planos gratuitos e aos de preço mais baixo.
Isto desfaz um equívoco comum. As notícias sobre produtos patrocinados entrelaçados no raciocínio do modelo contradizem o que a OpenAI descreve: dois sistemas separados, uma resposta orgânica e um bloco de anúncio identificado por baixo dela. A visibilidade orgânica e a visibilidade paga são problemas distintos, e nenhuma compra a outra.
Como funciona a segmentação do ChatGPT Ads sem palavras-chave
A referência de segmentação de campanhas enumera quatro alavancas, e nenhuma delas é uma lista de palavras-chave:
| Alavanca | O que controla | Notas da documentação |
|---|---|---|
| Segmentação geográfica | Países ou IDs de localização, com exclusões | As campanhas com feed de produtos só suportam segmentação ao nível do país |
| Segmentação por plataforma | ios_app, android_app, web | web inclui navegadores móveis, não apenas computadores |
| Públicos personalizados | Listas de clientes com hash para inclusão, exclusão ou multiplicadores de licitação | As exclusões prevalecem quando um utilizador está nas duas listas |
| Sugestões de contexto | Descrições de produtos, casos de utilização ou necessidades para um grupo de anúncios | Não são palavras-chave de correspondência exata |
As sugestões de contexto são o que mais se aproxima da pesquisa de palavras-chave, e a documentação é explícita: não são palavras-chave. Descrevem o que um grupo de anúncios vende e a quem, por isso funcionam melhor quando escritas como um breve resumo do produto, e não como uma lista de frases de pesquisa.
A diferença entre incluir um público e aplicar um multiplicador de licitação pesa para lojas com uma lista de clientes. Incluir um público restringe a entrega aos utilizadores correspondentes. Um multiplicador de licitação aumenta a licitação para esses utilizadores, enquanto todos os outros continuam elegíveis. Uma loja que carrega os clientes antigos como público de inclusão deixa por completo de chegar a clientes novos; carregar a mesma lista como multiplicador não tem esse efeito.
Opções de licitação e objetivos de campanha no ChatGPT Ads
O guia de licitações e orçamentos separa três definições que os utilizadores do Google Ads costumam tratar como uma só: o objetivo da campanha (o que otimizar), o evento de faturação (o que paga) e a estratégia de licitação (quem define a licitação).
| Objetivo da campanha | Evento de faturação | Estratégia de licitação |
|---|---|---|
| Impressões | Impressão | Licitação fixa |
| Cliques | Clique | Licitação fixa ou maximizar cliques |
| Conversões | Clique | Licitação fixa ou maximizar conversões |
As campanhas de conversão otimizam para uma compra ou um lead, mas continuam a faturar cliques válidos. As duas estratégias de “maximizar” exigem um orçamento diário e nenhuma licitação máxima. Os multiplicadores de licitação por público só funcionam com licitações fixas.
Os valores monetários são expressos em três unidades diferentes ao longo da plataforma, e confundi-las é o erro de integração mais provável:
- Orçamentos e licitações usam micros: um milhão de micros equivale a uma unidade da moeda da conta. Uma licitação de 2,50 é enviada como 2500000.
- As licitações por impressão são por impressão, por isso um valor de CPM é dividido por 1000 antes da conversão para micros.
- Os valores dos eventos de conversão e os preços da Delta API usam unidades menores em números inteiros: 8900 significa 89,00 numa moeda com cêntimos.
- Os preços do feed CSV usam unidades maiores com o código da moeda, por exemplo
79.99 EUR.
A otimização para conversões precisa de exatamente um evento de conversão padrão ativo, como order_created. Os eventos personalizados podem ser medidos, mas não podem ser um objetivo de otimização. Como o objetivo e o evento selecionado ficam fixos no momento da criação, o trabalho de registo de conversões descrito mais abaixo tem de estar concluído antes de criar a primeira campanha de conversões.
Como criar um feed de produtos para o ChatGPT Ads a partir do WooCommerce
Os anúncios de compras no ChatGPT são construídos a partir de um feed de produtos. O guia de feeds de produtos descreve o fluxo: criar um feed através da Advertiser API, configurar o acesso SFTP com palavra-passe ou chave SSH e, depois, carregar um CSV em UTF-8 com uma linha por produto ou variante. Os ficheiros vão diretamente para a raiz do SFTP, sem subpastas, e cada produto deve aparecer uma única vez no conjunto dos ficheiros.
As definições dos campos estão no esquema do ficheiro de produtos da OpenAI, que é partilhado com a descoberta orgânica de produtos no ChatGPT. São obrigatórios nove campos base, e cada um corresponde sem dificuldade a dados do WooCommerce:
| Campo do feed | Origem no WooCommerce | Notas do esquema |
|---|---|---|
item_id | SKU do produto ou da variação, ou o respetivo ID | Estável, nunca reutilizado para outro artigo |
title | Nome do produto, incluindo a variação | Procure não passar dos 150 caracteres |
description | Descrição curta ou longa, sem etiquetas HTML | Texto simples, até cerca de 5000 caracteres |
url | Ligação permanente, com a variação selecionada sempre que possível | HTTPS público, mantido estável |
brand | Atributo ou taxonomia de marca | Uma marca real, não um marcador de posição |
seller_name | Nome da loja | O vendedor desta oferta |
image_url | Imagem principal desta variação | URL direto para JPEG ou PNG |
price | Preço normal | Unidades maiores mais moeda, por exemplo 79.99 EUR |
availability | Estado do stock | in_stock, out_of_stock, pre_order, backorder ou unknown |
Os produtos variáveis precisam de três campos extra em cada linha de variação: um group_id partilhado (o ID do produto principal serve), listing_has_variations definido como true e um variant_dict como {"color":"Black","size":"10"} construído a partir dos atributos da variação. O ID do grupo tem de ser diferente de cada ID de artigo.
Os identificadores merecem atenção. Desde o WooCommerce 9.1, os produtos disponibilizam get_global_unique_id(), o campo que surge na administração como GTIN, UPC, EAN ou ISBN. O esquema aceita um GTIN com exatamente 8, 12, 13 ou 14 dígitos e um dígito de controlo válido, e pede aos comerciantes que omitam o campo em vez de inventarem um valor. A alternativa é uma referência do fabricante (mpn) acompanhada da marca.
Duas flags decidem onde um produto pode aparecer. is_ads_eligible tem de ser true nos produtos que o sistema de anúncios deve processar; quando é omitido, o processamento de anúncios fica desligado, salvo se existir um valor por omissão ao nível do feed. is_eligible_search controla a descoberta orgânica e é independente da elegibilidade para anúncios.
No mundo WordPress assume-se muitas vezes que um feed XML do Google Shopping já gerado por um plugin pode ser reaproveitado. O caminho compatível com a Google previsto no esquema aceita ficheiros de texto delimitados por tabulações ou vírgulas com os nomes de coluna da Google, e só depois de a OpenAI confirmar esse formato para o feed registado. JSON, folhas de cálculo, XML, RSS e Atom não são suportados nesse caminho. A maioria das lojas vai precisar de uma exportação CSV dedicada.
/**
* Escreve um CSV de produtos do ChatGPT Ads para produtos simples e variações.
* Os nomes dos campos seguem 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; // Faltam campos obrigatórios: saltar em vez de enviar marcadores de posição.
}
$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' ), // Substitua por um atributo de marca real quando os produtos o tiverem.
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 );
}O carregamento em si é feito por SFTP, por isso basta uma tarefa cron ou um comando WP-CLI que escreva o ficheiro e o envie com o cliente SFTP do servidor. Depois de cada carregamento, o endpoint do histórico de carregamentos devolve um estado (completed, completed_with_errors, failed e outros) e as contagens de linhas aceites e rejeitadas, com códigos de diagnóstico como missing_required_column ou invalid_value. A OpenAI sublinha que um carregamento concluído não significa que todos os produtos possam ser exibidos.
Como manter preços e stock atualizados com a Delta API
O guia do feed separa as atualizações por tipo. As alterações ao título, ao preço ou à disponibilidade de um artigo existente passam pela Delta API, um pedido PATCH que envia apenas os campos alterados. Os produtos novos e as alterações a outros campos, como imagens ou descrições, exigem um novo carregamento do catálogo por SFTP.
A regra do stock é direta: um artigo marcado como out_of_stock deixa de ser elegível para entrega assim que a alteração se propaga, e volta a ser elegível depois de ser reposto como in_stock. A documentação avisa também que as datas de promoção e de disponibilidade no feed não agendam nada, por isso uma alteração de preço tem de ser enviada no momento em que acontece.
No WooCommerce, os pontos de disparo naturais são os hooks de stock de produtos e variações. O pedido precisa da chave da Advertiser API, que tem de ficar no servidor, junto dos outros segredos revistos numa auditoria de segurança WordPress. Em lojas onde é um ERP que gere o stock e os preços, a mesma chamada pertence à camada de integração do WooCommerce com o ERP, e não ao tema.
/**
* Envia uma alteração de stock para a Delta API do ChatGPT Ads.
* Endpoint e formato do payload: 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' );O ID do produto no pedido Delta é o group_id do catálogo quando as variantes estão agrupadas, e o item_id nos restantes casos. Uma atualização de preço usa a mesma estrutura, com price como objeto de unidades menores em números inteiros e moeda, por exemplo {"amount": 7999, "currency": "EUR"}. Uma resposta accepted: true confirma apenas a submissão; a alteração é aplicada de forma assíncrona. Mantenha a exportação CSV coerente com as alterações Delta, ou o próximo carregamento completo vai substituí-las por valores desatualizados.
Como instalar o Measurement Pixel do ChatGPT Ads no WordPress
O guia do Measurement Pixel pede um pequeno script de carregamento perto do topo do <head> em todas as páginas que devem registar conversões, inicializado com um Pixel ID criado no separador de conversões do Ads Manager. Nenhuma chave de API vai para o navegador. No WordPress, isso significa uma ação wp_head com prioridade antecipada, ou o espaço do head numa configuração de gestor de etiquetas já existente.
Três partes do guia exigem decisões antes da implementação:
- Consentimento. Por omissão, o pixel assume consentimento concedido, a menos que receba indicação em contrário. Para tráfego da UE, chame
oaiq("consent", false)antes da inicialização e mude para true quando o visitante aceitar a medição no banner de consentimento. Os eventos bloqueados não são reenviados mais tarde, e definir o consentimento como false remove os cookies do pixel. - Content Security Policy. Os sites com CSP têm de permitir
https://bzrcdn.openai.comemscript-srceconnect-src, ehttps://bzr.openai.comemconnect-srceimg-src. O guia desaconselha acrescentar'unsafe-inline'só por causa do pixel; use o mecanismo de nonce ou hash que o site já tem. - Cookies. Com consentimento, o pixel define
__oppref, que guarda o identificador de clique durante 30 dias, e__obref, uma referência aleatória do navegador que dura 365 dias. Ambos têm de constar da política de cookies.
Para uma loja, o evento que mais conta é order_created na página de encomenda recebida, com o total da encomenda em unidades menores e o número da encomenda como event_id.
add_action( 'woocommerce_thankyou', function ( $order_id ) {
$order = wc_get_order( $order_id );
if ( ! $order || $order->get_meta( '_oaiq_sent' ) ) {
return; // Evita um segundo evento quando a página é recarregada.
}
$order->update_meta_data( '_oaiq_sent', 1 );
$order->save();
$payload = [
'type' => 'contents',
'amount' => (int) round( $order->get_total() * 100 ), // Unidades menores para moedas com duas casas decimais.
'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() )
);
} );A multiplicação por 100 serve para moedas com duas casas decimais, como EUR ou USD. A documentação dá o JPY como exemplo em que 8900 significa 8900, por isso as lojas que vendem em moedas sem casas decimais têm de a omitir.
Como enviar encomendas WooCommerce através da Conversions API
O pixel depende do navegador: bloqueadores de anúncios, recusas de consentimento ou um separador fechado depois do pagamento podem fazer perder o evento. A Conversions API cobre essa falha ao enviar encomendas confirmadas a partir do servidor para https://bzr.openai.com/v1/events, com autenticação através de uma chave própria da Conversions API.
As regras documentadas traduzem-se numa lista de verificação curta para uma integração WooCommerce:
- Deduplicação. Use o mesmo Pixel ID, o mesmo nome de evento e o mesmo ID de evento que o pixel. A OpenAI guarda o primeiro evento que recebe para uma chave coincidente e ignora os duplicados posteriores.
- O identificador de clique. Ao contrário do pixel, a API não capta o
oppref. Leia-o do cookie__opprefdurante o checkout, guarde-o na encomenda e envie a cadeia original sem alterações. - Marcas temporais.
timestamp_msé o momento da compra em milissegundos Unix, e tem de estar dentro dos últimos 7 dias e não mais de 10 minutos no futuro. Uma fila que volte a tentar encomendas falhadas dias depois vai perdê-las. - Lotes. Até 1000 eventos por pedido, e um único evento inválido faz falhar o lote inteiro.
validate_only: trueverifica um payload sem o guardar. - Dados do cliente. Identificadores opcionais com hash melhoram a correspondência. Os emails são aparados e passados para minúsculas antes do hash SHA-256; os números de telefone mantêm o indicativo do país e perdem os símbolos e os zeros iniciais.
- Todas as encomendas, não só as marcadas. A OpenAI recomenda enviar todas as conversões, e não apenas as que têm
oppref, para que as conversões pós-visualização possam ser contadas.
// Guarda o identificador de clique na encomenda enquanto o cookie ainda está disponível.
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(), // O mesmo valor que o event_id do pixel.
'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 ] ] ),
] );
} );O hash do email só tem lugar em lojas cuja política de privacidade e configuração de consentimento cubram a partilha de identificadores com hash com uma plataforma de publicidade. Sem essa base legal, retire o bloco user; o evento continua a contar, com uma correspondência mais fraca.
Antes de colar o píxel, verifique também o que ele envia do seu lado. A análise da Buchodi de 20 de setembro de 2026 descreve o cookie __obi, que o ChatGPT define em .openai.com durante um ano e que regressa à OpenAI a partir dos sites dos anunciantes juntamente com os eventos de oaiq.min.js. O SDK consegue recolher sozinho dados de campos de formulário e da data layer do gestor de tags, e a correspondência automática estava ativa em 638 de 881 píxeis com configuração conhecida. Todos os tokens descodificados traziam consent_decision: analytics_allowed, ou seja, a OpenAI trata o cookie como analítico. Numa loja WooCommerce, carregue o píxel só depois do consentimento de marketing no seu próprio banner e desligue a correspondência automática se não quiser que o script leia os campos do checkout.
Em que difere a atribuição do ChatGPT Ads do registo por UTM
As ferramentas de análise que dependem de parâmetros UTM só veem os cliques nos anúncios do ChatGPT na medida em que os URL de destino estiverem marcados. A atribuição do ChatGPT Ads não depende de UTM. Usa a sua própria referência de clique, oppref, passada no URL da página de destino e guardada no cookie próprio descrito acima.
O modelo de atribuição documentado tem três partes:
- As conversões pós-clique são creditadas dentro da janela de clique configurada na definição do evento de conversão. O guia de configuração usa uma janela de 30 dias.
- As conversões pós-visualização, quando disponíveis para uma conta, usam uma janela fixa de um dia após uma impressão elegível. O Ads Manager apresenta-as como uma métrica de campanha separada; não entram no total de Conversões, e o CPA, as licitações e a faturação continuam baseados em cliques.
- Quando ambas se aplicam, o clique prevalece.
Para testes, o endpoint de monitorização devolve uma amostra de eventos de aproximadamente os últimos 15 minutos e mostra se cada um chegou por pixel_sdk ou por server_to_server. Uma compra de teste deve aparecer nos dois canais com o mesmo ID de evento, e apenas uma vez nas conversões reportadas.
A consequência prática para os relatórios é que os números do ChatGPT Ads e do GA4 não vão coincidir, e isso é intencional. O GA4 vê sessões e os UTM que acrescentar; o Ads Manager vê correspondências de oppref e créditos pós-visualização que o GA4 não tem forma de observar. Compare tendências, não totais.
Esquema Product nas páginas WooCommerce a par do feed de anúncios
A documentação do feed da OpenAI não menciona dados estruturados na página de produto, por isso não existe nenhuma regra documentada segundo a qual a marcação schema afete a entrega de anúncios no ChatGPT. Continua a contar para o lado orgânico: a Google usa os dados estruturados Product nas listagens de comerciantes, e uma única fonte de verdade para preço, disponibilidade e GTIN evita que o feed, a página e a marcação se contradigam.
O WooCommerce já gera marcação Product. O filtro abaixo acrescenta o GTIN a partir do campo nativo e torna a disponibilidade explícita, sem substituir os dados da oferta que o WooCommerce gera:
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 );A mesma regra de validação do GTIN aplica-se nos dois sítios: 8, 12, 13 ou 14 dígitos, nunca um valor inventado.
Como combinar a visibilidade orgânica no ChatGPT com o ChatGPT Ads
Como a OpenAI mantém os anúncios separados das respostas, a presença orgânica e a colocação paga exigem trabalho separado, e cada uma cobre uma lacuna que a outra não consegue cobrir.
- Respostas orgânicas. Ser citado na resposta depende de conteúdos e dados de produto que o ChatGPT consiga encontrar e em que possa confiar: guias claros, comparações, páginas de produto rigorosas e, no caso dos produtos,
is_eligible_searchno feed. Pagar anúncios não muda isto. - Colocação paga. O anúncio abaixo da resposta é o sítio onde uma loja pode aparecer em conversas comerciais mesmo sem uma menção orgânica. Funciona com o feed, as licitações e os dados de conversão descritos acima.
Uma loja que só compra anúncios depende do investimento para cada visita. Uma loja que só trabalha a visibilidade orgânica não tem forma de aparecer quando uma conversa está perto da compra e a resposta cita outra marca. Fazer as duas coisas, com um único fluxo de dados de produto a alimentar a elegibilidade para pesquisa e para anúncios, evita manter dois catálogos.
Katie Keith, da Barn2, publicou a 6 de outubro de 2026 um teste do ChatGPT Ads com quatro produtos da empresa, realizado de 1 de junho a 14 de julho de 2026. A Barn2 gastou 477 USD em seis semanas e obteve 370 cliques e zero conversões. Na mesma comparação, as visitas a partir de links em respostas orgânicas do ChatGPT duraram em média 443 segundos e geraram 5 vendas, enquanto as visitas vindas dos anúncios duraram 37 segundos e geraram 0 vendas. A própria Keith ressalva que um anunciante, seis semanas, quatro produtos e 370 cliques “não são um estudo” (tradução própria), por isso trata-se do resultado de um único teste, não de uma referência para o canal.
Lista de verificação da implementação para WordPress e WooCommerce
- Identificadores limpos. Dê a cada produto e variação um SKU estável, preencha o campo GTIN quando ele existir e nunca o preencha com marcadores de posição.
- Crie a exportação CSV. Mapeie os nove campos obrigatórios, acrescente
group_id,listing_has_variationsevariant_dictnas variações e definais_ads_eligibleproduto a produto. - Automatize o carregamento. Escreva o ficheiro de forma agendada, envie-o para a raiz do SFTP e consulte o histórico de carregamentos para ver as linhas rejeitadas.
- Ligue a Delta API. Envie as alterações de stock e de preço a partir do WooCommerce ou do ERP no momento em que acontecem, em unidades menores.
- Instale o pixel com consentimento. Carregue-o cedo no head, condicione-o ao banner de consentimento e atualize a CSP e a política de cookies.
- Acrescente a Conversions API. Capte o
opprefno checkout, envie as encomendas confirmadas com o mesmo ID de evento que o pixel e mantenha as duas chaves de API no servidor. - Crie as definições de conversão antes das campanhas. Escolha o evento padrão, verifique os eventos no endpoint de monitorização e só então crie uma campanha otimizada para conversões, porque o objetivo não pode ser alterado depois.







