
Trackeamento na Shopify: por que o evento de compra pode sumir no checkout
Entenda por que um Web Pixel da Shopify pode bloquear fetch/XHR para um endpoint same-origin no checkout. Veja como diagnosticar eventos e validar o caminho até a venda.
A compra desapareceu no checkout da Shopify?
Receber page_viewed ou outros eventos da vitrine não prova que a compra chegou ao seu coletor. Os Web Pixels da Shopify executam em ambientes isolados, e o método e o destino da requisição fazem diferença. Em um teste publicado pela Stape em 19 de outubro de 2026, chamadas fetch e XHR do checkout para um endpoint no domínio da loja falharam com RestrictedUrlError, enquanto o envio para um subdomínio de coleta funcionou. Esse resultado orienta a investigação; não é uma regra universal nem um teste feito por mim na sua loja.
Imagine uma loja com 100 pedidos no painel da Shopify e um relatório de mídia com menos compras. A reação comum é abrir o gerenciador de anúncios e conferir a API de Conversões. Mas antes cabe perguntar: em que etapa o evento desapareceu? Uma visualização de produto capturada na vitrine não comprova que o checkout enviou a compra. E um Purchase recebido na plataforma não comprova que ele corresponde a um pedido real, único e com valor correto.
Este guia separa essas etapas, mostra como reproduzir uma falha com um pedido identificado e ajuda a decidir quando uma rota de coleta diferente faz sentido. O objetivo é trocar o diagnóstico “o pixel parece verde” por uma verificação que acompanha a venda de ponta a ponta.
Rastreamento e trackeamento são etapas diferentes
Rastreamento é coletar e armazenar a jornada na sua base própria. Trackeamento é informar às plataformas de tráfego os eventos e dados válidos que você decidiu compartilhar. A distinção evita procurar a falha na Meta ou no Google quando o evento nem chegou à sua estrutura.
“O rastreamento deixa a pessoa inteligente. O trackeamento deixa a plataforma inteligente.
Se o pedido existe na Shopify, mas o evento não entrou no coletor, investigue a coleta, o contexto do Web Pixel e o destino da requisição. Se o evento entrou na base, mas não aparece na plataforma, investigue o processamento, o mapeamento e a entrega à plataforma. A mesma diferença vale para qualquer fornecedor de servidor, gateway ou ferramenta de tags.
Infográfico: os cinco pontos de prova de uma compra

