Pular para o conteúdo principal

Atribuição de receita

Receita liga um checkout ao vídeo em que a pessoa clicou. Vendas aprovadas aparecem em Analytics → Receita, no dashboard e no vídeo. Os números são as vendas que voltaram pelo webhook, não uma estimativa.

Onde encontrar​

  • Relatório: abra Analytics e selecione Receita.
  • Configuração: abra Integrações e APIs e selecione Receita.

O relatório mostra a receita do mês, a receita total, a receita por reprodução, as vendas, os reembolsos, a receita ao longo do tempo, a receita por fonte de tráfego e os principais vídeos. A configuração não fica no relatório. Use Configurar receita no relatório para abrir a tela de conexão.

Conectar um checkout​

Em Integrações e APIs → Receita:

  1. Confirme a moeda de relatório. Vendas novas são convertidas para essa moeda no total. Workspaces em português começam em BRL. Os demais começam em USD. Você pode mudar. Vendas já gravadas mantêm a taxa do dia da cobrança.
  2. Escolha o checkout: AtomicPay, Hotmart, Kiwify, Cartpanda, Stripe ou Personalizado.
  3. Escolha o parâmetro em que a chave de clique é gravada: src, sck, xcode, xcod, sid, subid, vtid ou sub1. O formulário começa no parâmetro que o checkout documenta. A Stripe não usa essa lista.
  4. Em um checkout personalizado, informe o host do link de compra, como pay.example.com. Os checkouts nomeados já conhecem os hosts.
  5. Selecione Conectar, leia os passos no cartão e copie a URL do webhook nesse checkout. A URL contém um token secreto. Trate-a como uma senha.

A moeda de relatório é uma lista: USD, BRL, EUR, GBP, MXN ou JPY. São as moedas que o total consegue converter. Cada pedido continua gravado na moeda em que foi cobrado.

AtomicPay​

Assine o webhook em centavos de compra aprovada, reembolso concluído e chargeback concluído. Use sck. O AtomicPay devolve esse valor na compra.

Hotmart​

Na Hotmart, abra Ferramentas → Webhook (API e notificações) e cadastre a URL. Selecione Compra aprovada, Compra reembolsada e Chargeback. Use src. A Hotmart devolve esse valor em purchase.origin.src no webhook de compra. O id do pedido é purchase.transaction. O valor é purchase.full_price.value na unidade maior. Um pedido de reembolso não é um reembolso. Espere PURCHASE_REFUNDED. Como cadastrar o webhook.

Kiwify​

Na Kiwify, abra Apps → Webhooks e crie um webhook. Selecione Compra aprovada, Compra reembolsada e Chargeback. Use src. A Kiwify devolve esse valor em TrackingParameters. O id do pedido é order_id. Eventos do webhook.

Cartpanda​

Na Cartpanda, abra Admin → Notificações → Webhooks. Envie order.paid e order.refunded para a URL. Use src. A Cartpanda guarda src e sck no link de checkout, inclusive lojas em mycartpanda.com. Parâmetros do checkout. Eventos do webhook.

Stripe​

Payment Links da Stripe (buy.stripe.com) não guardam src nem os outros parâmetros de rastreamento. A Stripe só guarda client_reference_id, e esse valor volta em checkout.session.completed. O player grava esse parâmetro.

No endpoint de webhook da Stripe, envie:

  • checkout.session.completed para a venda. É o evento que traz a chave do clique.
  • charge.refunded e refund.created para reembolso total. A Stripe também envia charge.refunded em reembolso parcial. O parcial permanece na receita. O total sai da receita líquida.
  • charge.dispute.created para uma disputa. charge.dispute.closed com status won devolve essa cobrança à receita.

payment_intent.succeeded tem valor e moeda na menor unidade, mas não inclui client_reference_id. Esse evento pode gravar a cobrança e não consegue atribuí-la a um vídeo. Na API atual da Stripe, invoice.paid não inclui o PaymentIntent. Uma venda salva só com o id da fatura não casa com um reembolso, que chega com o id do PaymentIntent. O valor usado é a moeda da cobrança no PaymentIntent ou na Checkout Session, não o valor de apresentação do Adaptive Pricing que o cliente viu.

