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
Nome completo do lead Exemplo: "João Silva"
Telefone do lead Exemplo: "(11) 99999-9999"
Nome da empresa (B2B) Exemplo: "Tech LTDA"
Tipo ou categoria do lead Exemplo: "trial_signup", "newsletter",
"demo_request"
URL onde o lead foi capturado Exemplo: "https://seu-site.com/signup"
Origem ou canal do lead Exemplo: "landing_page", "popup", "checkout"
Data/hora ISO 8601 da captura Exemplo: "2024-01-15T10:35:00Z"
Exemplos de Implementação
// 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
// 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
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
Rastreie apenas leads qualificados
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
Use lead_type para categorizar
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] '
});
Inclua o máximo de dados possível
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
});
Rastreie em momentos-chave
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
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
});
Confirme se affiliate_id é válido
O código de referência deve existir e estar ativo
Valide o domínio
O domínio de origem deve estar permitido na campanha
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