- O tracking server-side no WooCommerce envia cada encomenda paga, a partir dos dados de encomenda da própria loja, para a Meta, o TikTok e outras plataformas de anúncios, por isso uma compra conta mesmo quando o pixel do navegador nunca dispara.
- A ROASaurus considera paga uma encomenda do WooCommerce quando o estado é processing ou completed, o que inclui as encomendas com pagamento contra reembolso e as transferências bancárias depois de as confirmar.
- O plugin da ROASaurus guarda o ID de visitante e os cookies do clique no anúncio em cada encomenda no checkout, por isso a encomenda fica associada exatamente ao seu clique no anúncio.
- Sem o plugin, os webhooks continuam a entregar todas as encomendas pagas, mas não há associação pela página de agradecimento: as encomendas só são associadas por um email indicado antes no site ou por um endereço IP e navegador únicos.
- No WooCommerce, o script da ROASaurus segue os plugins de consentimento que usam a WP Consent API, como o Complianz e o CookieYes, e os banners Cookiebot, OneTrust e IAB TCF.
O tracking server-side no WooCommerce envia cada encomenda paga, a partir dos dados de encomenda da sua loja, para a Meta, o TikTok e outras plataformas de anúncios, em vez de depender apenas de um pixel no navegador do comprador. A compra é reportada mesmo quando um bloqueador de anúncios trava o pixel ou o comprador nunca chega à página de agradecimento.
Este guia explica porque é que as lojas WooCommerce perdem conversões, os dados de encomenda que o WooCommerce fornece e as duas formas de ligar a ROASaurus: o plugin do WordPress ou os webhooks. Depois trata da associação, do consentimento, da configuração e dos testes. Para a ideia geral, leia o que é o tracking server-side.
Porque é que as lojas WooCommerce perdem conversões?
Um pixel do navegador só reporta uma compra quando o script do pixel carrega, o comprador chega à página de agradecimento e o navegador envia o evento. Cada passo pode falhar. A encomenda em si continua na sua base de dados, porque o WooCommerce a guarda no servidor.
| O que acontece | Pixel do navegador | Dados de encomenda no WooCommerce |
|---|---|---|
| O comprador paga por redirecionamento (por exemplo, PayPal ou uma app do banco) e fecha o separador | Sem página de agradecimento, sem evento de compra | Encomenda paga, estado processing |
| Um bloqueador de anúncios ou uma definição de privacidade bloqueia o script do pixel | Sem evento de compra | Encomenda paga |
| O visitante recusa os cookies de marketing | O pixel não pode carregar | Encomenda paga |
| Uma transferência bancária é confirmada três dias depois | Nenhum navegador está aberto nesse momento | O estado passa de on hold para processing |
| Um plugin de cache ou de otimização de scripts atrasa o pixel | O evento pode chegar atrasado ou faltar | Encomenda paga |
As compras em falta causam dois tipos de dano. A plataforma de anúncios otimiza com menos conversões, e os seus relatórios mostram um retorno mais baixo do que aquele que realmente obtém. Eis o segundo efeito em números, para uma loja de exemplo com um ROAS de break-even de 2.2:
| Loja de exemplo, um mês | Só o pixel | Todas as encomendas pagas |
|---|---|---|
| Investimento em anúncios na Meta | $8,000 | $8,000 |
| Compras a partir de cliques na Meta | 260 | 320 |
| Receita a $60 por encomenda | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| Face ao break-even (2.2) | Parece um prejuízo | Rentável |
O que o WooCommerce oferece: encomendas, webhooks e a REST API
Que estados de encomenda contam como pagos?
O WooCommerce descreve processing como pagamento recebido, com a encomenda à espera de ser expedida. A ROASaurus envia as encomendas com o estado processing ou completed e ignora as encomendas pending payment, on hold, failed, cancelled e refunded. Dois métodos de pagamento exigem atenção:
- Pagamento contra reembolso. O WooCommerce coloca estas encomendas em processing até o pagamento ser cobrado, por isso a ROASaurus envia-as quando são feitas. As encomendas com um produto para download são a exceção: ficam em on hold. Veja tracking de encomendas com pagamento contra reembolso para saber o que isso significa para as devoluções e as recusas.
- Transferência bancária. O WooCommerce coloca estas encomendas em on hold enquanto verifica o pagamento. A ROASaurus envia-as quando as passa para processing.
Webhooks
Um webhook é uma mensagem que o WooCommerce envia para outro sistema quando algo muda. Crie-o em WooCommerce › Settings › Advanced › Webhooks. Para um tópico de encomenda, o payload é o mesmo objeto de encomenda que a REST API devolve. Cada entrega traz um cabeçalho X-WC-Webhook-Signature: um hash HMAC-SHA256 em base64 do payload, feito com o segredo que escolher. A ROASaurus verifica essa assinatura antes de aceitar uma encomenda.
Dois detalhes importam na prática. O WooCommerce entrega os webhooks em segundo plano, por predefinição com o WP-Cron, por isso uma entrega pode atrasar-se quando essa fila anda atrasada. E o WooCommerce desativa um webhook depois de mais de cinco entregas falhadas seguidas.
REST API
A REST API permite à ROASaurus pedir ela própria as encomendas. Com uma chave de API só de leitura, a ROASaurus pede a cada 5 minutos as encomendas processing e completed alteradas desde a última verificação, com 30 minutos de sobreposição. As encomendas que já tem são ignoradas. Isto apanha qualquer encomenda que um webhook tenha falhado.
| Campo da encomenda | O que a ROASaurus faz com ele |
|---|---|
id | Torna-se o ID de evento order-1042, partilhado pelos eventos do servidor e do navegador |
total | O valor da compra: o total geral, incluindo impostos e portes |
| Email de faturação, telefone, nome, cidade, estado, código postal, país | Com hash SHA-256 e enviados como dados do cliente |
customer_ip_address, customer_user_agent | Enviados com o evento e usados para associar a encomenda a um visitante |
line_items | IDs de produto (o ID da variação quando existe), quantidades e preços |
date_paid_gmt | A hora do evento para as encomendas vindas de um webhook ou da REST API (a data de criação quando não há data de pagamento) |
meta_data | Com o plugin: o ID de visitante e os cookies da Meta e do TikTok |
Plugin ou webhooks: duas formas de ligar
Ambas as ligações enviam todas as encomendas pagas. Diferem na qualidade com que cada encomenda fica associada ao clique no anúncio que trouxe o comprador.
| Plugin da ROASaurus | Só webhooks | |
|---|---|---|
| O que instala | Um plugin do WordPress (PHP 7.4 e WooCommerce 6.0 ou superior) | Nada: um webhook nas definições do WooCommerce |
| Como chegam as encomendas | O plugin envia cada encomenda paga para a API de encomendas da ROASaurus | O WooCommerce envia Order updated; verificação opcional pela REST API a cada 5 minutos |
| Script de tracking | Carregado pelo plugin em todas as páginas | É adicionado por si, por exemplo com o plugin WPCode ou no seu tema |
| ID de visitante e cookies de clique na encomenda | Sim, guardados no checkout (checkout clássico e em blocos) | Não |
| Compra do navegador na página de agradecimento | Sim, com o mesmo ID de evento do evento do servidor | Não |
| Associação pela página de agradecimento | Sim | Não |
Pode usar as duas ao mesmo tempo. O plugin guarda o ID de visitante na encomenda como meta data da encomenda, e o payload do webhook leva-o consigo. A ROASaurus guarda cada encomenda uma só vez, pelo ID de encomenda do WooCommerce, por isso o plugin e o webhook nunca criam duas compras. O plugin também declara suporte para o High-Performance Order Storage do WooCommerce.
Como é que uma encomenda do WooCommerce é associada ao clique no anúncio?
Uma plataforma de anúncios só consegue atribuir uma compra a um anúncio quando consegue ligar os dois. A ROASaurus faz isso associando a encomenda ao visitante que clicou no anúncio, e esse visitante traz os IDs de clique (como o fbclid e o ttclid) e os parâmetros UTM da página de entrada. Experimenta estes métodos por ordem e para no primeiro que funciona:
- O ID de visitante guardado na encomenda. Só com o plugin. É uma ligação exata.
- A compra do navegador na página de agradecimento, que traz o mesmo ID de encomenda. Só com o plugin.
- Um email com hash que o visitante indicou antes no seu site, por exemplo num formulário pop-up do Klaviyo, do Attentive ou do Wisepops, ou através de uma chamada Identify.
- O mesmo endereço IP e navegador, vistos de 3 horas antes até 15 minutos depois da encomenda, mas só quando corresponde exatamente um visitante. Em redes partilhadas, como escritórios e operadoras móveis, vários visitantes partilham muitas vezes o mesmo endereço IP, e nesse caso a ROASaurus não adivinha.
A ROASaurus espera um pouco antes de enviar cada compra, para que o evento da página de agradecimento possa chegar primeiro. Se a encomenda continuar sem associação, tenta outra vez no momento do envio. A página Orders mostra o resultado por encomenda na coluna Matched by. As encomendas associadas pelo ID de visitante do plugin mostram cart, a mesma etiqueta que as encomendas do Shopify recebem.
| Enviado para a Meta para a encomenda 1042 | Associada (plugin) | Não associada (só webhooks) |
|---|---|---|
ID de evento order-1042 | Sim | Sim |
| Email, telefone, nome e morada com hash | Sim | Sim |
| Endereço IP e navegador da encomenda | Sim | Sim |
ID de clique da Meta e ID do navegador (fbc, fbp) | Sim | Não |
ID de visitante com hash (external_id) | Sim | Não |
| O clique no anúncio na atribuição da ROASaurus | Campanha e anúncio do clique | Mostrada como direta ou desconhecida |
Esses identificadores de clique aumentam a taxa de correspondência da Meta para o evento. O Event Match Quality explica como a Meta os pontua.
Consentimento no WooCommerce
Cada loja na ROASaurus tem a definição Respect visitor consent, que está ativada por predefinição. No WooCommerce, o script da ROASaurus lê a escolha do visitante a partir da WP Consent API, que plugins de consentimento como o Complianz e o CookieYes preenchem. Lê também os banners Cookiebot, OneTrust, IAB TCF e o Google consent mode. Enquanto o visitante não aceitar os cookies de marketing, o script não define ID de visitante e não carrega pixels do navegador.
Quando um visitante recusa, o script não define ID de visitante, não guarda IDs de clique e não dispara pixels do navegador, e o plugin não guarda cookies de tracking na encomenda. A encomenda paga continua a ser enviada a partir do servidor para as suas plataformas de anúncios ligadas, com dados do cliente com hash a partir da encomenda e com o endereço IP e o navegador da encomenda. Se o seu aconselhamento jurídico indicar que os eventos de compra também precisam de consentimento prévio, contacte a ROASaurus antes de ativar as compras server-side. A página de ajuda sobre consentimento tem os detalhes, e o artigo sobre Consent Mode v2 e RGPD aborda o enquadramento legal.
Como configurar o tracking server-side no WooCommerce
Estes são os passos para a via do plugin:
- Adicione a loja
Na ROASaurus, vá a Add a store, escolha WooCommerce e introduza o domínio que os seus clientes visitam.
- Crie uma chave de API
Abra Store settings e, em Orders API, clique em Create API key. Copie a chave de imediato: só é mostrada uma vez, junto à chave da sua loja. O endpoint é o endereço que antecede
/api/v1/ordersnessa página. - Instale o plugin
Descarregue o plugin e carregue o zip no WordPress em Plugins › Add New Plugin › Upload Plugin. Depois, ative-o.
- Introduza as chaves
Em WooCommerce › ROASaurus, introduza o endpoint, a chave da loja e a chave da API e guarde.
- Ligue as suas plataformas de anúncios
Em Tracking & platforms, use Connect with Facebook ou Add pixel para a Meta, o TikTok e as outras. Marque a opção de carregar também o pixel do navegador, para que os duplicados entre a compra da página de agradecimento e o evento do servidor sejam eliminados.
- Configure o consentimento e teste
Bloqueie o script na sua ferramenta de consentimento até o visitante aceitar os cookies de marketing e faça depois uma encomenda de teste.
Sem o plugin, adicione a tag de script de Tracking & platforms a todas as páginas e crie depois o webhook. O separador Connection da sua loja mostra o URL do seu webhook. Mantenha-o privado: qualquer pessoa com o URL pode enviar encomendas para a sua loja.
WooCommerce › Settings › Advanced › Webhooks › Add webhook Status Active Topic Order updated Delivery URL (your webhook URL from the Connection tab) Secret (a secret of your choice; paste the same one in ROASaurus) API version WP REST API Integration v3
Para a cópia de segurança, crie uma chave em WooCommerce › Settings › Advanced › REST API com acesso de leitura. Cole a consumer key e o consumer secret no separador Connection, guarde e clique em Test connection. O Fetch orders now vai buscar de imediato as encomendas pagas recentes. A página da integração com o WooCommerce lista todas as opções num só sítio.
Como se testa o tracking server-side no WooCommerce?
Teste primeiro o lado do navegador, depois faça uma encomenda e acompanhe-a até às plataformas de anúncios.
- Abra a sua loja com
?roasaurus=connectedno endereço. Um alerta confirma que o script corre. Com?roasaurus=debug, o script regista na consola do navegador o que envia. - No Event log, em Collected events, as visualizações de página devem mostrar um ID de visitante.
- Faça uma encomenda de teste. O pagamento contra reembolso é o mais rápido, porque a encomenda fica logo em processing.
- No separador Connection, Last order received mostra a hora da última encomenda.
- No Event log, em Server deliveries, cada plataforma ligada recebe uma linha com o estado sent e a resposta da plataforma.
PageView visitor 3f9c2a1eScript carregado com consentimentoPurchase order-1042Página de agradecimento, pixels do navegador disparadosorder 1042 processingRecebido do pluginMeta Purchase sentMesmo ID de evento, sem duplicadosTikTok CompletePayment sentMesmo ID de evento, sem duplicadosPara ver o evento na Meta, cole o código de Events Manager › Test events no campo Test event code do seu pixel da Meta na ROASaurus. Remova-o quando terminar, porque o código serve apenas para testes. Se o plugin não conseguir entregar uma encomenda, acrescenta uma nota de encomenda no WooCommerce que começa por “ROASaurus: order not sent”, seguida do erro.
Erros a evitar
- Usar o tópico Order created. As encomendas pagas por redirecionamento são criadas como pending payment. A ROASaurus ignora as encomendas por pagar, e não chega nenhuma segunda mensagem “created” quando o pagamento é recebido. Use Order updated.
- Um segredo que não coincide. A ROASaurus rejeita uma entrega cuja assinatura não coincide com o segredo que tem. Depois de mais de cinco falhas seguidas, o WooCommerce desativa o webhook. Corrija o segredo, volte a pôr o webhook em Active e adicione a chave da REST API, para que as encomendas do intervalo sejam obtidas.
- Duas ferramentas a enviar o mesmo pixel. Se outro plugin também enviar o seu pixel da Meta ou do TikTok, usa os seus próprios IDs de evento e a plataforma conta cada venda duas vezes. Desative-o para esse pixel. Veja como evitar a contagem em duplicado e eventos de compra duplicados.
- Esperar eventos de adicionar ao carrinho. No WooCommerce, o script regista por si só as visualizações de página. As visualizações de produto e os adicionar ao carrinho são detetados automaticamente apenas no Shopify. Um programador pode enviá-los com uma chamada track do
tlq. - Esperar conversões do Google Ads. A ROASaurus envia conversões de compra do Google Ads apenas a partir do checkout do Shopify. A partir do WooCommerce, envia compras para a Meta, o TikTok, o Snapchat, o Pinterest, o Reddit, o X, o Microsoft Ads, a Taboola, o LinkedIn e as outras plataformas de anúncios que ligar.
- Transferências bancárias tardias. A Meta aceita eventos do servidor até 7 dias depois da hora do evento. O plugin envia a encomenda com a data em que foi criada, por isso a Meta rejeita uma transferência confirmada mais de 7 dias depois do checkout. As encomendas que chegam por webhook ou pela REST API usam antes a data de pagamento. Note também que a página de agradecimento dispara a compra do navegador no checkout, antes de a transferência ser paga. Se o pagamento for confirmado mais de 48 horas depois, a Meta e o TikTok não conseguem unir as cópias do navegador e do servidor, e uma transferência que nunca é paga mantém a sua compra do navegador.
Quando as encomendas começarem a fluir, os relatórios de atribuição mostram de que campanhas e anúncios vieram.
Fontes
- WooCommerce: Webhooks Documentation
- WooCommerce REST API Documentation - WP REST API v3
- WooCommerce: Order Statuses Documentation
- WooCommerce: Cash on Delivery Documentation
- Meta for Developers: Server Event Parameters