Uma Checkout Session criada pela API da Stripe precisa definir client_reference_id na própria API. Acrescentar o parâmetro em checkout.stripe.com não altera uma sessão que já existe. Um pagamento que já terminou sem client_reference_id não pode ser atribuído depois. Faça um novo pagamento depois da atualização do player. Uma venda aprovada sem chave de clique aparece na lista de configuração e fica fora da receita.

Checkouts personalizados​

Checkouts nomeados têm o próprio parser. O personalizado não tem. Ele existe para um checkout que você controla, ou para uma plataforma que não está na lista. Ele precisa enviar este JSON para a URL do webhook:

{
"order_id": "order_123",
"order_amount_cents": 9700,
"currency": "USD",
"conversion_key": "ap1_chave_do_link",
"product_name": "Curso",
"category": "initial_sale",
"occurred_at": "2026-09-28T12:00:00Z"
}

order_amount_cents é um inteiro na menor unidade. 9700 é 97,00 USD. conversion_key precisa ser a chave que o player adicionou ao link. category pode ser refund, chargeback, upsell ou subscription_renewal. Qualquer outro payload é recusado, porque cada plataforma usa nomes de campo diferentes. Se a plataforma não conseguir mapear o webhook para esses campos, ela não pode ser conectada como personalizada.

Envie uma venda de teste para confirmar o webhook. A venda de teste entra na receita e pode ser removida.

Standard e Scale podem conectar um checkout e ver a receita. Free e Starter veem a configuração, mas a conexão fica bloqueada até o plano incluir o recurso.

Como uma venda é atribuída​

O player adiciona uma chave de clique nos links de compra da página e nos botões dentro do vídeo, somente quando o host do link corresponde a um checkout conectado. Uma chave que já existe é mantida.

A venda vai para o último clique nos 30 dias antes da cobrança. Uma venda aprovada sem chave, com chave desconhecida ou com clique expirado não é receita. Ela fica na lista de configuração para mostrar que o webhook chegou, e fica fora do total, do gráfico e de cada vídeo.

Um reembolso ou chargeback atualiza esse pedido e o tira da receita líquida. Uma aprovação posterior não transforma um pedido reembolsado em venda de novo.

O que os números são​

O total é uma moeda: a moeda de relatório do workspace. Uma venda cobrada em outra moeda é convertida com a taxa da data da venda e não é reescrita quando o câmbio muda. Receita por reprodução é esse total dividido pelas reproduções.

Isso não é atribuição multi-touch, receita de pixel de anúncio, CPA nem ROAS.

Documentos relacionados​

Perguntas frequentes​

Onde conecto Hotmart, Kiwify, Cartpanda, Stripe ou AtomicPay?

Abra Integrações e APIs e selecione Receita. Cole a URL do webhook no checkout. A guia Receita do Analytics é o relatório, não o formulário de conexão.

Por que a Stripe ignorou o parâmetro src?

Payment Links da Stripe só guardam client_reference_id, e só checkout.session.completed devolve esse valor. payment_intent.succeeded tem o valor e não tem a chave do clique. Adicione esse evento e faça um novo pagamento de teste.

O que um webhook genérico precisa enviar?

order_id, order_amount_cents como inteiro na menor unidade, currency e conversion_key com a chave do clique do link de compra. Outros formatos de JSON são recusados.

Qual clique recebe a venda?

O último clique nos 30 dias antes da cobrança. Só links cujo host corresponde a um checkout conectado recebem a chave.

Reembolsos ficam no total?

Não. Um reembolso concluído ou chargeback sai da receita líquida e aparece em reembolsos. Um pedido de reembolso que ainda não foi concluído não é um reembolso.

Por que o total não é a soma das linhas de vídeo?

Uma venda aprovada sem clique correspondente entra no total e não em um vídeo. As linhas de vídeo são só vendas com correspondência.