SmartHub AppsMáquina de aquisição

Atribuição e ROI

A parte que decide se este projeto dá retorno ou vira despesa. Sem ela, os R$ 4.500 por mês viram fumaça e nenhum painel consegue dizer de onde veio cliente.

O problema real

O caminho do dinheiro neste modelo é longo:

clique no anúncio → landing → conecta a loja → Raio-X →
lead score → fila do vendedor → ligação → upgrade → Hub

Entre o clique e a receita que importa podem passar semanas. Se a medição parar no clique ou no formulário, três coisas acontecem, todas caras:

  1. O algoritmo da Meta aprende a trazer quem clica, não quem paga.
  2. O Google otimiza lance para conversões que não são receita.
  3. Você não consegue responder qual criativo trouxe cliente bom, então escala o errado.

A cadeia completa

1. Captura na landing

Toda requisição pública grava, em cookie primário de 90 dias e no banco:

utm_source · utm_medium · utm_campaign · utm_content · utm_term · gclid · wbraid · gbraid · fbclid · _fbp · _fbc · referrer · landing path · IP · user agent

Quando o cookie _fbc não existir mas houver fbclid na URL, reconstruir:

fb.1.<timestamp_em_milissegundos>.<fbclid>

2. Persistência

Ao conectar a loja, tudo vai para o Leadprimeiro toque e último toque, os dois. Ao comprar, tudo vai para o metadata do Customer e da Subscription na Stripe.

Modelo padrão do painel: último toque não direto. O primeiro toque fica disponível para comparação, porque em ciclo longo ele conta uma história diferente e às vezes mais verdadeira.

3. Conversions API da Meta

No webhook checkout.session.completed e no fim do Raio-X, enviar evento server-side com event_id igual ao do pixel, para deduplicação.

event_name, event_time, event_id, action_source="website", event_source_url
user_data:
  em   = sha256(email minúsculo, sem espaço)
  ph   = sha256(telefone E.164, sem "+" e sem separador)
  fn, ln = sha256(nome, sobrenome minúsculos)
  fbc  = cookie _fbc ou reconstruído
  fbp  = cookie _fbp
  client_ip_address, client_user_agent
custom_data:
  value, currency="BRL", content_name, content_ids

4. Conversão offline no Google

ConversionUploadService.UploadClickConversions com gclid (ou wbraid/gbraid para tráfego iOS), a ação de conversão, data e hora com fuso, valor, moeda e order_id — o id da assinatura na Stripe, que permite ajuste e estorno depois.

Para quem chega sem click id, conversão aprimorada por UserIdentifier com e-mail e telefone em hash.

Os valores — a parte que ensina o algoritmo

Este é o ponto mais importante da página. Não mande o preço de etiqueta; mande o valor econômico.

EventoValor enviadoPor quê
Loja conectada, fatura abaixo de R$ 30 milR$ 0Não é cliente. Não queremos mais como ele
Loja conectada, fatura R$ 30 mil ou maisR$ 150Vale o que economiza de prospecção
Radar Essencial R$ 97/anoR$ 97Valor real
Radar Pro ou Anúncios R$ 49/mêsR$ 294Seis meses esperados
HubR$ 3.600LTV estimado, 18 meses com margem

Com essa hierarquia, o algoritmo aprende que um dono de loja grande vale 24 vezes um curioso, e passa a caçar o perfil certo. É a diferença entre CPL de R$ 22 com lead ruim e CPLQ de R$ 68 com lead que fecha.

Documentar a origem de cada valor e revisar a cada trimestre com os números reais do painel.

Robustez

Privacidade

O painel

roi.ecomsmart.com.br, alimentado por três ingestões diárias às 5h.

FonteO que trazObservação
Meta Insights APIspend, impressões, cliques, conversões por anúncio e por diaReprocessar 7 dias: a Meta ajusta retroativamente
Google Ads APIcusto, cliques, conversões por campanha, grupo e palavracost_micros dividido por 10.000 dá centavos
Stripecharges, assinaturas, MRR, churn, metadata de atribuiçãoWebhook em tempo real mais reconciliação diária

A reconciliação da Stripe não é opcional: webhook perdido acontece, e sem ela o painel mente.

A ponte

utm_content do lead casa com anuncio_nome do gasto. Foi por isso que a nomenclatura de criativo é rígida.

ConfiançaQuando
exatautm_content casou com um anúncio
heuristicautm_campaign casou
sem_atribuicaonão havia utm

O percentual sem atribuição aparece no painel. Saber que 18% da receita não tem origem conhecida é informação; esconder isso é mentir para si mesmo.

Métricas

investido           = soma do custo
receita_atribuida   = soma da receita atribuída à campanha
CAC                 = investido / (vendas_radar + vendas_hub)
CPL                 = investido / leads
CPLQ                = investido / leads_qualificados
ROAS_imediato       = receita_atribuida / investido
ROAS_90d            = receita de 90 dias da coorte / investido
MRR_novo            = soma do recorrente das assinaturas novas
payback_dias        = dias até a receita acumulada cobrir o investido

ROAS_90d e payback_dias são os que decidem escala. O ROAS_imediato vai sempre parecer ruim num modelo com vendedor no meio — o painel precisa dizer isso na tela, senão alguém vai cortar uma campanha boa.

Telas

  1. Hoje — quatro KPIs: investido, faturado, ROAS, MRR. Gráfico de 30 dias. As cinco campanhas com pior CAC
  2. Campanhas — tabela com CAC, ROAS 90 dias e payback, semáforo com forma além da cor, expansível até o criativo
  3. Palavras-chave — investido contra receita, ordenado por desperdício, exporta negativas
  4. Funil — cliques, leads, qualificados, Radar, Hub, com taxa entre etapas e comparação com a meta
  5. Coortes — matriz de mês de entrada por meses decorridos, receita acumulada por cliente

Alerta diário às 8h

Ontem · 21/09 Investido R$ 148,20 · Faturado R$ 291,00 · ROAS 1,96 9 lojas conectadas · 3 com faturamento acima de R$ 30 mil Radar de Preço com CAC de R$ 112 contra a meta de R$ 90. Três criativos com CTR abaixo de 0,8%. 2 leads na fila A aguardando ligação.

Critério de partida

Nenhuma campanha é ativada antes de: evento Purchase aparecendo deduplicado no Gerenciador de Eventos da Meta, qualidade de correspondência igual ou acima de 6,0, e conversão offline aparecendo no Google Ads em até 24 horas com valor e order_id.

© 2026 EcomSmart · Uso interno · pt-BR