Bruno.
Meta AdsCAPIStapeTrackingTutorial

Como configurar a Conversions API da Meta em 2026

Tutorial completo de instalação de Meta Conversions API via Stape: setup do container server, configuração do Pixel + CAPI, deduplicação por event_id, EMQ acima de 8. Com screenshots e troubleshooting.

Bruno Matos··16 min

Há uns tempos abri uma conta Meta Ads de um cliente e o tracking estava só com o Pixel. Sabes o que é o Pixel? É um bocadinho de código que vive no browser da pessoa e avisa a Meta cada vez que alguém compra ou preenche um formulário. O problema é que desde o iOS 14 muitos browsers bloqueiam esse aviso, e a Meta deixa de ver metade das vendas.

A solução chama-se Conversions API (CAPI). Em vez de o aviso sair do telemóvel da pessoa, sai do teu servidor diretamente para a Meta (é a isto que chamam server-side). É um caminho que ninguém bloqueia. Em 2026, qualquer conta a sério precisa disto.

Há três formas de instalar CAPI. O Stape (a mais simples, e a que vou usar aqui), o GTM Server-Side em Cloud Run (mais flexível, mas dá mais trabalho) e a Direct API server-to-server (só compensa para volumes muito grandes, acima de 10M eventos/mês). Vamos pelo Stape, que resolve 90% dos casos.

Porque escolho o Stape

O Stape é um GTM Server-Side já montado por eles. Em vez de andares a configurar servidores na Google Cloud, eles tratam da parte chata da infraestrutura por ti.

Em 2026 o plano gratuito dá 1M de pedidos por mês, o que chega para a maioria dos negócios que gastam menos de €10k/mês em anúncios. O plano Pro (€49/mês) sobe para 10M e dá-te subdomínio próprio, containers ilimitados e logs mais detalhados.

Podias montar tudo à mão no Cloud Run e terias controlo total. Mas ficavas com o servidor às costas: escalar, monitorizar, pagar a fatura (€20 a €80/mês), tratar do DNS e do SSL. Para quase toda a gente, o Stape compensa.

Passo 1: criar conta no Stape e o container

Vai a app.stape.io e cria conta. Escolhe o plano Free para começar. Depois cria um container novo (pensa no container como a caixa onde toda a configuração vai viver):

  • Container name: obruno-pt-server (mete um nome que percebas depois)
  • Location: Europe (para clientes europeus é o melhor, fica mais rápido e respeita o RGPD)

No fim recebes um URL do container parecido com https://yourcontainer.eu.stape.io. É este endereço que vai receber os eventos.

Passo 2: subdomínio próprio (opcional, mas vale a pena)

Por defeito o tráfego vai para *.stape.io. Se usares um subdomínio teu, os cookies aguentam mais tempo (em iOS 17+ isso conta) e tens melhor first-party tracking, ou seja, a medição corre pela tua própria casa em vez de uma morada estranha. Faz-se assim:

  • No Stape: Settings → Custom Domain → adicionar gtm.obruno.pt
  • No teu DNS provider: criar CNAME gtmtracking.stape.io
  • Aguardar propagação (5-30 min)

Com isto, os pedidos passam a sair de gtm.obruno.pt e não de um domínio estranho. Os ad blockers tropeçam menos e o teu EMQ sobe um bocadinho.

Passo 3: criar o container Server no GTM

Vai a tagmanager.google.com e faz isto:

  • Cria um container novo do tipo “Server”
  • Quando perguntar “Manually provision tagging server”, cola a Container URL do Stape
  • O GTM dá-te uma Container Config (uma string longa que vais colar no Stape)

Volta ao Stape, vai a Settings → Container Configuration, cola a string e grava. Em 1 a 2 minutos fica ativo.

Passo 4: pôr o Pixel a enviar para o servidor

No teu GTM Web container (atenção, é o Web, não o Server) edita a tag do Meta Pixel:

fbq('init', 'PIXEL_ID');
fbq('set', 'agent', 'tmgoogletagmanager', 'PIXEL_ID');
fbq('track', 'PageView');

O mais importante vem agora. Nas tags de conversão (Purchase, Lead, AddToCart), em “Object Properties”, passa um event_id gerado na hora. Pensa no event_id como o bilhete de identidade do evento: é o que vai permitir à Meta perceber depois que o aviso do browser e o aviso do servidor são a mesma venda. Exemplo:

const eventId = crypto.randomUUID();
fbq('track', 'Purchase', {
  value: 99.50,
  currency: 'EUR',
  content_ids: ['SKU-123'],
}, { eventID: eventId });

// E push para dataLayer para o server container ler
dataLayer.push({
  event: 'purchase_server',
  event_id: eventId,
  value: 99.50,
  currency: 'EUR',
  email: '{{User Email Hashed}}',
});

