Fecha o loop entre clique pago, evento, venda real e margem — a cadeia de identidade (GCLID/UTM/transaction_id/CRM) que faz o dado de aquisicao bater com o financeiro. Use ao instrumentar um funil que gera receita, ao descobrir que analytics e backend discordam, ao decidir se uma campanha da lucro (nao so ROAS), ou ao enviar conversao offline / valor de lead de volta pra plataforma. Trigger em: "GCLID", "UTM", "conversao offline", "enhanced conversions", "measurement plan", "plano de medicao", "reconciliacao", "analytics nao bate", "receita nao bate", "duplicou conversao", "margem de contribuicao", "break-even ROAS", "ROAS de equilibrio", "value-based bidding", "smart bidding", "target ROAS", "qualidade de lead", "lead nao vira venda", "consent mode", "closed loop", "atribuicao".
73
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
O produto nao termina no deploy. Esta skill cobre a cadeia que liga clique pago → evento → venda real → margem, e a disciplina de identidade que faz essa cadeia ser reconciliavel. Sem isso, o time otimiza para numeros que a plataforma de anuncios reporta, nao para dinheiro que entrou.
O erro central que ela previne: ROAS alto nao significa negocio saudavel. Uma campanha com ROAS 2,0 pode estar destruindo valor se a margem de contribuicao for 40%.
Esta skill segue GLOBAL.md, policies/execution.md, policies/handoffs.md, policies/token-efficiency.md, policies/quality-gates.md e policies/evals.md.
Para formulas completas, contrato de evento por tipo de funil e receita de auditoria, consultar docs/skill-guides/closed-loop-revenue.md apenas quando necessario.
Fronteira com skills vizinhas:
A ordem correta e plano → contrato de evento → tag. Sair implementando tag primeiro produz evento que ninguem sabe interpretar e numero que nao bate com nada.
O plano responde, por etapa do funil: qual evento, o que ele significa em linguagem de negocio, quem dispara, quais parametros sao obrigatorios, e qual decisao ele vai suportar. Evento que nao suporta decisao nao entra.
Funil de e-commerce e funil de lead gen tem formatos diferentes:
E-commerce: view_item → add_to_cart → begin_checkout → purchase
Lead gen: view_landing → form_start → generate_lead → qualify_lead → close_convert_leadA diferenca importa: em lead gen, generate_lead nao e receita. Otimizar bidding para submissao de formulario, quando a qualidade varia, ensina o algoritmo a comprar lead ruim barato.
Cada identificador tem uma funcao. Tratar como intercambiavel e a causa mais comum de dado que nao reconcilia:
| ID | Nasce onde | Serve para | Nao serve para |
|---|---|---|---|
| GCLID | Clique no anuncio (auto-tagging) | Ligar a venda de volta a campanha; conversao offline | Identificar o usuario |
| UTM | URL da campanha | Taxonomia legivel, cross-channel | Atribuicao precisa (perde em redirect) |
| transaction_id | Backend, na transacao | Deduplicacao — a mesma venda contada uma vez so | Atribuicao |
| ID de usuario/lead | Cadastro ou CRM | Qualidade e valor real ao longo do tempo | Ser enviado cru pra plataforma |
Regras que evitam a maioria dos bugs:
Google e google viram duas fontes diferentes num relatoriotransaction_id idempotente, gerado no backend, nunca no clienteO evento purchase do lado do cliente nao e receita. Ele nao dispara quando o pagamento confirma fora do browser (PIX, boleto, retry), dispara duas vezes em refresh, e some com bloqueador.
A arquitetura correta:
Backend (fonte de verdade) → registra transacao com transaction_id
↓ ↓
analytics plataforma de ads
(evento marcado) (conversao importada)O relatorio de reconciliacao compara os tres e declara uma tolerancia — nao existe bater 100%, e fingir que existe esconde problema real:
| Divergencia tipica | Causa provavel |
|---|---|
| Analytics > backend | Evento duplicado (refresh, back-button, sem transaction_id) |
| Analytics < backend | Bloqueador, consent negado, pagamento assincrono fora do browser |
| Plataforma > analytics | Janela de atribuicao diferente, modelagem da propria plataforma |
| Receita diferente com contagem igual | Moeda, imposto, frete ou desconto contados de forma diferente |
Divergencia acima da tolerancia bloqueia escala de midia. Escalar orcamento em cima de dado que nao reconcilia e multiplicar o erro.
Checkpoint: identificar a causa provavel na tabela → corrigir a fonte especifica (dedupe por transaction_id, ajustar janela de atribuicao, alinhar calculo de moeda/imposto) → rodar a reconciliacao de novo no mesmo periodo. So liberar escala quando a divergencia cair dentro da tolerancia declarada — nao redefinir a tolerancia pra "caber" o numero que já saiu.
A hierarquia importa: quanto mais em cima, mais economico; quanto mais embaixo, mais operacional.
Lucro incremental / contribuicao ← o que importa
↑
Receita, CAC
↑
AOV, CVR, qualidade de lead
↑
CPC, CTR, impressoes ← nunca a metaA conta que muda a decisao:
Margem de contribuicao = (Receita − custos variaveis antes da midia) / Receita
Break-even ROAS = 1 / Margem de contribuicaoCom margem de 40%, o break-even e 2,5. Um ROAS de 2,0 aparece verde no painel e destroi valor.
Custos variaveis a incluir antes de calcular: COGS, taxa de pagamento, frete e subsidio, reembolso e chargeback, suporte variavel. Deixar qualquer um de fora infla a margem e rebaixa o break-even artificialmente.
Nunca otimizar CTR quando o objetivo e margem. Sao metricas de camadas diferentes.
Automacao de lance so e tao boa quanto o sinal que recebe. A progressao correta:
| Situacao | Estrategia |
|---|---|
| Tracking ainda nao reconcilia | Nao escalar automacao — lixo entra, lixo sai |
| Conversoes tem valor parecido | Maximizar conversoes / CPA alvo |
| Valores variam bastante | Maximizar valor de conversao |
| Volume e historico de valor suficientes | ROAS alvo |
| Lead gen com qualidade variavel | Valor offline — enviar a venda real, nao a submissao do formulario |
Para lead gen, a virada de chave e enviar de volta o desfecho real (lead virou venda? de quanto?), nao o formulario preenchido. Uma campanha com 1.000 leads baratos que nao fecham nao vale mais que 200 leads que fecham com margem — e sem esse retorno, o algoritmo nao tem como saber.
Mudanca grande de estrategia se testa com experimento (controle vs. tratamento), nao comparando com a semana passada — sazonalidade e ruido explicam quase qualquer diferenca semana a semana.
Instrumentacao e privacidade nao se separam. O estado de consentimento precisa chegar as tags antes de qualquer disparo, e a mudanca de consentimento (inclusive revogacao) precisa propagar.
A escolha de base legal e a interpretacao de caso concreto sao de responsavel juridico/DPO — esta skill implementa o mecanismo.
purchase do cliente como fonte de verdade de receitatransaction_id gerado no cliente, ou ausenteGoogle, google e google-ads como tres fontesgenerate_lead quando a qualidade do lead variaPlano e identidade:
transaction_id idempotente, gerado no backendReconciliacao:
Economia:
Privacidade:
transaction_id idempotenteComentario onde a regra de negocio nao e obvia: por que determinado custo entra no calculo de margem, por que um evento e server-side. Nome de evento e parametro seguem o padrao da plataforma, sem apelido interno.
felvieira/claude-skills-fv
90329e3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.