Bruno.
Meta AdsCAPIStapeTrackingTutorial

Como configurar a Conversion API do 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

Em 2026, qualquer conta Meta Ads séria precisa de Conversions API (CAPI) server-side. O Pixel sozinho perdeu sinal com o iOS 14 e nunca recuperou. O que separa contas com Event Match Quality (EMQ) 9+ das que estão em 5-6 é exactamente isto: setup técnico cuidadoso, não criatividade.

Há três caminhos para instalar CAPI: Stape (mais simples), GTM Server-Side em Cloud Run (mais flexível, mais trabalho) ou Direct API server-to-server (para volumes > 10M eventos/mês). Este guia foca-se no caminho mais prático para 90% dos casos: Stape.

Porque Stape (e não outro)

Stape é hosted GTM Server-Side. Em vez de configurares Cloud Run ou App Engine, eles cuidam da infra. Em 2026, plano free dá 1M requests/mês (chega para a maioria dos negócios < €10k/mês de spend). Plano Pro (€49/mês) sobe para 10M e dá custom subdomain, server containers ilimitados, e logging avançado.

Comparativamente: GTM Server-Side self-hosted em Cloud Run dá-te controlo total mas obriga-te a gerir auto-scaling, monitoring, custos de Compute (€20-€80/mês mediano), DNS, SSL. Para 90% dos casos, Stape compensa.

Passo 1 — Criar conta Stape e container

Vai a app.stape.io e cria conta. Escolhe plano Free para começar. Cria novo container Stape:

  • Container name: obruno-pt-server (descritivo)
  • Location: Europe (recomendado para clientes europeus, melhor latência + RGPD)

Recebes URL do container tipo https://yourcontainer.eu.stape.io. Esta é a URL que vai receber os eventos.

Passo 2 — Custom subdomain (opcional mas recomendado)

Por defeito, o tráfego vai para *.stape.io. Se quiseres melhor first-party tracking (cookie persistence em iOS 17+), usa custom subdomain do teu domínio:

  • 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 saem de gtm.obruno.pt em vez de domínio terceiro. Reduz risco de ad blockers e dá EMQ ligeiramente mais alto.

Passo 3 — Criar GTM Server container

Em tagmanager.google.com:

  • Cria novo container tipo “Server”
  • Quando perguntar “Manually provision tagging server”, cola a Container URL do Stape
  • Recebes Container Config (uma string longa que cola no Stape)

Voltas ao Stape, Settings → Container Configuration → cola a string. Salvar. Em 1-2 min está ativo.

Passo 4 — Configurar Pixel cliente para enviar ao server

No teu GTM Web container (não server), edita a tag do Meta Pixel:

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

Mais importante: nas tags de conversion (Purchase, Lead, AddToCart) — em “Object Properties” passa event_id gerado dinamicamente. 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 — Configurar Meta CAPI tag no server container

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

Cria nova tag:

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

Passo 6 — Mapear user_data corretamente

O parâmetro user_data é onde está o ouro do EMQ. Quantos mais parâmetros, melhor o match score. O template Meta CAPI já faz hashing SHA256 automático:

  • 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

Quanto mais campos mandares com signal real, maior o EMQ. Target: ≥8 em produção.

Passo 7 — Deduplicação por event_id

Crítico: Pixel e CAPI devem enviar o mesmo event_id para o mesmo evento. Meta deduplica e conta apenas uma vez. Se não fizeres deduplicação, vais duplicar conversões e o algoritmo otimiza errado.

Verificação: no Events Manager → Test Events → envia 1 evento de teste. Deve aparecer Server + Browser source, dedupe icon visível.

Passo 8 — Testar com Test Events

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

Faz uma compra/lead/teste no site real. Em segundos aparece no Test Events com:

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

Se aparecer Diagnostic warning, corrige antes de meter em produção.

Passo 9 — Verificar EMQ em produção

Após 24h em produção, Events Manager → Data Sources → tua Pixel → Diagnostics → Event Match Quality.

Por evento, deve aparecer:

  • EMQ 8-10: Excelente. Algoritmo otimiza ao máximo.
  • EMQ 6-7: Mediano. Procurar parâmetros em falta (email? phone?).
  • EMQ < 6: Mau. Provavelmente o user_data está mal mapeado ou hash incorreto.

Passo 10 — Monitorizar nas primeiras 2 semanas

Indicadores a monitorizar:

  • Volume de eventos — Pixel e CAPI devem ter volumes parecidos (deduplicação a funcionar). Se CAPI < Pixel, há problema no server.
  • EMQ por evento — manter ≥8 em produção.
  • CPA / ROAS reportado vs real — após 1-2 semanas com CAPI bem feito, reportado deve aproximar do real, sem “dark conversions”.
  • Warnings no Diagnostics — verificar diariamente nas primeiras 2 semanas.

Troubleshooting rápido

EMQ baixo: faltam parâmetros user_data. Adicionar fn, ln, ge, db, ct, st, zp, country sempre que tiver. Mesmo parcial ajuda.

Eventos duplicados: event_id diferente entre Pixel e CAPI. Confirma que estás a passar o mesmo UUID em ambos.

Eventos não aparecem no server: Container URL mal configurada, ou Container Config não foi colada no Stape. Reverifica.

Latência alta: Stape região errada vs cliente. Move container para Europe se cliente é EU.

Próximos passos

Com CAPI ativo e EMQ ≥8, podes:

Se este guia te poupou tempo, considera partilhar — outros operators também passam pela mesma curva técnica.