Skip to main content

Descrição

O evento lead rastreia quando um visitante fornece informações de contato ou demonstra interesse qualificado no seu produto/serviço. Este evento representa o meio do funil e é crucial para:
  • Qualificar o tráfego dos afiliados
  • Medir a intenção de compra dos visitantes
  • Calcular conversão de lead para venda
  • Nutrir leads com informações de atribuição

Quando Usar

Formulários

Quando o usuário preenche formulário de interesse

Trial Gratuito

Ao cadastrar-se para trial gratuito

Newsletter

Ao assinar newsletter ou baixar material

Carrinho

Ao adicionar produtos ao carrinho

Checkout

Ao iniciar processo de checkout

Demo

Ao solicitar demonstração ou contato

Propriedades Suportadas

email
string
E-mail do lead (recomendado para deduplicação) Exemplo: "[email protected]"
name
string
Nome completo do lead Exemplo: "João Silva"
phone
string
Telefone do lead Exemplo: "(11) 99999-9999"
company
string
Nome da empresa (B2B) Exemplo: "Tech LTDA"
lead_type
string
Tipo ou categoria do lead Exemplo: "trial_signup", "newsletter", "demo_request"
url
string
URL onde o lead foi capturado Exemplo: "https://seu-site.com/signup"
source
string
Origem ou canal do lead Exemplo: "landing_page", "popup", "checkout"
timestamp
string
Data/hora ISO 8601 da captura Exemplo: "2024-01-15T10:35:00Z"

Exemplos de Implementação

SDK JavaScript - Formulário de Cadastro

// Ao submeter formulário de cadastro
document.getElementById("signup-form").addEventListener("submit", async (e) => {
  e.preventDefault();

  const formData = new FormData(e.target);

  // Rastrear lead
  affiliatus.trackLead({
    email: formData.get("email"),
    name: formData.get("name"),
    phone: formData.get("phone"),
    lead_type: "trial_signup",
    source: "hero_form",
    url: window.location.href,
  });

  // Continuar com o submit
  await submitForm(formData);
});

SDK JavaScript - Início de Trial

// Ao iniciar trial gratuito
async function startTrial(userData) {
  try {
    // Criar conta no backend
    const response = await fetch("/api/users/trial", {
      method: "POST",
      body: JSON.stringify(userData),
    });

    const user = await response.json();

    // Rastrear lead
    affiliatus.trackLead({
      email: user.email,
      name: user.name,
      company: user.company,
      lead_type: "trial_started",
      url: window.location.href,
    });

    // Redirecionar para o app
    window.location.href = "/app/onboarding";
  } catch (error) {
    console.error("Erro ao criar trial:", error);
  }
}

SDK JavaScript - Newsletter

// Captura de email para newsletter
document.getElementById("newsletter-form").addEventListener("submit", (e) => {
  e.preventDefault();

  const email = e.target.email.value;

  affiliatus.trackLead({
    email: email,
    lead_type: "newsletter_signup",
    source: "footer_form",
  });

  // Mostrar mensagem de sucesso
  showSuccessMessage("Obrigado por se inscrever!");
});

SDK JavaScript - Adicionar ao Carrinho

// Ao adicionar produto ao carrinho
function addToCart(product) {
  // Adicionar ao carrinho
  cart.add(product);

  // Rastrear como lead (intenção de compra)
  affiliatus.trackLead({
    lead_type: "add_to_cart",
    source: "product_page",
    product_id: product.id,
    product_name: product.name,
    product_price: product.price,
    url: window.location.href,
  });

  showCartNotification();
}

API REST - Backend Integration

// Processar webhook de plataforma de email
app.post("/webhook/newsletter", async (req, res) => {
  const { email, name, source } = req.body;

  // Buscar affiliate_id da sessão ou cookie
  const affiliateId = await getAffiliateFromEmail(email);
  const sessionId = await getSessionFromEmail(email);

  if (affiliateId) {
    await fetch("https://api.affiliatus.io/v1/events", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-API-Key": process.env.AFFILIATUS_API_KEY,
      },
      body: JSON.stringify({
        events: [
          {
            event_type: "lead",
            campaign_id: process.env.CAMPAIGN_ID,
            affiliate_id: affiliateId,
            session_id: sessionId,
            properties: {
              email,
              name,
              lead_type: "newsletter_signup",
              source: source || "website",
              timestamp: new Date().toISOString(),
            },
            device_info: {
              user_agent: req.headers["user-agent"],
              ip: req.ip,
            },
          },
        ],
      }),
    });
  }

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

Python - CRM Integration

import requests
from datetime import datetime
import os

def track_lead_capture(lead_data):
    """Rastrear lead capturado no CRM"""

    payload = {
        'events': [{
            'event_type': 'lead',
            'campaign_id': os.getenv('CAMPAIGN_ID'),
            'affiliate_id': lead_data.get('affiliate_id'),
            'session_id': lead_data.get('session_id'),
            'properties': {
                'email': lead_data['email'],
                'name': lead_data['name'],
                'phone': lead_data.get('phone'),
                'company': lead_data.get('company'),
                'lead_type': 'crm_import',
                'source': lead_data.get('source', 'crm'),
                'timestamp': datetime.utcnow().isoformat()
            },
            'device_info': {
                'user_agent': lead_data.get('user_agent'),
                'ip': lead_data.get('ip_address')
            }
        }]
    }

    response = requests.post(
        'https://api.affiliatus.io/v1/events',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.getenv('AFFILIATUS_API_KEY')
        },
        json=payload
    )

    return response.json()

