Visão geral
A base de receita da sua organização e a projeção de receita para os próximos 12 meses, calculada a partir do próprio funil, investimento e faturamento.
O que esta análise responde
A API de Forecast projeta a receita da organização nos próximos 12 meses. Ela parte do que aconteceu nos últimos 30 dias (volume e taxas de conversão do funil, recompra, investimento em mídia, receita e ticket médio) e devolve uma projeção: o funil atual com os ajustes que você simular. Sem ajustes, a projeção é o funil como está.
Perguntas que você consegue responder:
- Quanto faturamos por mês hoje e quanto faturamos nos últimos 12 meses?
- Se investirmos 20% a mais e melhorarmos a taxa de carrinho em 10%, quanto faturamos em 12 meses?
- Quanto a recompra pesa na receita e quanto ela soma se crescer 15%?
- Quanto muda a receita se o ticket médio subir 5%?
- Em quanto tempo uma mudança aparece na receita, se ela leva 4 meses para amadurecer?
Qual endpoint usar
| Pergunta | Endpoint |
|---|---|
| Quais são os números de partida do forecast (funil, taxas, investimento, ticket, receita)? | GET /v1/forecast/baseline |
| Como ficam os próximos 12 meses para um conjunto de mudanças? | POST /v1/forecast/simulate |
Endpoints disponíveis
- getBase do forecast
/v1/forecast/baselineA base mensal de onde o forecast parte, montada com as mesmas leituras dos dashboards: o funil de aquisição, o investimento em mídia e os… - postSimular o forecast
/v1/forecast/simulateProjeta os 12 meses a partir de baseline.windowStart sobre a mesma base (em cache) que GET /v1/forecast/baseline devolve: o funil atual…
Como a projeção é calculada
A receita mensal soma duas partes, aquisição e recompra:
- Volume da primeira etapa × fator de tráfego. O investimento acompanha o tráfego com custo por unidade constante, então escala de forma linear.
- Esse volume × a taxa de conversão de cada etapa seguinte = pedidos da cadeia. Deles, só a parcela que não é recompra conta como pedidos de aquisição.
- Pedidos de recompra = os pedidos de recompra dos últimos 30 dias (etapa
RETENTION) × (1 + a % de retenção). - (Aquisição + recompra) × ticket médio = receita modelada.
- Receita modelada × fator de medição = receita projetada.
O funil conta eventos somados entre ferramentas, não pedidos distintos, então funil × ticket raramente bate com o faturamento. O fator de medição (calibrationFactor) é a receita real ÷ a receita modelada (aquisição + recompra): ele faz as alavancas atuais reproduzirem a receita real dos últimos 30 dias. Sem receita real, o fator é null e o modelo roda sem ajuste.
Retenção (recompra)
A etapa RETENTION conta os pedidos de recompra da janela: pedidos de um cliente que já tinha comprado antes nos mesmos 30 dias (Shopify, Tray e VTEX; em planilhas, clientes com pedido repetido). Esses pedidos já estão dentro dos pedidos de DECISION, então a projeção não os conta duas vezes: a cadeia escala só a parcela de aquisição (pedidos de DECISION menos os de recompra) e a recompra é somada à parte, movida só pela % de retenção. A taxa da etapa (rate) é a parcela dos pedidos que são recompra (RETENTION ÷ DECISION), o mesmo % da etapa anterior que o funil mostra. RETENTION só aparece quando está habilitada no funil e a cadeia termina em DECISION; é sempre o último item de stages.
Funil de e-commerce
Para lojas online no padrão de e-commerce da V4MOS (modelo de negócio vendas_online, Google Analytics 4 e uma plataforma de e-commerce conectados, com as etapas Atenção, Interesse, Qualificação e Decisão configuradas), a cadeia segue a fórmula da loja:
Receita = Sessões × Taxa de carrinho × Taxa de checkout × Taxa de compra × Ticket médio
| Etapa | role | Taxa (rate) |
|---|---|---|
ATTENTION | sessions | — (vem do investimento) |
INTEREST | cart | carrinhos ÷ sessões |
QUALIFICATION | checkout | checkouts iniciados ÷ carrinhos |
DECISION | purchase | pedidos ÷ checkouts iniciados |
RETENTION | retention | pedidos de recompra ÷ pedidos |
EXPOSURE (impressões) e COMMITMENT (checkout concluído) não entram nessa cadeia. A resposta informa qual fórmula foi usada em funnelKind (ecommerce ou generic). As demais organizações usam a cadeia genérica: todas as etapas configuradas até a última do lado do cliente e, depois, RETENTION, com role: null.
Pisos do setor
Cada etapa traz em floor o benchmark de mercado da sua conversão para o modelo de negócio da organização (businessModel: online_sales, inside_sales ou pos), a mesma referência que o diagnóstico de gargalo usa. É só uma referência para mostrar ao lado da etapa: a projeção nunca sobe uma conversão até o piso por conta própria. RETENTION não tem piso. O piso de uma etapa é o benchmark da transição que entra nela (Atenção, Interesse, Qualificação, Compromisso, Decisão). Quando a cadeia pula uma etapa, o piso multiplica os benchmarks que ela atravessa: no e-commerce, a taxa de compra (pedidos ÷ checkouts iniciados) tem piso Compromisso × Decisão. Sem modelo de negócio conhecido, businessModel e todo floor vêm null. O modelo vem do cadastro da organização quando a chamada traz o token do usuário; com x-client-id/x-client-secret, vem da configuração do funil da organização.
Ajustes do simulador
Todo ajuste é uma variação % sobre o valor atual, que sai do atual no mês 1 e chega ao alvo no mês rampMonths + 1 em linha reta, e depois se mantém (rampMonths 0 aplica o alvo já no mês 1).
| Ajuste | Campo | O que move |
|---|---|---|
| Etapa da cadeia | stagePct.<stageId> | a taxa de conversão atual daquela etapa (só a parcela de aquisição dos pedidos) |
| Retenção | stagePct.RETENTION | os pedidos de recompra por mês |
| Investimento | investmentPct | o tráfego da primeira etapa e, junto, o investimento |
| Faturamento (ticket) | ticketPct | o ticket médio de todos os pedidos, de aquisição e de recompra |
Toda variação % fica limitada ao intervalo de -50 a 200. Uma variação % numa etapa sem taxa mensurável (rate null ou 0) não tem efeito.
Resposta
result.projection traz os 12 meses (months) e os totais (totals): receita, receita de recompra (repurchaseRevenue), investimento, pedidos, pedidos de recompra (repurchaseOrders) e ROAS. result.baselineMonthlyRevenue é a receita mensal com as alavancas atuais (a receita real quando há calibração), o lado "atual" do faturamento.
Campos descontinuados
meta e inputs.extraLayer, da versão com cenários (Inércia, Realista e Super meta), ainda são aceitos para não quebrar integrações antigas, mas são ignorados.
Regras importantes
Status da base
status | Significado |
|---|---|
ready | A base está disponível em baseline. |
noFunnel | Nenhum funil configurado, nada medido no topo do funil ou nenhuma etapa do lado do cliente. |
noRevenue | Há funil, mas não há receita nem ticket para ancorar a projeção. |
error | Não foi possível ler o funil. Tente de novo mais tarde. |
POST /v1/forecast/simulate devolve result: null sempre que data.status não for ready.
Períodos
- A base usa os últimos 30 dias corridos até hoje, no horário de Brasília (America/Sao_Paulo).
- O faturamento de 12 meses (
trailingRevenue) usa os últimos 365 dias. Quando essa leitura não está disponível, ele é os últimos 30 dias × 365/30, comannualized: true. - O mês 1 da projeção é o mês atual (
windowStart). - As contagens são volume de eventos somado entre ferramentas, não pessoas distintas.
null significa "não definido", nunca zero
monthlyRevenue, trailingRevenue, rate, sourceLabel, calibrationFactor e roas podem ser null. Mostre um traço no lugar do número.
Receita estimada
revenueSource: "pixel" indica que a receita é o valor de compras reportado pelas plataformas de anúncio, porque a organização não tem fonte transacional. Rotule como estimativa.
Parâmetros
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
organizationId | query (GET) / body (POST) | Sim | Identificador da organização. |
inputs | body (POST) | Sim | investmentPct, ticketPct, stagePct (por stageId, inclusive RETENTION) e rampMonths (número inteiro de 0 a 11). |
Campos desconhecidos retornam 400.
Exemplo
curl -X POST "https://data.v4mos.ai/v1/forecast/simulate" \
-H "x-client-id: seu_client_id" \
-H "x-client-secret: seu_client_secret" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "organization_123",
"inputs": {
"investmentPct": 20,
"ticketPct": 0,
"stagePct": { "INTEREST": 10, "RETENTION": 15 },
"rampMonths": 4
}
}'Autenticação
Todos os endpoints usam a URL base https://data.v4mos.ai e exigem os headers x-client-id e x-client-secret. Veja Autenticação.