Infográfico com cinco etapas para diagnosticar compra Shopify: vitrine, checkout, transporte, base própria e plataforma
- A — Etapa: Vitrine; Pergunta que precisa de prova: Houve eventos de navegação e carrinho?
- B — Etapa: Checkout; Pergunta que precisa de prova: O Web Pixel recebeu checkout_completed?
- C — Etapa: Transporte; Pergunta que precisa de prova: A requisição saiu do sandbox e alcançou o coletor?
- D — Etapa: Base própria; Pergunta que precisa de prova: O pedido foi persistido e tratado contra duplicatas?
- E — Etapa: Plataforma; Pergunta que precisa de prova: Meta ou Google recebeu valor, moeda e identificadores coerentes?
Fluxo visual: vitrine → checkout da Shopify → coletor → base própria → plataforma de tráfego. O quadro é um roteiro de diagnóstico, não uma afirmação de que toda loja usa exatamente esses componentes. O catálogo oficial da Shopify distingue page_viewed, checkout_started e checkout_completed. Não substitua um pelo outro apenas para fazer um relatório bater. Para testar compra, comece por um pedido concluído e pelo evento correspondente.
Por que a vitrine pode funcionar enquanto o checkout falha?
Na vitrine, um script do tema pode executar no contexto normal da página. Já os Web Pixels da Shopify recebem eventos por uma API e operam em sandbox. Extensões de app usam um ambiente strict baseado em web worker; pixels personalizados usam um lax sandbox em iframe. A documentação oficial avisa que recursos comuns do navegador podem se comportar de outra forma ou não funcionar nesse isolamento.
Há duas ideias que costumam ser misturadas. Same-origin descreve a combinação de protocolo, host e porta. Uma página em loja.exemplo.com e uma rota /coleta nesse mesmo host compartilham a origem do ponto de vista das URLs. Contexto de execução descreve de onde o código realmente tenta fazer a requisição. Uma URL no domínio da loja não faz o Web Pixel do checkout virar um script normal do tema.
A Shopify documenta a arquitetura dos sandboxes, mas não estabelece nessa página uma regra universal para o erro específico RestrictedUrlError. O experimento sobre esse erro foi da Stape, que testou métodos de envio e destinos. Tratar as fontes separadamente é importante: a documentação oficial explica o modelo; o teste do fornecedor mostra um comportamento observado em uma configuração.
O que o teste da Stape mostrou
No experimento publicado em 19/10/2026, um endpoint same-origin no domínio da loja e um subdomínio de coleta foram testados no checkout. O resultado reportado foi este:
- Imagem GET — Endpoint no domínio da loja: Funcionou no teste; Subdomínio de coleta: Funcionou no teste
- sendBeacon — Endpoint no domínio da loja: Funcionou no teste; Subdomínio de coleta: Funcionou no teste
- fetch POST — Endpoint no domínio da loja: RestrictedUrlError; Subdomínio de coleta: Funcionou no teste
- XHR POST — Endpoint no domínio da loja: RestrictedUrlError; Subdomínio de coleta: Funcionou no teste
“Algum evento chegou” não equivale a “todos os métodos funcionam”. Um pixel de imagem pode gerar sinais visíveis enquanto uma chamada programática usada para outro evento falha. No experimento, o erro ocorreu antes de fetch ou XHR alcançar o servidor. Se o coletor não recebeu nada, editar a tag da Meta que roda depois do coletor não resolve essa primeira falha.
O teste não diz que toda loja Shopify terá o mesmo resultado. Tipo de pixel, código, endpoint, consentimento, CORS, configurações e mudanças da plataforma precisam ser examinados na implementação concreta. Também não transforma o subdomínio em solução automática para pedidos ausentes por outras causas.
Exemplo: dois pedidos com sintomas parecidos e causas diferentes
Suponha que o pedido de teste #EXEMPLO-1042 foi concluído às 14h05. Na vitrine aparecem page_viewed e product_added_to_cart; o Web Pixel do checkout recebe checkout_completed. Ao fazer fetch para loja.exemplo.com/coleta, o console mostra RestrictedUrlError. O coletor não registra entrada e a base própria não possui o pedido. Nesse cenário ilustrativo, a primeira hipótese está no transporte entre os pontos B e C do infográfico. Ajustar o valor da compra na tag da Meta ainda não alcança a causa.
Agora suponha que o pedido #EXEMPLO-1043 chega ao coletor, aparece na base, mas a plataforma conta duas compras. O transporte funciona. A investigação passa para deduplicação, identificadores de evento e regras de envio. O mesmo sintoma superficial — contagem errada — exige uma correção diferente. Essas histórias são exemplos didáticos, não resultados de uma loja auditada por mim.
Por fim, se a Shopify registra o pedido e você não observa checkout_completed, antes de condenar o endpoint verifique se o pixel está configurado para receber esse evento e se as escolhas de privacidade permitem sua execução. Em regiões que exigem consentimento, a Shopify explica que callbacks de extensões de app são executados após a autorização; eventos anteriores podem ser reproduzidos depois. O teste precisa considerar esse contexto.
Como eu investigaria uma compra ausente
- Começaria por um pedido de teste identificado. Anotaria horário, ID, valor e moeda esperados, sem expor dados pessoais em prints ou logs públicos.
- Separaria vitrine e checkout. Testaria as duas etapas no mesmo fluxo, porque um evento da vitrine não comprova a coleta do checkout.
- Anotaria o tipo de Web Pixel. Extensão de app e pixel personalizado usam ambientes distintos; não presuma que uma observação vale igualmente para os dois.
- Olharia método, URL e erro. No ambiente de teste, conferiria se o envio usa imagem, sendBeacon, fetch ou XHR e se vai ao domínio da loja ou ao subdomínio. Procuraria RestrictedUrlError sem supor que todo erro de console tenha a mesma causa.
- Conferiria o recebimento no servidor. Se a requisição saiu, olharia resposta HTTP, CORS, parse e persistência. Se foi bloqueada antes de sair, não começaria pela tag de destino.
- Reconciliaria a venda. Compararia pedido, evento na base própria e envio à plataforma, usando identificadores estáveis e evitando Purchase duplicado.
- Repetiria com os cenários relevantes. Consentimento, desktop, celular e métodos usados de verdade pela estrutura podem alterar a conclusão. Um teste isolado traz uma pista; repetição traz confiança.
Uma tabela simples torna a evidência comparável:
- #EXEMPLO-1042 — Evento Shopify: checkout_completed; Transporte: fetch para domínio da loja; erro; Coletor: Não recebeu; Base própria: Sem registro; Plataforma: Sem envio
- #EXEMPLO-1043 — Evento Shopify: checkout_completed; Transporte: fetch para subdomínio; Coletor: Recebeu; Base própria: Uma compra; Plataforma: Uma compra
Essas linhas são hipotéticas. O valor da tabela é exigir uma evidência em cada coluna. Quando uma coluna fica vazia, você sabe onde continuar. Registre valor e moeda na conferência privada, mas não publique dados de comprador, tokens ou payloads integrais.
Quando considerar duas rotas de coleta
Se o teste demonstrar que o endpoint same-origin funciona na vitrine e fetch ou XHR falha no Web Pixel do checkout, vale avaliar uma rota específica para o checkout em um subdomínio de coleta, como no arranjo híbrido descrito pela Stape. A seleção da rota precisa ocorrer antes da requisição. Depois é necessário conferir DNS, CORS, recebimento, consentimento e o destino final do evento.
- Vitrine — Rota possível: loja.exemplo.com/coleta; Destino final: Coletor → base própria → plataformas
- Checkout — Rota possível: coleta.exemplo.com; Destino final: Coletor → base própria → plataformas
O desenho reúne duas entradas na mesma estrutura. Um HTTP 200 do subdomínio prova que uma chamada foi aceita; ainda é preciso conferir que a venda foi persistida corretamente e enviada uma única vez. Antes de mudar uma operação publicada, documente o estado atual, teste em ambiente apropriado e mantenha caminho de reversão.
Também não basta trocar a URL para perseguir uma suposta melhora de atribuição. No sandbox, cookies e contexto podem diferir dos da vitrine. O que importa é verificar quais identificadores realmente acompanham o evento, quais podem ser associados ao pedido e o que é permitido pelo consentimento do comprador.
Minha regra de decisão é simples: o relato da Stape vira uma hipótese, não uma ordem de migração. Se o pedido existe, o evento chega à base e a plataforma recebe uma compra coerente, há pouco motivo para alterar a rota só por tendência. Se uma lacuna aparece repetidamente no mesmo ponto, corrija aquela etapa, repita o teste e compare os resultados. É assim que a operação deixa de depender de uma “nota do pixel” e passa a saber explicar cada compra.
Perguntas frequentes
Se o PageView chega, a compra está sendo medida?
Não necessariamente. page_viewed e checkout_completed são eventos diferentes e podem usar contextos e métodos distintos. Valide a compra a partir de um pedido concluído até o coletor, a base e a plataforma.
RestrictedUrlError significa que meu servidor caiu?
Não por si só. No teste da Stape, o erro ocorreu antes de fetch ou XHR sair do ambiente do Web Pixel. Confira método, URL e logs antes de atribuir a falha ao servidor.
Toda loja Shopify precisa de um subdomínio para o checkout?
Não é possível concluir isso do teste de um fornecedor. O subdomínio é alternativa para o cenário em que o método usado no checkout é bloqueado na rota same-origin e funciona na rota alternativa.
Qual evento padrão representa uma compra concluída?
A Shopify descreve checkout_completed como o evento de conclusão da compra. A confirmação operacional exige conciliá-lo com o pedido e com o envio realizado depois pela sua estrutura.
A falha é de rastreamento ou de trackeamento?
Se o evento não chega à sua base, há primeiro uma lacuna no rastreamento. Quando ele está na base, mas não chega corretamente à Meta ou ao Google, investigue o trackeamento. São etapas ligadas, mas exigem provas diferentes.
Fontes e limite da análise
- Shopify Developers, About web pixels: https://shopify.dev/docs/apps/build/marketing/pixels
- Shopify Developers, Web Pixels API: https://shopify.dev/docs/api/web-pixels-api
- Shopify Developers, Standard Events: https://shopify.dev/docs/api/web-pixels-api/standard-events
- Stape, Shopify same-origin tracking, 19/10/2026: https://stape.io/blog/shopify-same-origin-tracking
O comportamento de RestrictedUrlError e a comparação de métodos vêm do teste da Stape. Não são medições da minha operação nem regra universal afirmada pela documentação da Shopify. O diagnóstico de uma loja específica depende de pedidos e logs próprios.