Passo 5: criar a tag CAPI no container Server

Volta ao container Server do GTM. Vai a Templates → Search Gallery e procura “Meta Conversions API Tag” (é o template oficial da Meta, gratuito). Importa.

Depois cria uma tag nova:

  • Tag type: Meta Conversions API
  • Pixel ID: o teu
  • API Access Token: vai a Events Manager → o teu pixel → Settings → Generate Access Token. Copia para o GTM.
  • Event Name: {{Event}} (referência ao GTM event)
  • Event Source URL: {{Page URL}}
  • Event ID: {{Event ID}} (lido do dataLayer)

Passo 6: mapear bem o user_data

O user_data é onde está o ouro. São os dados da pessoa que ajudam a Meta a perceber a quem pertence aquela venda. Quantos mais campos enviares, melhor a Meta consegue fazer o match, e mais alto fica o EMQ. Não te preocupes com privacidade: o template já transforma tudo num código ilegível (chama-se hashing SHA256) antes de sair.

  • em (email), sempre que tiver
  • ph (phone), sempre que tiver
  • fbp, cookie _fbp do browser
  • fbc, query string fbclid ou cookie _fbc
  • client_ip_address, IP do request (auto)
  • client_user_agent, User-Agent (auto)
  • ge (gender), db (DOB), fn/ln (first/last name), ct/st/zp/country, quando disponível

Quantos mais campos reais enviares, maior o EMQ. O objetivo em produção é chegar a 8 ou mais.

Passo 7: não contar a mesma venda duas vezes

Isto é o ponto onde mais gente se queima. O Pixel e a CAPI têm de enviar o mesmo event_id para o mesmo evento. Quando isso acontece, a Meta percebe que é a mesma venda e conta uma vez só (a isto chama-se deduplicação). Se te esqueceres, ficas com vendas a dobrar e o algoritmo passa a otimizar com base em números errados.

Para confirmar: Events Manager → Test Events → envia 1 evento de teste. Deve aparecer com origem Server e Browser e o ícone de deduplicação visível.

Passo 8: testar com o Test Events

Events Manager → Test Events → gera um Test Event Code. Volta ao GTM e adiciona-o como variável temporária na tag CAPI, a disparar em todas as conversões.

Agora faz uma compra ou um lead de teste no site a sério. Em segundos aparece no Test Events com:

  • Event name correto
  • Source: Server + Browser
  • Deduplicação:
  • EMQ score por parâmetro user_data

Se aparecer um Diagnostic warning, corrige antes de pôr isto a sério no ar.

Passo 9: confirmar o EMQ em produção

Passadas 24 horas no ar, vai a Events Manager → Data Sources → o teu Pixel → Diagnostics → Event Match Quality.

Por cada evento vais ver um número:

  • EMQ 8-10: excelente. O algoritmo trabalha ao máximo.
  • EMQ 6-7: assim-assim. Procura o que falta (email? telefone?).
  • EMQ < 6: mau. O user_data está mal mapeado ou o hash está errado.

Passo 10: vigiar as primeiras 2 semanas

Nestas duas semanas, fica de olho em quatro coisas:

  • Volume de eventos. O Pixel e a CAPI devem ter volumes parecidos (sinal de que a deduplicação está a funcionar). Se a CAPI tiver muito menos, há problema no servidor.
  • EMQ por evento. Mantém em 8 ou mais.
  • CPA e ROAS, o que aparece vs o que vendeste a sério. Com a CAPI bem feita, ao fim de 1 a 2 semanas os números apresentados aproximam-se da realidade, porque deixam de ficar vendas por contar.
  • Avisos no Diagnostics. Vê todos os dias nesta fase inicial.

Problemas comuns e como os resolver

EMQ baixo: faltam campos no user_data. Adiciona fn, ln, ge, db, ct, st, zp, country sempre que os tiveres. Mesmo que só consigas alguns, já ajuda.

Vendas a dobrar: o event_id está diferente entre o Pixel e a CAPI. Confirma que estás a passar o mesmo UUID nos dois.

Eventos não chegam ao servidor: a Container URL está mal ou a Container Config não foi colada no Stape. Verifica outra vez.

Está lento: o container do Stape está numa região errada para o teu cliente. Se o cliente é europeu, muda o container para Europe.

E depois disto

Com a CAPI a funcionar e o EMQ em 8 ou mais, já podes:

  • Ligar o Advantage+ Shopping com confiança, porque agora ele decide com dados limpos
  • Subir o orçamento das campanhas, já que o algoritmo passou a decidir melhor
  • Fazer o mesmo em Google Ads com as Enhanced Conversions (a lógica é igual)
  • Pedir uma auditoria gratuita para validar a configuração antes de acelerares

Se este guia te poupou tempo, partilha com alguém. Toda a gente passa por esta curva técnica mais cedo ou mais tarde.