Skip to main content

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
string
required
URL completa da página visitada Exemplo: https://seu-site.com/produto
title
string
Título da página (document.title) Exemplo: "Produto Premium - Sua Empresa"
referrer
string
URL de origem do visitante (document.referrer) Exemplo: "https://google.com"
timestamp
string
Data/hora ISO 8601 da visualização Exemplo: "2024-01-15T10:30:00Z"
page
string
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)

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

Node.js
// 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

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
});
Adicione propriedades como page, section, category para análises mais ricas.
affiliatus.trackPageView({
  page: 'product-details',
  section: 'ecommerce',
  category: 'electronics',
  product_id: '12345'
});
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 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

1

Verifique se a campanha está ativa

Status deve ser active, não draft ou paused
2

Confirme se o affiliate_id existe

O código de referência deve estar cadastrado e com status active
3

Valide o domain

O domínio de origem deve estar na lista de domínios permitidos da campanha
4

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