Pular para o conteúdo principal
Zenovay
Pro Plano15 minutesIntermediário

Configurando a Atribuição de Receita

Configure o rastreamento e a atribuição de receita — conecte compras às fontes de tráfego com implementação passo a passo. Explore a configuração de receita e as melhores práticas.

revenueattributionsetuptracking
Última atualização:
Pro Plano

Configure a atribuição de receita para rastrear quais canais de marketing geram vendas reais. Guia de implementação passo a passo.

Pré-requisitos

Antes de começar:

  • Script de rastreamento do Zenovay instalado
  • Acesso ao código de checkout/compra
  • Meta de receita habilitada

Configuração Básica

Rastreamento Simples de Receita

Rastreie a receita quando uma compra é concluída:

// On order confirmation page or in success callback
zenovay('revenue', 99.99, 'USD');

É isso para o rastreamento básico!

Com Nome de Meta

Associe a uma meta específica:

zenovay('goal', 'purchase', {
  value: 99.99
});

Implementação Completa

Objeto de Receita Completo

Inclua todos os dados relevantes:

zenovay('revenue', 149.99, 'USD', {
  // Recommended
  order_id: 'ORD-12345',

  // Optional - for detailed analysis
  items: [
    {
      id: 'SKU-001',
      name: 'Product Name',
      price: 49.99,
      quantity: 2,
      category: 'Electronics'
    },
    {
      id: 'SKU-002',
      name: 'Accessory',
      price: 50.00,
      quantity: 1,
      category: 'Accessories'
    }
  ],

  // Optional metadata
  coupon: 'SAVE10',
  shipping: 9.99,
  tax: 12.50
});

Implementação por Plataforma

Shopify

Para lojas Shopify:

  1. Vá a Configurações → Checkout
  2. Adicione à "Página de status do pedido":
{% if first_time_accessed %}
<script>
  zenovay('revenue', {{ total_price | money_without_currency }}, '{{ currency }}', {
    order_id: '{{ order_number }}',
    items: [
      {% for item in line_items %}
      {
        id: '{{ item.sku }}',
        name: '{{ item.title | escape }}',
        price: {{ item.final_price | money_without_currency }},
        quantity: {{ item.quantity }}
      }{% unless forloop.last %},{% endunless %}
      {% endfor %}
    ]
  });
</script>
{% endif %}

WooCommerce

Para WordPress/WooCommerce:

  1. Adicione a functions.php do seu tema ou a um plugin:
add_action('woocommerce_thankyou', 'zenovay_track_revenue');
function zenovay_track_revenue($order_id) {
    $order = wc_get_order($order_id);
    ?>
    <script>
    zenovay('revenue', <?php echo $order->get_total(); ?>, '<?php echo $order->get_currency(); ?>', {
        order_id: '<?php echo $order_id; ?>'
    });
    </script>
    <?php
}

React/Next.js

No componente de sucesso do checkout:

import { useEffect } from 'react';

function OrderConfirmation({ order }) {
  useEffect(() => {
    if (order && window.zenovay) {
      window.zenovay('revenue', order.total, order.currency, {
        order_id: order.id,
        items: order.items.map(item => ({
          id: item.sku,
          name: item.name,
          price: item.price,
          quantity: item.quantity
        }))
      });
    }
  }, [order]);

  return <div>Thank you for your order!</div>;
}

Rastreamento do Lado do Servidor

Enterprise Plano

Para rastreamento seguro do lado do servidor, use o ponto de extremidade de rastreamento com seu código de rastreamento:

// Node.js example - use the tracking endpoint directly
app.post('/api/order/complete', async (req, res) => {
  const order = await processOrder(req.body);

  await fetch('https://api.zenovay.com/e/YOUR_TRACKING_CODE', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-Forwarded-For': req.headers['x-forwarded-for'] || req.socket.remoteAddress,
    },
    body: JSON.stringify({
      type: 'revenue',
      url: req.headers.referer || 'https://yoursite.com/checkout',
      revenue: order.total,
      order_id: order.id,
      currency: 'USD'
    }),
  });

  res.json({ success: true });
});

Configuração de Atribuição

Modelo de Atribuição

O Zenovay não o obriga a se comprometer com um único modelo antecipadamente. Abra o painel do seu site, vá para a aba Receita, e mude o modelo diretamente no cartão Atribuição. Cinco modelos estão disponíveis:

  • Last Touch (padrão)
  • First Touch
  • Linear
  • Position-Based
  • Time-Decay

Você pode alterar o modelo a qualquer momento para ver os mesmos dados sob uma lente diferente — não há uma configuração separada de "modelo padrão" ou "janela de atribuição" para configurar primeiro.

Escolhendo um modelo de atribuição

O cartão Atribuição da aba Revenue permite alternar entre cinco modelos por relatório. Escolha o que corresponde à sua pergunta:

