- O tracking de conversões no CCV Shop é mais completo quando cada encomenda paga é enviada a partir dos dados de encomenda do CCV, no servidor, com um snippet na página de sucesso da encomenda que liga a encomenda ao clique no anúncio.
- Um clique em Create webhook faz com que o CCV Shop comunique cada encomenda no momento em que é marcada como paga, e cada envio tem de levar o token privado da sua loja.
- As encomendas do CCV Shop não incluem o endereço IP do comprador, por isso o snippet da página de sucesso da encomenda conta mais no CCV Shop do que na maioria das plataformas.
- A verificação de 5 minutos só analisa as encomendas criadas recentemente, por isso as encomendas pagas dias depois dependem do webhook: mantenha-o ativo.
- A Meta rejeita eventos de servidor com mais de 7 dias após a criação da encomenda, por isso uma transferência bancária muito tardia não chega à Meta.
O tracking de conversões no CCV Shop consiste em reportar cada encomenda paga da sua loja online CCV Shop a plataformas de anúncios como a Meta e o TikTok, para que atribuam o mérito aos anúncios certos e otimizem com base em vendas reais. A forma mais completa é enviar cada compra a partir dos dados de encomenda do CCV, no servidor, e acrescentar um pequeno snippet à página de sucesso da encomenda que liga a encomenda ao clique no anúncio.
O CCV Shop é uma plataforma de lojas online alojada da empresa neerlandesa CCV, que afirma gerir 17,000 lojas online. Este guia explica como a ROASaurus se liga a ela, como as encomendas são associadas aos cliques em anúncios, o que chega à Meta e ao TikTok, a configuração, os testes e como funcionam os pagamentos tardios. Para a ideia geral, leia o que é o tracking server-side.
Como se liga a ROASaurus ao CCV Shop?
A ROASaurus usa três partes do CCV Shop, todas descritas na documentação da API do CCV:
| Parte do CCV Shop | Para que a ROASaurus a usa |
|---|---|
| REST API, com uma chave pública e uma chave secreta | Lê cada encomenda paga e as suas linhas de encomenda |
Webhook para o evento orders.updated.ispaid | O CCV reporta uma encomenda no momento em que o seu estado de pagamento muda |
A página de sucesso da encomenda, com o Vertoshop.js | O snippet lê aí o ID da encomenda e associa a encomenda ao visitante |
Porque é que os pixels do navegador falham as compras do CCV Shop?
Um pixel do navegador só reporta uma compra quando o navegador do comprador carrega a página de sucesso da encomenda e o script do pixel é executado. Várias situações comuns impedem isso:
- O comprador paga por redirecionamento, por exemplo com iDEAL, e fecha o separador antes de a página de sucesso carregar.
- Um bloqueador de anúncios ou uma definição de privacidade do navegador bloqueia o script do pixel.
- O visitante recusa os cookies de marketing, pelo que o pixel não pode carregar.
- A encomenda é paga mais tarde, por transferência bancária ou na entrega, quando não há nenhum navegador envolvido.
Em todos estes casos, o CCV Shop continua a marcar a encomenda como paga. A ROASaurus envia essa encomenda a partir do servidor, por isso a compra é reportada aconteça o que acontecer no navegador. O snippet da página de sucesso tem outra função: diz à ROASaurus a que visitante, e por isso a que clique no anúncio, a encomenda pertence.
O webhook de encomenda paga e a verificação de 5 minutos
O que faz o Create webhook
Quando prime Create webhook, a ROASaurus regista um webhook do CCV para o evento orders.updated.ispaid, que o CCV aciona quando o campo paid de uma encomenda muda. O endereço é o URL de webhook da sua loja na ROASaurus, que contém a chave da sua loja e um token privado. O CCV não acrescenta a um webhook nada que identifique a loja, e a sua documentação aconselha a colocar um identificador no endereço. A chave da loja faz isso.
O CCV dá a cada webhook a sua própria chave secreta de 32 caracteres. Quando o CCV devolve essa chave, a ROASaurus guarda-a e, a partir daí, cada envio tem de trazer um cabeçalho x-hash válido. Cada envio tem também de trazer o token da sua loja. Quando a ROASaurus recebe um envio, ignora as encomendas que não estão pagas, lê a encomenda completa e as suas linhas através da API e só envia a encomenda quando o CCV diz que está paga.
Chamadas de API assinadas
O CCV exige que cada chamada de API seja assinada. A ROASaurus envia três cabeçalhos: x-public com a sua chave pública, x-date com a hora atual e x-hash. O CCV rejeita um carimbo de data/hora que difira mais de 5 minutos da hora do seu servidor. A sua chave secreta nunca é enviada.
API call (ROASaurus → CCV) x-hash = HMAC-SHA512( public_key|METHOD|uri|body|timestamp , secret_key ) Webhook (CCV → ROASaurus) x-hash = HMAC-SHA512( address|payload , webhook_key )
A verificação de 5 minutos
A cada 5 minutos, a ROASaurus pede também ao CCV as encomendas pagas criadas desde a última verificação, com 30 minutos de sobreposição, e regista as que ainda não tem. O CCV só filtra as encomendas pela data de criação. Assim, a verificação encontra as encomendas que são pagas pouco depois de feitas, e uma encomenda paga dias depois chega à ROASaurus apenas pelo webhook.
O CCV considera sucesso uma resposta 200, 201, 202 ou 204. Mantém um envio em aberto e volta a tentá-lo na ocorrência seguinte após uma resposta 307, 408, 503 ou 504, e marca qualquer outra resposta como falhada. Espera 2 segundos por uma ligação e 5 segundos pela resposta.
Como é que uma encomenda do CCV Shop fica associada ao clique no anúncio?
Para atribuir o mérito a um anúncio, a plataforma precisa dos identificadores de clique do visitante que fez a encomenda, como o ID de clique da Meta (fbc) e o ID de clique do TikTok (ttclid). O script da ROASaurus guarda-os para cada visitante quando chega a partir de um anúncio. A ROASaurus não obtém esse ID de visitante a partir da encomenda do CCV, por isso associa as encomendas aos visitantes por outras vias:
| Método | No CCV Shop | Como funciona |
|---|---|---|
| 1. Snippet da página de sucesso da encomenda | Sim | Lê o ID da encomenda com Vertoshop.getOrder().getId(), mais o total da encomenda e a moeda, e dispara uma compra da ROASaurus com o ID de evento order-58213 |
| 2. Email anterior | Sim | Um email com hash que o visitante indicou antes no seu site, num formulário em popup ou através de uma chamada Identify |
| 3. Endereço IP e navegador | Não | As encomendas do CCV Shop não incluem o endereço IP nem o navegador do comprador, por isso esta alternativa não tem nada para comparar |
A ROASaurus espera um pouco antes de enviar cada compra, para que o evento da página de sucesso possa chegar primeiro, e volta a tentar a associação no momento do envio. A página Orders mostra o resultado por encomenda na coluna Matched by: thank_you, email ou not matched.
Uma encomenda que não fica associada segue na mesma para as suas plataformas de anúncios com os dados do cliente com hash da encomenda. Não tem identificadores de clique e, como as encomendas do CCV não trazem endereço IP nem navegador, também não tem nada disso. Isso reduz a percentagem de eventos que a Meta consegue associar a uma pessoa; o artigo Event Match Quality explica como a Meta pontua isto. Na atribuição da ROASaurus, uma encomenda sem associação aparece como direta ou desconhecida.
O que chega à Meta e ao TikTok a partir de uma encomenda do CCV?
| Dados da encomenda do CCV | Enviado como |
|---|---|
id | O ID de evento order-58213 e o ID da encomenda |
total_price, currency | Valor e moeda (EUR quando o CCV não indica moeda) |
create_date | A hora do evento |
| Email, telemóvel ou número de telefone, nome e apelido do cliente | Com hash SHA-256 |
| Cidade, código postal e código do país de faturação | Com hash SHA-256 |
| ID do cliente | ID externo com hash |
| Linhas da encomenda: número do produto, ID do produto, quantidade, preço e nome | Produtos com ID, quantidade e preço |
| Endereço IP e navegador | Não consta das encomendas do CCV: obtido a partir do evento da página de sucesso ou do visitante associado |
A Meta recebe um Purchase através da sua Conversions API e o TikTok um CompletePayment através da sua Events API, ambos com o ID de evento order-58213. O TikTok mostra agora o CompletePayment como Purchase nos seus relatórios. Quando assinala a opção de carregar também o pixel do navegador, o snippet da página de sucesso dispara os mesmos eventos no navegador com o mesmo ID de evento, e a Meta e o TikTok ficam com uma só cópia. As mesmas encomendas vão para o Snapchat, o Pinterest, o Reddit, o X, o Microsoft Ads, a Taboola, o LinkedIn e as outras plataformas de anúncios quando as ligar. As conversões de compra do Google Ads só são enviadas a partir do checkout do Shopify, por isso a ROASaurus não as envia a partir do CCV Shop.
Como configurar o tracking de conversões no CCV Shop
- Adicione a loja na ROASaurus
Vá a Add a store, escolha CCV Shop e introduza o endereço da sua loja. O separador Connection mostra então a sua tag de script e o snippet da página de sucesso.
- Encontre as suas chaves de API
No CCV Shop, vá a My webshop › Settings › General › API settings e clique em New API key. Se não vir esta opção, instale primeiro a app de API na CCV App Store.
- Adicione o script a todas as páginas
Cole a tag de script no Header HTML da sua loja. O centro de ajuda do CCV indica-o em Mijn webshop › Instellingen › Lay-out › Layout, no fundo da página. Um bloco de código de app no cabeçalho também funciona.
- Adicione o snippet à página de sucesso
Vá a Mijn webshop › Instellingen › Algemeen › Teksten, abra o texto mostrado depois de a encomenda ser feita, mude para Source e cole aí o snippet. O CCV Shop executa-o então na página de confirmação da encomenda.
- Ligue a API
No separador Connection, introduza a chave pública e a chave secreta. Preencha o Shop URL só quando a sua API estiver noutro domínio que não o da sua loja. Guarde, prima Test connection e depois Create webhook.
- Ligue as suas plataformas de anúncios
Em Tracking & platforms, use Connect with Facebook ou Add pixel para a Meta e Add pixel para o TikTok. Assinale a opção de carregar também o pixel do navegador.
Consentimento
Fora do Shopify, o script da ROASaurus lê a escolha do visitante a partir de ferramentas de consentimento comuns: Cookiebot, OneTrust, banners IAB TCF e Google consent mode. Com outro banner de cookies, chame tlq('consent', true) quando o visitante aceitar os cookies de marketing e tlq('consent', false) quando os recusar. Enquanto o visitante não aceitar, não tem ID de visitante nem IDs de clique e nenhum pixel do navegador dispara. A encomenda paga continua a ser enviada a partir do servidor, com dados do cliente com hash a partir da encomenda. A página de ajuda sobre consentimento explica os detalhes.
Como se testa o tracking de conversões no CCV Shop?
- Abra a sua loja com
?roasaurus=connectedno endereço. Um alerta confirma que o script está a funcionar. O?roasaurus=debugregista 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 e pague-a, ou marque-a como paga. Em Collected events, o Event log deve mostrar um Purchase com o ID da encomenda do CCV nos seus dados. Se não aparecer, o snippet da página de sucesso não foi executado.
- No separador Connection, o Last order received mostra a encomenda e o Last sync a última verificação de 5 minutos, com qualquer erro do CCV.
- Em Server deliveries no Event log, cada plataforma ligada tem uma linha com o estado sent e a resposta da plataforma.
PageView visitor 51c0e9a7Script em todas as páginasPurchase order-58213Snippet da página de sucesso da encomendawebhook orders.updated.ispaidAssinatura verificada, encomenda pagaMeta Purchase sentAssociada por thank_youTikTok 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 e remova-o quando terminar.
Pagamentos tardios e outros limites
As transferências bancárias e o pagamento contra reembolso são pagos depois de a encomenda ser feita. Eis o que acontece a uma encomenda de exemplo paga por transferência bancária, a partir do dia em que é feita:
| Quando | O que acontece | Resultado |
|---|---|---|
| Dia 0, no checkout | A encomenda é criada, não paga | Não enviada: a verificação de 5 minutos só pede encomendas pagas |
| Dia 0, cerca de 35 minutos depois | A hora de criação da encomenda sai da janela da verificação | A partir daqui, só o webhook a pode reportar |
| Dia 3 | Marca a encomenda como paga | O webhook chega, a ROASaurus envia-a. A hora do evento, Dia 0, tem 3 dias: a Meta aceita-a |
| Dia 9, em vez disso | Marca a encomenda como paga | O webhook chega, a ROASaurus envia-a. 9 dias é mais de 7: a Meta rejeita-a |
- Pagamento contra reembolso. A ROASaurus envia estas encomendas quando o CCV as marca como pagas, normalmente depois da entrega. Veja o tracking do pagamento contra reembolso para saber quando contar essas encomendas.
- Compras no navegador antes do pagamento. O snippet da página de sucesso é executado quando a encomenda é feita, por isso os pixels do navegador reportam uma encomenda por transferência bancária antes de ser paga. Se o pagamento chegar mais de 48 horas depois, a Meta e o TikTok não conseguem juntar as cópias do navegador e do servidor.
- Sem alternativa por IP. Adicione o snippet da página de sucesso e, sempre que puder, capte os emails mais cedo no seu site.
- Os cancelamentos e reembolsos não são enviados. Depois de enviada, uma compra fica na plataforma de anúncios.
- Só visualizações de página, sem código. As visualizações de produto e as adições ao carrinho são detetadas automaticamente apenas no Shopify. No CCV Shop, um programador pode enviá-las com uma chamada de track
tlq.
A página da integração com o CCV Shop reúne num só local os dados da ligação, e a página de ajuda para outras lojas online compara o CCV Shop com as outras plataformas a que a ROASaurus se liga, como o Lightspeed.
Fontes
- CCV Shop: API Documentatie
- CCV: Webshop API
- Meta for Developers: Server Event Parameters
- Meta for Developers: Handling Duplicate Pixel and Conversions API Events
- TikTok Ads Manager: About Event Deduplication
Na ROASaurus
- Integração com o CCV Shop
- Ajuda: Wix, Lightspeed e outras lojas online
- Tracking server-side
- Integração com a Meta