Descrição
O evento page_view rastreia quando um visitante acessa uma página através do link de um afiliado. Este é o primeiro ponto de contato no funil de conversão e é essencial para:
Medir o alcance dos afiliados
Calcular taxas de conversão (leads/visitas e vendas/visitas)
Identificar páginas populares na jornada do usuário
Analisar padrões de navegação dos visitantes
Quando Usar
Automaticamente Ao carregar o SDK JavaScript com autoPageView: true (padrão)
Manualmente Em navegações SPA (React, Vue, Angular)
Landing Pages Para rastrear visualizações de páginas específicas
Engajamento Ao medir interações em páginas de produto/serviço
Propriedades Suportadas
URL completa da página visitada Exemplo: https://seu-site.com/produto
Título da página (document.title) Exemplo: "Produto Premium - Sua Empresa"
URL de origem do visitante (document.referrer) Exemplo:
"https://google.com"
Data/hora ISO 8601 da visualização Exemplo: "2024-01-15T10:30:00Z"
Identificador customizado da página Exemplo: "home", "pricing",
"checkout"
Exemplos de Implementação
SDK JavaScript - Rastreamento Automático
// Page view enviado automaticamente ao carregar
const affiliatus = new Affiliatus ( "seu-campaign-id" );
// Pronto! Não precisa fazer mais nada.
SDK JavaScript - Rastreamento Manual
const affiliatus = new Affiliatus ( "seu-campaign-id" , {
autoPageView: false , // Desabilitar automático
});
// Rastrear manualmente
affiliatus . trackPageView ({
page: "pricing" ,
url: window . location . href ,
title: document . title ,
});
Single Page Application (SPA)
React Router
Vue Router
Next.js App Router
import { useEffect } from "react" ;
import { useLocation } from "react-router-dom" ;
function App () {
const location = useLocation ();
useEffect (() => {
// Rastrear mudança de rota
affiliatus . trackPageView ({
page: location . pathname ,
url: window . location . href ,
title: document . title ,
});
}, [ location ]);
return < Router > { /* ... */ } </ Router > ;
}
API REST - Backend Integration
// Rastreamento server-side
app . get ( "/produto/:id" , async ( req , res ) => {
const affiliateId = req . cookies . affiliate_id ;
const sessionId = req . cookies . session_id ;
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: "page_view" ,
campaign_id: process . env . CAMPAIGN_ID ,
affiliate_id: affiliateId ,
session_id: sessionId ,
properties: {
url: ` ${ req . protocol } :// ${ req . get ( "host" ) }${ req . originalUrl } ` ,
title: "Página do Produto" ,
page: "product-details" ,
},
device_info: {
user_agent: req . headers [ "user-agent" ],
language: req . headers [ "accept-language" ],
ip: req . ip ,
},
},
],
}),
});
}
res . render ( "produto" , { id: req . params . id });
});
PHP - Server-side Tracking
<? php
// Rastreamento server-side de page view
function trackPageView ( $affiliateId , $sessionId , $pageTitle ) {
$data = [
'events' => [[
'event_type' => 'page_view' ,
'campaign_id' => $_ENV [ 'CAMPAIGN_ID' ],
'affiliate_id' => $affiliateId ,
'session_id' => $sessionId ,
'properties' => [
'url' => $_SERVER [ 'REQUEST_URI' ],
'title' => $pageTitle ,
'referrer' => $_SERVER [ 'HTTP_REFERER' ] ?? '' ,
'page' => basename ( $_SERVER [ 'PHP_SELF' ], '.php' )
],
'device_info' => [
'user_agent' => $_SERVER [ 'HTTP_USER_AGENT' ],
'ip' => $_SERVER [ 'REMOTE_ADDR' ],
'language' => $_SERVER [ 'HTTP_ACCEPT_LANGUAGE' ] ?? 'pt-BR'
]
]]
];
$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 );
}
// Usar no início de cada página
$affiliateId = $_COOKIE [ 'affiliate_id' ] ?? null ;
$sessionId = $_COOKIE [ 'session_id' ] ?? null ;
if ( $affiliateId ) {
trackPageView ( $affiliateId , $sessionId , 'Página de Produto' );
}
?>
Métricas Geradas
O evento Page View gera as seguintes métricas no dashboard:
Total de Visitas Número total de page views por afiliado
Taxa de Rejeição Percentual de visitas sem lead/conversão
Páginas Mais Visitadas Quais páginas geram mais tráfego
Origem do Tráfego De onde vêm os visitantes (via referrer)
Engajamento Tempo entre visitas e conversões
Taxa de Conversão Page Views → Leads → Conversions
Boas Práticas
Evite page views duplicados em SPAs
Em React/Vue/Angular, desative autoPageView: false e rastreie manualmente nas transições de rota para evitar duplicatas. const affiliatus = new Affiliatus ( 'campaign-id' , {
autoPageView: false
});
Inclua informações de contexto
Adicione propriedades como page, section, category para análises mais ricas. affiliatus . trackPageView ({
page: 'product-details' ,
section: 'ecommerce' ,
category: 'electronics' ,
product_id: '12345'
});
Rastreie páginas importantes
Foque em páginas que indicam intenção de compra: pricing, features, demo. Não rastreie TODAS as páginas. Páginas importantes:
Home
Pricing
Features
Product Details
Checkout
Evite rastrear:
Páginas de erro
Política de privacidade
Termos de uso
Use identificadores consistentes
Use sempre o mesmo formato para a propriedade page para facilitar análises. // <Icon icon="check" color="#db2777" /> BOM - consistente
page : 'home'
page : 'pricing'
page : 'product-details'
// <Icon icon="x" /> RUIM - inconsistente
page : 'Home Page'
page : '/pricing/'
page : 'ProductDetails'
Troubleshooting
Page views não aparecem no dashboard
Verifique se a campanha está ativa
Status deve ser active, não draft ou paused
Confirme se o affiliate_id existe
O código de referência deve estar cadastrado e com status active
Valide o domain
O domínio de origem deve estar na lista de domínios permitidos da campanha
Cheque os logs de erro
Abra DevTools (F12) → Console para ver erros do SDK // Ativar modo debug
const affiliatus = new Affiliatus ( 'campaign-id' , {
debug: true
});
Page views duplicados
Se você está vendo page views duplicados, provavelmente está usando SPA sem desabilitar o modo automático:
// <Icon icon="check" color="#db2777" /> SOLUÇÃO
const affiliatus = new Affiliatus ( "campaign-id" , {
autoPageView: false , // Desabilitar automático
});
// Rastrear manualmente nas mudanças de rota
router . afterEach (() => {
affiliatus . trackPageView ({
/* ... */
});
});
Próximos Passos