ModeloQuando usar
Last-Touch (padrão)Você quer saber o que fecha as vendas
First-TouchVocê quer saber o que impulsiona a descoberta
LinearVocê quer uma divisão equilibrada e neutra ao longo da jornada
Position-BasedVocê quer recompensar a descoberta (40%) e o fechamento (40%)
Time-DecayVocê tem ciclos de venda mais curtos — interações recentes pesam mais

O modelo escolhido é salvo na URL, então uma recarga o mantém. Se a maioria das conversões de um período veio de uma única sessão, os modelos multi-touch parecerão muito semelhantes ao Last-Touch — isso é esperado e se resolve à medida que mais jornadas multi-sessão se acumulam. Para uma análise mais detalhada de como as atribuições de first-touch e last-touch diferem, consulte Atribuição first-touch vs last-touch.

Por que todos os meus modelos de atribuição mostram quase os mesmos números?

Isso é esperado e não é um erro. Quando a maioria das conversões vem de visitantes que tiveram uma única sessão — ou permaneceram em um único canal — antes de converter, cada modelo atribui 100% do crédito a esse canal. Por isso Last-Touch, First-Touch, Linear, Position-Based e Time-Decay parecem quase idênticos.

Os modelos começam a divergir para visitantes que genuinamente transitaram por vários canais e sessões diferentes antes de converter; quanto mais jornadas multi-sessão se acumulam, maiores ficam as diferenças.

Trocar de modelo não alterará o canal de IA — o tráfego de IA é sempre creditado ao seu próprio canal em qualquer modelo.

Dica: para ver a maior diferença entre os modelos, compare First-Touch com Last-Touch — eles divergem sempre que o primeiro e o último canal de um visitante são diferentes.

Uma conversão sem valor monetário ainda conta para a atribuição de conversões; os valores de receita só aparecem quando uma receita está associada à meta.

IA como Canal de Atribuição

O Zenovay exibe IA como um canal de primeira classe no painel de atribuição, ao lado de Direto, Orgânico, Pago, Social e Referência. Quando um visitante que converte é identificado como tráfego de IA, essa conversão é creditada a IA em vez de ser agrupada em Direto ou em um canal UTM.

Expanda a linha IA para detalhá-la por produto de IA:

  • Produtos identificados — ChatGPT, Claude, Perplexity, Gemini, Copilot, DeepSeek e outros, quando a visita trouxe um referenciador de IA ou parâmetro UTM reconhecível.
  • Provável IA (não especificada) — visitantes que a heurística Dark IA identificou como originados de IA mesmo tendo chegado sem referenciador. Eles não podem ser atribuídos a um produto específico, por isso são agrupados honestamente sob este rótulo em vez de serem adivinhados.

Tenha em mente:

  • Esta é uma visão de conversões. Um produto de IA que envia visitas mas nenhuma conversão atribuível no período selecionado não aparecerá aqui — use a visão Influência de IA para o tráfego de IA por produto.
  • Ver apenas Provável IA (não especificada) é exato, não um dado ausente: significa que as conversões de IA do período foram detectadas por heurística sem um referenciador identificado.
  • A atribuição de IA aparece no painel autenticado; ela não é exibida intencionalmente em painéis públicos ou compartilhados.

Atribuição Entre Dispositivos

Enterprise Plano

Rastreie entre dispositivos:

  1. Identifique usuários quando fazem login
  2. Jornada unida automaticamente
  3. Caminho completo visível
// When user logs in
zenovay('identify', userId);

Configuração de Parâmetros UTM

Rastreamento de Campanha

Certifique-se de que os parâmetros UTM sejam usados:

https://yoursite.com/?utm_source=google
                     &utm_medium=cpc
                     &utm_campaign=spring_sale
                     &utm_content=banner_1

Parâmetros UTM

ParâmetroPropósitoExemplo
utm_sourceFonte de tráfegogoogle, facebook
utm_mediumMeio de marketingcpc, email
utm_campaignNome da campanhaspring_sale
utm_contentVariante do anúnciobanner_a
utm_termPalavras-chaveblue shoes

Configuração de Testes

Modo de Depuração

Ative o registro de depuração:

zenovay('debug');

Em seguida, rastreie uma compra de teste e verifique o console.

Compra de Teste

  1. Faça um pedido de teste
  2. Verifique o console do navegador
  3. Verifique na visão em tempo real
  4. Confirme no relatório de receita

Lista de Verificação de Verificação

  • Valor de receita correto
  • ID do pedido registrado
  • Itens rastreados (se enviados)
  • Fonte atribuída corretamente
  • Moeda correta

Tratamento de Casos Extremos

Receita Recorrente

Para assinaturas:

// Track initial purchase
zenovay('revenue', 29.99, 'USD', {
  order_id: 'SUB-001',
  type: 'subscription',
  interval: 'monthly'
});

