Aquisição

Visão geral

Investimento, novos clientes, CAC, LTV, payback, funil, campanhas e mídia paga da sua organização, prontos para BI e dashboards.

O que esta análise responde

A API de Aquisição mostra quanto a organização investe para conquistar clientes novos e o retorno desse investimento. Ela junta o investimento em mídia (Meta Ads e Google Ads), os clientes atribuídos a cada canal e campanha e a receita gerada por eles, e entrega métricas prontas como CAC, LTV, ROI e payback. Todas as respostas usam o mesmo período, e os cards trazem a comparação com o período anterior.

Perguntas que você consegue responder:

  • Quanto investimos no período e quantos clientes novos isso trouxe?
  • Qual é o CAC e em quantos meses o investimento se paga (payback)?
  • Qual canal e qual campanha têm o melhor custo e o melhor retorno?
  • Como os clientes avançam pelas etapas do funil?
  • Como está a mídia paga (impressões, cliques, leads, custo por lead) e qual público e região ela alcança?

Qual endpoint usar

PerguntaEndpoint
Quais são os números consolidados da organização (investimento, novos clientes, CAC, payback) e como variaram?GET /v1/acquisition/summary
Como cada canal pago se compara (CAC, LTV, LTV/CAC, ROI, payback)?GET /v1/acquisition/channels
Quanto volume passa por cada etapa do funil?GET /v1/acquisition/funnel
Como os clientes novos evoluem dia a dia, por canal?GET /v1/acquisition/new-customers-over-time
Como CAC, LTV e custo por venda evoluem dia a dia, por canal?GET /v1/acquisition/unit-economics-over-time
Qual campanha, conjunto de anúncios ou anúncio performa melhor?GET /v1/acquisition/campaigns
Como está a mídia paga: investimento, impressões, alcance, cliques, leads e CPL?GET /v1/acquisition/paid-media
Qual gênero, faixa etária e região a mídia do Meta Ads alcança, e a que custo?GET /v1/acquisition/paid-media/audience

Observações por endpoint

  • /summary e /channels: cada métrica vem como { value, changePct }, com a variação percentual contra o período anterior. O canal Orgânico não aparece em /channels, porque não tem investimento. A lista de canais não vem ordenada.
  • /funnel: retorna só as etapas de funil que a organização configurou na plataforma V4MOS.AI. A contagem de cada etapa é volume de eventos (impressões, cliques, leads, pedidos), somado entre as ferramentas conectadas. Não é número de pessoas distintas. As etapas EXPOSURE e ATTENTION medem mídia (scale: "media") e as demais medem eventos do cliente (scale: "customer"). A passagem de um grupo para o outro é uma troca de unidade, não uma taxa de conversão. Sem etapas configuradas, a resposta é stages: [].
  • /new-customers-over-time inclui o canal Orgânico. /unit-economics-over-time traz só canais pagos. Nas duas séries, dias sem dados não aparecem: preencha esses dias com zero no seu gráfico (clientes novos) ou deixe-os em branco (razões).
  • /campaigns: árvore canal → campanha → conjunto de anúncios → anúncio, sempre com dois grupos: acquisition (campanhas marcadas como aquisição) e other (todas as demais). As métricas de mídia existem em todos os níveis. As métricas de negócio (clientes, CAC, LTV, ROI, payback, leads) só existem nos níveis de canal e campanha, porque a atribuição de clientes vai até a campanha.
  • /paid-media: só Meta Ads e Google Ads. Os leads somam os leads do CRM atribuídos a um canal pago por UTM e os leads registrados pelas plataformas (Meta e Google) que o funil da organização conta na etapa de Interesse. A série daily tem um ponto por dia, sem lacunas, e os cards são a soma dela.
  • /paid-media/audience: só Meta Ads. Os leads daqui são o evento lead do Meta e não batem com os de /paid-media, que também soma CRM e Google.

Endpoints disponíveis

Métricas

As razões são arredondadas em 2 casas decimais. O investimento não é arredondado.

