Módulo 6 — Dashboard de Anúncios (Meta Ads)¶
Mede a mídia paga da Veggi: um robô busca os números todo dia e a dashboard os apresenta. É o módulo que responde "o anúncio deu dinheiro?".
Vive no repositório veggi-ads-dashboard, que também abriga — em pastas separadas e com Workers próprios — o Consultor de Tráfego e o Enriquecedor do CRM.
Documentação profunda no próprio repositório
O DOCUMENTACAO.md do repositório tem 317 linhas escritas durante a construção, com o porquê de cada decisão — inclusive erros cometidos e corrigidos. Estas páginas são o mapa; para manutenção fina, leia também aquele arquivo.
Partes deste módulo¶
| Página | O que cobre |
|---|---|
| Dashboard e Pages Functions | As telas, o login, as rotas de API |
| Robô updater | O Worker cron que busca Meta, CRM e VTEX |
| Rastreamento | Pixel, UTM, GTM e o script do Google Ads |
Como as peças se encaixam¶
Meta Graph API v21.0 RD CRM VTEX (pedidos) Google Ads
│ │ │ │
└────────────┬───┴────────────┘ │ (script diário
│ │ faz POST)
┌──────────▼───────────┐ │
│ Worker │◄─────────────────────┘
│ veggi-meta-updater │
│ crons 5h30 e 6h │
└──────────┬────────────┘
│ grava
┌──────────▼──────────────┐
│ KV: VEGGI_DATA │
│ latest · crm_history │
└──────────┬───────────────┘
lê │
┌──────────▼──────────┐
│ Pages: veggi-meta │
│ + Pages Functions │
│ + Cloudflare Access │
└─────────────────────┘
dashmeta.grupoveggi.com.br
O mesmo KV é lido pelo Consultor de Tráfego — é o ponto de encontro entre os dois módulos.
Os dois mundos: B2B × B2C¶
Não é um filtro de tela — são réguas de sucesso diferentes. Confundi-las é o erro mais caro deste módulo, e vale tanto aqui quanto no Consultor.
| Veggi B2B (padrão) | Veggi B2C | |
|---|---|---|
| Conta Meta | 488240501947012 |
324110141957198 |
| O que é sucesso | negociação no RD CRM | pedido real na VTEX |
| Onde está o número fechado | Campo "Campanha Meta" na negociação | marketingData do pedido (UTM gravada no pedido) |
| Papel do pixel | Conta "Lead" — sinal de otimização, inflado até 23/06/2026 | Conta Compra — a inflação não se aplica |
| Funil intermediário | — | Visitas etiquetadas do próprio site |
| Concorrente pela mesma receita | — | Google Ads (PMax) na mesma loja — nunca somar |
PISO, não total
No B2C, pedido sem etiqueta não é "pedido sem anúncio", é pedido sem rastro. Portanto o CPA real por campanha é um TETO e o ROAS real é um PISO — o oposto do que a intuição sugere.
O topo do latest é B2B puro
O robô remove de propósito as campanhas da conta B2C de campaigns, adsets, ads e months. Quem quer B2C lê latest.b2c. Não existe "somar os dois".
Componentes na Cloudflare¶
| Componente | Nome | Domínio / id |
|---|---|---|
| Pages | veggi-meta |
dashmeta.grupoveggi.com.br (oficial) · veggi-meta.pages.dev (bloqueado) |
| Worker | veggi-meta-updater |
veggi-meta-updater.veggiageral.workers.dev |
| KV | VEGGI_DATA |
02f925d798f44173b1f0f2b9ea45c4db |
| Login | Cloudflare Access | team veggidocs.cloudflareaccess.com |
Conceitos que não se pode esquecer¶
- O "Lead" do pixel não é métrica de sucesso. O lead real é a negociação no RD CRM. Até 23/06/2026 o pixel vinha inflado ~15-19x. Ver Rastreamento.
- Carência de 20 dias. O ciclo B2B leva 15 a 20 dias. Negociação mais nova que isso ainda não teve tempo de virar venda — cobrar venda dela puniria o anúncio pelo calendário. O robô marca quais negociações são
maduras. - Medir por objetivo. Campanha de engajamento não se julga por CTR (não tem clique) — usa custo por engajamento.
- Atração ≠ qualificação. CTR e frequência medem quanta gente clica, não se quem clicou presta. Caso real: dois anúncios com CTR praticamente igual (1,50% × 1,52%) e clique mais barato num deles — que custava R$ 83 por negociação contra R$ 22.
- CBO × ABO muda a leitura, não só o bolso. Em CBO a Meta reparte a verba entre conjuntos sozinha, otimizando pelo evento que ela enxerga (clique barato, lead do pixel) — que não é a negociação no CRM. Caso real: o CBO levou 96% da verba para o anúncio que custava R$ 83 por negociação.
Pipeline local (alternativa offline)¶
Antes do robô existir, o mesmo dado era montado na máquina. Os scripts continuam funcionando e servem de plano B:
cd "C:\Projetos\veggi-ads-dashboard"
node fetch-data.mjs # Meta -> data/*.json
node fetch-crm.mjs # RD CRM -> data/crm_deals.json
node build-data.mjs # consolida -> public/data.json + RELATORIO.md
Atalhos: atualizar-dados.bat (os três em sequência) e abrir-dashboard.bat (sobe o Vite em localhost:5173).
Warning
A pasta data/ contém PII de CRM (nome, e-mail e telefone de negociações reais) e por isso está no .gitignore. Não copie para lugar compartilhado.