// Track renewals
zenovay('revenue', 29.99, 'USD', {
  order_id: 'SUB-001-RENEWAL',
  type: 'subscription_renewal',
  original_order: 'SUB-001'
});

Reembolsos

Trate os reembolsos adequadamente:

// Track refund
zenovay('revenue', -49.99, 'USD', {
  order_id: 'REFUND-ORD-12345',
  type: 'refund',
  original_order: 'ORD-12345'
});

Remessas Parciais

Se a receita for reconhecida no envio:

// Track each shipment
zenovay('revenue', 50.00, 'USD', {
  order_id: 'ORD-12345-SHIP-1',
  parent_order: 'ORD-12345'
});

Qualidade de Dados

Prevenir Duplicatas

Certifique-se de que a receita não seja rastreada duas vezes:

// Using localStorage to prevent duplicates
function trackOrderOnce(order) {
  const tracked = localStorage.getItem(`tracked_${order.id}`);
  if (tracked) return;

  zenovay('revenue', order.total, 'USD', {
    order_id: order.id
  });

  localStorage.setItem(`tracked_${order.id}`, 'true');
}

Validar Antes de Enviar

Verifique a qualidade dos dados:

function trackRevenue(orderData) {
  // Validate
  if (!orderData.value || orderData.value <= 0) {
    console.warn('Invalid order value');
    return;
  }

  if (!orderData.order_id) {
    console.warn('Missing order ID');
    return;
  }

  // Track
  zenovay('revenue', orderData.value, orderData.currency || 'USD', {
    order_id: orderData.order_id
  });
}

Solução de Problemas

Receita Não Aparece

Se a receita não for exibida:

  1. Verifique se o rastreamento é acionado

    • Modo de depuração ativado?
    • Erros no console?
  2. Verifique a configuração da meta

    • Meta de receita criada?
    • Meta ativa?
  3. Verifique o tempo

    • Depois que a página carrega completamente?
    • No callback correto?
  4. Valide os dados

    • O valor é um número?
    • Não é $0?

Atribuição Faltando

Se a fonte não for creditada:

  1. Verifique se os parâmetros UTM estão presentes
  2. Verifique se o referenciador não está bloqueado
  3. Tente um modelo de atribuição diferente no cartão Atribuição da aba Revenue
  4. Confirme que a visita que converte foi rastreada em primeiro lugar (verifique a visão em tempo real)

Os Valores Não Correspondem

Se os totais diferirem da contabilidade:

  1. Compare os intervalos de datas
  2. Verifique os reembolsos
  3. Verifique o tratamento da moeda
  4. Procure por pedidos ausentes

Considerações de Segurança

Limitações do Rastreamento do Lado do Cliente

Tenha em mente:

  • Os valores podem ser manipulados
  • Não é para fins de faturamento
  • Apenas para análise

Lado do Servidor para Precisão

Para precisão crítica:

  • Implemente rastreamento do lado do servidor
  • Verifique contra o backend
  • Use para relatórios

Conectar um Processador de Pagamento (Servidor para Servidor)

Se você já processa pagamentos por um processador compatível, pode conectar sua conta ao Zenovay em vez de alterar o código do seu checkout. O Zenovay recebe webhooks do processador, atribui cada pagamento capturado à sessão de origem e alimenta automaticamente o painel de receita — sem precisar de chamadas zenovay('revenue', …) no lado do cliente.

A aba Configurações de Receita permite conectar Stripe, PayPal e Paddle. Cada um tem um guia de configuração passo a passo:

ProcessadorGuia de configuraçãoO que é rastreado
StripeIntegração de receita do StripeCapturas, reembolsos, faturas de assinatura
PayPalIntegração de receita do PayPalCapturas e reembolsos
PaddleIntegração de receita do PaddleCapturas e reembolsos

Escolha seu processador na aba Configurações de Receita, cole suas credenciais, e o Zenovay faz o resto.

Quando preferir a ingestão por webhook ao rastreador JS:

  • Precisão no servidor — as cargas dos webhooks são assinadas pelo processador e não podem ser alteradas por navegadores ou bloqueadores de anúncios.
  • Sem alterações no código do checkout — abra o painel do seu site, vá para a aba Receita das configurações, escolha seu processador, e cole suas credenciais.
  • Reembolsos tratados automaticamente — quando um reembolso é emitido no painel do seu processador, o Zenovay o registra.

Quando continuar usando o rastreador JS:

  • Você precisa de dados por item (items[]) que o processador não inclui nos webhooks.
  • Seu processador não está na lista acima.
  • Você quer que o pedido apareça na visão de visitantes em tempo real assim que o cliente chega à página de sucesso (os webhooks chegam alguns segundos depois).

Você pode usar as duas abordagens no mesmo site — o Zenovay deduplica pelo order_id, então o mesmo pedido não é contado em dobro.

Próximas Etapas

Este artigo foi útil?