CampoO que significaComo é calculadoUnidade
investmentInvestimento total em mídiaSoma do gasto de todas as campanhas pagas, incluindo marca e monetizaçãoMoeda
acquisitionInvestmentInvestimento em aquisiçãoGasto só das campanhas marcadas como aquisiçãoMoeda
newCustomersClientes novosTodos os clientes novos do período, de todos os canais (orgânico incluído, em /summary)Clientes
acquisitionNewCustomersClientes novos de aquisiçãoClientes novos atribuídos às campanhas marcadas como aquisiçãoClientes
cacCusto de aquisição de clienteacquisitionInvestment ÷ acquisitionNewCustomersMoeda por cliente
ltv / avgLtvLTV médio brutoReceita acumulada ao longo da vida (LTV) dos clientes conquistados no período ÷ número desses clientes, sem aplicar margemMoeda por cliente
acquisitionAvgLtvLTV médio dos clientes de aquisiçãoComo o LTV, só para os clientes das campanhas de aquisição, já com a margem de contribuição aplicadaMoeda por cliente
ltvCacRatioLTV/CACltv ÷ cac (em /campaigns, avgLtv ÷ cac)Vezes (3 = LTV três vezes o CAC)
acquisitionLtvCacRatioLTV/CAC das campanhas de aquisiçãoacquisitionAvgLtv ÷ cacVezes
roiRetorno sobre o investimento(receita × margem de contribuição − investimento) ÷ investimentoRazão decimal (0,42 = 42%)
acquisitionRoiROI das campanhas de aquisiçãoMesmo cálculo, só com receita e investimento das campanhas de aquisiçãoRazão decimal
paybackMonthsPaybackEm quantos meses a contribuição acumulada (receita × margem) dos clientes conquistados cobre o custo de aquisição deles, em média ponderada por clientesMeses
cpvCusto por vendaInvestimento total ÷ pedidosMoeda por pedido
impressions, clicksImpressões e cliquesSoma reportada pelas plataformasContagem
cpmCusto por mil impressõesinvestimento × 1000 ÷ impressõesMoeda
ctrTaxa de cliquescliques × 100 ÷ impressões%
cpcCusto por cliqueinvestimento ÷ cliquesMoeda por clique
leadsLeadsLeads do CRM atribuídos por UTM + leads das plataformas que o funil conta na etapa de Interesse. Podem ter casas decimais, porque o Google Ads reporta conversões fracionáriasLeads
leadsBySourceLeads por origemOs mesmos leads separados em crm, meta e googleLeads
cplCusto por leadSoma do investimento ÷ soma dos leads (nunca média de CPLs diários)Moeda por lead
reachAlcance (só Meta Ads)Pessoas alcançadas, somadas por dia e campanha. É uma aproximação: quem foi alcançado em vários dias ou campanhas conta mais de uma vezPessoas
costPerThousandReachCusto por mil pessoas alcançadasinvestimento × 1000 ÷ alcanceMoeda
count (funil)Volume da etapaSoma dos eventos da etapa no períodoEventos
pctOfFirst, pctOfPrevious (funil)Proporção da etapacount ÷ primeira etapa retornada × 100, e count ÷ etapa anterior retornada × 100%
changePctVariação(atual − anterior) ÷ anterior × 100%

Regras importantes

null significa "não definido", nunca zero

Quando uma razão não pode ser calculada (por exemplo, CAC sem nenhum cliente novo, ou CPC sem nenhum clique), o campo vem null. Um 0 é sempre um valor medido de verdade.

Não converta null em 0

Mostre um traço ("—") ou "sem dados" no lugar do número e deixe uma lacuna nos gráficos. Converter null em 0 faz um CAC parecer gratuito e um LTV/CAC parecer o pior possível.

Campos que podem vir null: cac, ltv, avgLtv, acquisitionAvgLtv, ltvCacRatio, acquisitionLtvCacRatio, roi, acquisitionRoi, paybackMonths, cpv, cpm, ctr, cpc, cpl, leads, reach e costPerThousandReach. Já changePct vem null quando a comparação não é possível (valor anterior zero ou ausente), e em paybackMonths ele é sempre null. Para paybackMonths, 0 e null são resultados opostos: 0 significa que o investimento se pagou no próprio mês de aquisição; null significa que nenhum grupo de clientes atingiu o payback ou que o custo deles é desconhecido.

Exceção no funil: em /funnel, pctOfFirst e pctOfPrevious vêm 0 (e não null) quando a etapa de referência tem contagem zero.

O CAC considera só campanhas marcadas como aquisição

Na plataforma V4MOS.AI, cada organização marca quais campanhas são de aquisição (conquistar clientes novos). As outras campanhas são de marca, de monetização ou ficam sem classificação. O CAC desta API usa só as campanhas marcadas como aquisição, nos dois lados da conta: cac = acquisitionInvestment ÷ acquisitionNewCustomers.

Por isso as respostas trazem dois conjuntos de números:

ConjuntoCamposO que descreve
Totais amplosinvestment, newCustomers, ltv, roi e as séries temporaisO canal ou a organização inteira, todas as campanhas
Só aquisiçãoacquisitionInvestment, acquisitionNewCustomers, cac, acquisitionAvgLtv, acquisitionLtvCacRatio, acquisitionRoiSó as campanhas marcadas como aquisição

Não misture os dois conjuntos