# Exemplo de uso
lead = {
    'email': '[email protected]',
    'name': 'João Silva',
    'phone': '11999999999',
    'company': 'Empresa LTDA',
    'affiliate_id': 'JOAO1',
    'session_id': 'sess_abc123',
    'source': 'linkedin'
}

result = track_lead_capture(lead)
print(f"Lead rastreado: {result}")

PHP - Formulário de Contato

<?php
// Processar formulário de contato
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = $_POST['email'];
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];

    // Buscar affiliate_id do cookie
    $affiliateId = $_COOKIE['affiliate_id'] ?? null;
    $sessionId = $_COOKIE['session_id'] ?? null;

    if ($affiliateId) {
        // Rastrear lead no Affiliatus
        $data = [
            'events' => [[
                'event_type' => 'lead',
                'campaign_id' => $_ENV['CAMPAIGN_ID'],
                'affiliate_id' => $affiliateId,
                'session_id' => $sessionId,
                'properties' => [
                    'email' => $email,
                    'name' => $name,
                    'phone' => $phone,
                    'lead_type' => 'contact_form',
                    'source' => 'contact_page',
                    'message_preview' => substr($message, 0, 100),
                    'url' => $_SERVER['REQUEST_URI']
                ],
                'device_info' => [
                    'user_agent' => $_SERVER['HTTP_USER_AGENT'],
                    'ip' => $_SERVER['REMOTE_ADDR']
                ]
            ]]
        ];

        $ch = curl_init('https://api.affiliatus.io/v1/events');
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'X-API-Key: ' . $_ENV['AFFILIATUS_API_KEY']
        ]);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_exec($ch);
        curl_close($ch);
    }

    // Processar mensagem normalmente
    sendEmailToSales($email, $name, $message);

    echo json_encode(['success' => true]);
}
?>

Métricas Geradas

O evento Lead gera as seguintes métricas no dashboard:

Total de Leads

Número total de leads capturados por afiliado

Taxa de Conversão

Page Views → Leads (%)

Qualidade do Tráfego

Percentual de visitas que viram leads

Leads por Tipo

Distribuição por lead_type

Custo por Lead

Comissões dividido por leads

Lead → Sale Rate

Taxa de conversão de lead para venda

Tipos de Lead Recomendados

Use esses valores em lead_type para categorizar seus leads:
  • trial_signup - Cadastro em trial gratuito - trial_started - Trial ativado - demo_request - Solicitação de demonstração - demo_scheduled - Demo agendada
  • contact_form - Formulário de contato - quote_request - Solicitação de orçamento - consultation_request - Pedido de consultoria
  • newsletter_signup - Inscrição na newsletter - ebook_download - Download de material - webinar_registration - Registro em webinar
  • add_to_cart - Adicionou ao carrinho - checkout_started - Iniciou checkout - wishlist_add - Adicionou à lista de desejos
  • pricing_viewed - Visualizou pricing - feature_explored - Explorou features - video_watched - Assistiu vídeo completo

Boas Práticas

Não rastreie todos os formulários. Foque em ações que indicam real interesse. Rastrear:
  • Trial gratuito
  • Demo/consultoria
  • Contato comercial
  • Checkout iniciado
Evitar rastrear:
  • Busca no site
  • Visualização de qualquer página
  • Scroll ou hover
  • Cliques genéricos
Diferencie tipos de leads para análises mais precisas.
// <Icon icon="check" color="#db2777" /> BOM - categorizado
affiliatus.trackLead({
  email: '[email protected]',
  lead_type: 'trial_signup',
  source: 'pricing_page'
});

// <Icon icon="x" /> RUIM - genérico
affiliatus.trackLead({
  email: '[email protected]'
});
Envie email, nome, telefone quando disponível. Ajuda na análise e deduplicação futura.
// <Icon icon="check" color="#db2777" /> COMPLETO
affiliatus.trackLead({
  email: '[email protected]',
  name: 'João Silva',
  phone: '11999999999',
  company: 'Empresa LTDA',
  lead_type: 'trial_signup',
  source: 'homepage_hero',
  url: window.location.href
});
Capture o lead no momento certo da jornada.Momentos ideais:
  • Após submit do formulário (aguardar validação)
  • Ao criar conta no backend
  • Quando trial é ativado
  • Ao iniciar checkout
Evite:
  • Ao focar no campo de email
  • Ao começar a digitar
  • Antes da validação do formulário

Troubleshooting

Leads não aparecem no dashboard

1

Verifique se o evento foi enviado

Abra DevTools (F12) → Network → Filtre por “affiliatus” ou “events”
// Ativar debug para ver logs
const affiliatus = new Affiliatus('campaign-id', {
  debug: true
});
2

Confirme se affiliate_id é válido

O código de referência deve existir e estar ativo
3

Valide o domínio

O domínio de origem deve estar permitido na campanha
4

Cheque se o session_id é consistente

O session_id deve ser o mesmo da page view inicial

Leads duplicados

Se o mesmo usuário está gerando múltiplos leads:
// Use uma flag para evitar duplicatas
let leadTracked = false;

document.getElementById("form").addEventListener("submit", (e) => {
  e.preventDefault();

  if (!leadTracked) {
    affiliatus.trackLead({
      /* ... */
    });
    leadTracked = true;
  }

  submitForm();
});
Ou use localStorage:
const leadKey = `lead_tracked_${formData.email}`;

if (!localStorage.getItem(leadKey)) {
  affiliatus.trackLead({
    /* ... */
  });
  localStorage.setItem(leadKey, "true");
}

Próximos Passos