Robô Updater — Worker veggi-meta-updater¶
O robô que alimenta tudo. Busca Meta, RD CRM, VTEX e Google Ads, calcula os KPIs e grava um JSON único no KV. A dashboard e o Consultor só leem o que ele deixou pronto.
| Item | Valor |
|---|---|
| Worker | veggi-meta-updater |
| URL | veggi-meta-updater.veggiageral.workers.dev |
| Código | worker/src/index.js (1.682 linhas) |
| KV binding | VEGGI_DATA — 02f925d798f44173b1f0f2b9ea45c4db |
| Variável | RECENT_MONTHS = 4 |
| Secrets | META_TOKEN, RD_CRM_TOKEN, UPDATE_KEY, credenciais VTEX |
Dois crons, de propósito¶
| Horário UTC | Brasília | O que faz |
|---|---|---|
| 08:30 | 05:30 | Lê os pedidos da VTEX |
| 09:00 | 06:00 | Busca Meta + CRM e publica a dashboard já com esses pedidos |
Por que separado
A Cloudflare limita chamadas externas por execução, e juntas as duas tarefas estouravam o teto — a conta B2B chegou a sumir da dashboard por isso. Não junte os dois crons de volta.
Rotas¶
Todas exigem ?key=UPDATE_KEY, exceto /carrinho.
Endereço base
https://veggi-meta-updater.veggiageral.workers.dev
As rotas abaixo são o caminho depois desse endereço.
| Rota | O que faz |
|---|---|
/update |
Dispara a rodada completa. Atalho: atualizar-online.bat |
/google-ads |
POST — o script do Google Ads publica aqui todo dia. GET mostra o que chegou |
/carrinho |
Público de propósito — quem chama é o site da loja |
/vtex-ingest |
Leitura da VTEX sob demanda |
/vtex-backfill |
Varre o histórico. Cada chamada tem 50 sub-requisições próprias, então dá para "comer" o histórico chamando várias vezes seguidas |
/vtex-diagnostico |
Só lê pedidos e conta quantos vieram com UTM. Não grava nada |
/vtex-pedidos |
Lista pedido a pedido — para separar bot de cliente real na unha |
/vtex-teste |
Testa a conexão. Diz onde está o erro sem revelar segredo (só formato e tamanho) |
O /carrinho é público e tem que continuar assim
Quem chama é o site da loja, no navegador do cliente. Qualquer segredo colocado ali apareceria no código-fonte da página. Usar a chave do robô seria grave: ela dispara atualização e abre o diagnóstico de pedidos.
O que ele monta¶
- Meta Graph API v21.0 — insights por campanha nas 4 contas; conjuntos, anúncios, targeting e criativo só da B2B.
- Meta, série diária — 90 dias mais duas janelas de 7 dias fechadas, para a aba Diário. Roda em bloco
trypróprio: se falhar, só o Diário fica sem dado. - RD CRM — negociações dos últimos
RECENT_MONTHS=4meses, mescladas comcrm_history, já marcando quais passaram da carência de 20 dias. - VTEX — pedidos com a UTM lida do
marketingData. - Google Ads — o que o script da conta publicou em
/google-ads.
O CRM real¶
Uma negociação conta como "Facebook pago" se a origem for FB pago ou se o campo personalizado "Campanha Meta" estiver preenchido. Agrega por campanha, conjunto e anúncio.
Contas de anúncio lidas¶
479831619185445 · 324110141957198 (B2C) · 488240501947012 (B2B) · 1302256973566265
O detalhamento por conjunto e anúncio é só da B2B.
O KV VEGGI_DATA¶
| Chave | Quem grava | Conteúdo |
|---|---|---|
latest |
Este worker | Tudo que a dashboard e o consultor mostram |
crm_history |
Este worker | Histórico mensal do CRM, mesclado a cada rodada |
consultor_memory |
Worker MCP | Memória do consultor — este worker não toca |
cd "C:\Projetos\veggi-ads-dashboard\worker"
npx wrangler kv key get latest --binding=VEGGI_DATA --remote
Cruzamento por nome
orders.byCampaign/byAdset/byAd e sessoes.* são chaveados pelo mesmo normCamp() (decodifica URL, +→espaço, minúsculas). Mudar a normalização de um lado mata o cruzamento em silêncio — não dá erro, os números só param de bater.
Deploy¶
cd "C:\Projetos\veggi-ads-dashboard\worker"
npx wrangler deploy # atalho: publicar-robo.bat
npx wrangler secret put META_TOKEN
npx wrangler secret put RD_CRM_TOKEN
npx wrangler secret put UPDATE_KEY # atalho: definir-chave-robo.bat
Diagnóstico¶
| Sintoma | Causa provável e ação |
|---|---|
| Uma conta sumiu da dashboard | Teto de sub-requisições da Cloudflare estourado. Foi por isso que os crons foram separados — conferir se alguém os juntou |
| Dados parados no dia anterior | O cron não rodou. Disparar /update?key=... e ver os logs em Workers → Observability |
| CRM real zerado | RD_CRM_TOKEN expirado, ou o campo "Campanha Meta" parou de ser preenchido nas LPs |
| Pedidos da VTEX não aparecem | Rodar /vtex-teste?key=... — ele aponta onde está o erro sem revelar segredo |
| Gasto na Meta mas nenhum pedido etiquetado | Anúncio sem UTM. Confirmar com /vtex-diagnostico?key=..., que conta quantos pedidos vieram com UTM |
| Google Ads sem dados | O script na conta do Google parou. Ver Rastreamento |
| Aba Diário sem dado, resto OK | Comportamento esperado: a série diária tem bloco try isolado |