investment ÷ newCustomers não é o CAC, e acquisitionInvestment ÷ newCustomers também não. Só acquisitionInvestment ÷ acquisitionNewCustomers reproduz o cac.

O campo hasAcquisitionClassification (em /summary e /channels) indica se a organização já marcou alguma campanha como aquisição, em qualquer data. Quando é false, cac, ltvCacRatio, paybackMonths e as métricas acquisition* vêm null e o grupo acquisition de /campaigns vem vazio. Isso não é falta de dados no período: falta marcar as campanhas de aquisição na plataforma. Os totais amplos continuam com valores reais.

Margem de contribuição

A margem de contribuição configurada pela organização na plataforma (100% quando não configurada) é aplicada em roi, acquisitionRoi, paybackMonths e acquisitionAvgLtv (e portanto em acquisitionLtvCacRatio). Os campos ltv e avgLtv são brutos, sem margem. As respostas de /summary, /channels, /unit-economics-over-time e /campaigns informam o estado da margem em marginConfigured (se foi configurada), marginCompleteness (complete, partial ou none) e marginItemStatus (situação de cada custo: gateway, imposto, frete e custo da mercadoria).

Período e comparação

  • A janela de comparação é sempre o período de mesmo tamanho imediatamente anterior ao selecionado. Exemplo: uma seleção de 12 dias é comparada com os 12 dias que vêm logo antes dela.
  • As séries temporais são sempre diárias, qualquer que seja o tamanho do período. Um período de 365 dias retorna cerca de 365 pontos por canal; agrupe em semanas ou meses no seu lado, se precisar.
  • "Hoje" é o dia de calendário em UTC. Quando o período inclui hoje, esse último dia ainda está parcial, porque os dados do dia continuam chegando.

Flags de disponibilidade de dados

FlagEndpointQuando é false
hasAcquisitionClassification/summary, /channelsA organização nunca marcou uma campanha como aquisição.
hasLeadSource/paid-mediaA organização não tem nenhuma fonte de leads: nenhum lead do CRM com UTM de canal pago e nenhum lead de plataforma contado na etapa de Interesse do funil. leads, leadsBySource e cpl vêm null (não medido). Com fonte de leads, um dia sem lead é 0 de verdade.
hasMeta/paid-media/audienceA organização não tem dados do Meta Ads. Todas as listas vêm vazias.
hasLeads/paid-media/audienceOs dados de público do período não trazem a informação de leads. leads, cpl e leadsByGender vêm null.

Tabela de campanhas: limite de linhas

/campaigns retorna no máximo 5.000 linhas somando os dois grupos e todos os níveis, sem paginação. Se o limite for atingido, os níveis mais profundos são removidos primeiro (anúncios, depois conjuntos de anúncios). Canais e campanhas nunca são removidos. O objeto truncation informa o que aconteceu: truncated, returnedRows, totalRows e droppedLevels. Use-o para avisar "exibindo N de M linhas".

Use campaignId para identificar uma campanha. O id de cada linha é único na resposta e serve como chave, mas para canais e linhas sem identificador na plataforma ele é gerado pela API e não deve ser interpretado.

Parâmetros comuns

ParâmetroObrigatórioDescrição
organizationIdSimIdentificador da organização.
startDateNãoInício do período, no formato YYYY-MM-DD, inclusivo.
endDateNãoFim do período, no formato YYYY-MM-DD, inclusivo.
periodNãoDescontinuado. Período relativo: 7d, 30d, 90d ou 1y, terminando hoje (UTC). Ignorado quando startDate e endDate são enviados.
searchNãoSó em /campaigns: filtra pelo nome da campanha, do conjunto de anúncios ou do anúncio, sem diferenciar maiúsculas de minúsculas.

Regras de datas:

  • Envie startDate e endDate juntos. Enviar só um deles retorna 400.
  • Use só a data (2026-03-11). Data com hora (2026-03-11T00:00:00Z) ou data inexistente (2026-02-30) retorna 400.
  • startDate deve ser menor ou igual a endDate, nenhuma das datas pode estar no futuro (UTC) e o intervalo pode ter no máximo 366 dias (365 dias entre as datas).
  • Sem datas e sem period, a API usa os últimos 30 dias (30d).

Parâmetros desconhecidos retornam 400

A API aceita apenas organizationId, startDate, endDate, period e search. Qualquer outro parâmetro na query (por exemplo, channel ou page) retorna 400. Se faltar organizationId ou se period tiver um valor inválido, a resposta também é 400.

Exemplo

curl -X GET "https://data.v4mos.ai/v1/acquisition/summary?organizationId=organization_123&startDate=2026-03-01&endDate=2026-03-31" \
  -H "x-client-id: seu_client_id" \
  -H "x-client-secret: seu_client_secret"

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.

Nesta página