Pular para conteúdo

EVENT - Rastrear Eventos de Negócio

O que é este Node?

O EVENT é o node responsável por rastrear eventos de negócio e ações do usuário com tipo, propriedades e contexto completo para análise comportamental.

Por que este Node existe?

Eventos de negócio são cruciais para análise. O EVENT existe para:

  1. Rastreamento de ações: Capturar ações importantes dos usuários
  2. Análise comportamental: Entender padrões de uso e jornada
  3. Funis de conversão: Mapear etapas críticas do negócio
  4. Segmentação de usuários: Classificar usuários por comportamento
  5. Product analytics: Medir engajamento e adoção de features

Como funciona internamente?

Quando o EVENT é executado, o sistema:

  1. Valida dados obrigatórios (eventType e eventName)
  2. Enriquece propriedades com dados contextuais (URL, user agent, IP)
  3. Gera anonymous_id se usuário não identificado
  4. Adiciona contexto de campanha (source, medium, campaign)
  5. Adiciona timestamp se não fornecido
  6. Rastreia evento no sistema de analytics
  7. Retorna confirmação com dados completos do evento

Código interno (analytics-executor.service.ts:162-202):

private async executeEvent(parameters: any, context: any): Promise<any> {
  const { eventType, eventName, properties, userId, anonymous_id, timestamp } = parameters;

  this.logger.log(`🎯 EVENT - Type: ${eventType}, Name: ${eventName}`);

  if (!eventType || !eventName) {
    throw new Error('Event type and name are required');
  }

  const event = {
    eventType: eventType, // track, page, screen, identify, group, alias
    eventName: eventName,
    properties: {
      ...properties,
      timestamp: timestamp || new Date().toISOString(),
      page_url: context.pageUrl,
      user_agent: context.userAgent,
      ip_address: context.ipAddress
    },
    userId: userId || context.userId,
    anonymous_id: anonymous_id || this.generateAnonymousId(),
    context: {
      flowId: context.flowId,
      sessionId: context.sessionId,
      campaign: context.campaign,
      source: context.source,
      medium: context.medium
    },
    timestamp: timestamp || new Date().toISOString()
  };

  // Track event (in production, send to analytics platform)
  await this.trackEvent(event);

  return {
    success: true,
    action: 'event_tracked',
    event: event,
    timestamp: event.timestamp
  };
}

Quando você DEVE usar este Node?

Use EVENT sempre que precisar rastrear ações de negócio:

Casos de uso:

  1. Jornada do usuário: Rastrear cada etapa da experiência
  2. Features de produto: Medir uso de funcionalidades
  3. Conversões: Registrar eventos críticos (cadastro, compra, cancelamento)
  4. Engajamento: Medir interação com conteúdo
  5. Retenção: Identificar padrões de retorno
  6. Segmentação: Criar cohorts baseados em comportamento

Quando NÃO usar EVENT:

  • Métricas numéricas: Use METRIC para KPIs com valores
  • Analytics com providers: Use ANALYTICS para GA/Mixpanel
  • Logs técnicos: Use LOGGER para debug

Parâmetros Detalhados

eventType (string, obrigatório)

O que é: Tipo de evento seguindo padrão Segment/analytics.

Opções: - track - Ação do usuário (padrão mais comum) - page - Visualização de página - screen - Visualização de tela (mobile) - identify - Identificar usuário - group - Associar usuário a grupo/empresa - alias - Conectar identidades de usuário

Flow completo para testar tipos:

{
  "name": "Teste EVENT - Event Types",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "event_track",
      "type": "event",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Track - Botão Clicado",
        "parameters": {
          "eventType": "track",
          "eventName": "button_clicked",
          "properties": {
            "button_id": "cta_signup",
            "button_text": "Criar Conta"
          }
        }
      }
    },
    {
      "id": "event_page",
      "type": "event",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Page - Página Vista",
        "parameters": {
          "eventType": "page",
          "eventName": "page_viewed",
          "properties": {
            "page_name": "Pricing",
            "page_path": "/pricing"
          }
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Email",
        "parameters": {
          "message": "Seu email:",
          "variable": "email"
        }
      }
    },
    {
      "id": "event_identify",
      "type": "event",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Identify - Usuário",
        "parameters": {
          "eventType": "identify",
          "eventName": "user_identified",
          "properties": {
            "email": "{{email}}",
            "identified_at": "{{$timestamp}}"
          }
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "✅ 3 tipos de eventos rastreados:\n- Track (ação)\n- Page (página)\n- Identify (usuário)"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1300, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "event_track" },
    { "source": "event_track", "target": "event_page" },
    { "source": "event_page", "target": "input_1" },
    { "source": "input_1", "target": "event_identify" },
    { "source": "event_identify", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Eventos de track, page e identify serão registrados

eventName (string, obrigatório)

O que é: Nome descritivo do evento (use snake_case).

Flow completo para testar:

{
  "name": "Teste EVENT - Event Names",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "event_1",
      "type": "event",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Produto Visualizado",
        "parameters": {
          "eventType": "track",
          "eventName": "product_viewed"
        }
      }
    },
    {
      "id": "event_2",
      "type": "event",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Adicionado ao Carrinho",
        "parameters": {
          "eventType": "track",
          "eventName": "product_added_to_cart"
        }
      }
    },
    {
      "id": "event_3",
      "type": "event",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Checkout Iniciado",
        "parameters": {
          "eventType": "track",
          "eventName": "checkout_started"
        }
      }
    },
    {
      "id": "event_4",
      "type": "event",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Compra Completa",
        "parameters": {
          "eventType": "track",
          "eventName": "purchase_completed"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "✅ Funil de e-commerce rastreado:\n1. product_viewed\n2. product_added_to_cart\n3. checkout_started\n4. purchase_completed"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1300, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "event_1" },
    { "source": "event_1", "target": "event_2" },
    { "source": "event_2", "target": "event_3" },
    { "source": "event_3", "target": "event_4" },
    { "source": "event_4", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

properties (object, opcional)

O que é: Propriedades adicionais do evento com contexto.

Flow completo para testar:

{
  "name": "Teste EVENT - Properties",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_produto",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Produto",
        "parameters": {
          "message": "Qual produto?",
          "variable": "produto"
        }
      }
    },
    {
      "id": "number_preco",
      "type": "number",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Preço",
        "parameters": {
          "message": "Preço:",
          "variable": "preco",
          "decimals": 2
        }
      }
    },
    {
      "id": "number_qty",
      "type": "number",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Quantidade",
        "parameters": {
          "message": "Quantidade:",
          "variable": "quantidade",
          "min": 1
        }
      }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Calcular Total",
        "parameters": {
          "operation": "set",
          "variables": {
            "total": "{{preco * quantidade}}"
          }
        }
      }
    },
    {
      "id": "event_1",
      "type": "event",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Rastrear Compra",
        "parameters": {
          "eventType": "track",
          "eventName": "purchase_completed",
          "properties": {
            "product_name": "{{produto}}",
            "product_price": "{{preco}}",
            "quantity": "{{quantidade}}",
            "total_value": "{{total}}",
            "currency": "BRL",
            "payment_method": "credit_card",
            "category": "electronics",
            "brand": "Apple",
            "sku": "IPHONE15-128GB"
          }
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 1300, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "✅ Compra rastreada!\n\n🛍️ {{quantidade}}x {{produto}}\n💰 Total: R$ {{total}}\n\n📊 Evento com propriedades completas registrado!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1500, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_produto" },
    { "source": "input_produto", "target": "number_preco" },
    { "source": "number_preco", "target": "number_qty" },
    { "source": "number_qty", "target": "variable_1" },
    { "source": "variable_1", "target": "event_1" },
    { "source": "event_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite "iPhone 15", 5000, 2 - evento com todas as propriedades será rastreado

userId (string, opcional)

O que é: ID do usuário (para usuários identificados).

Padrão: Usa context.userId automaticamente

anonymous_id (string, opcional)

O que é: ID anônimo para rastrear antes da identificação.

Padrão: Gerado automaticamente (anon_timestamp_random)

timestamp (string, opcional)

O que é: Timestamp ISO 8601 do evento.

Padrão: Data/hora atual

Parâmetros

Campo Tipo Obrigatório Descrição
eventType string Sim Tipo do evento (track, page, screen, identify, group, alias)
eventName string Sim Nome do evento (snake_case)
properties object Não Propriedades adicionais do evento
userId string Não ID do usuário (padrão: context.userId)
anonymous_id string Não ID anônimo (auto-gerado se omitido)
timestamp string Não Timestamp ISO 8601 (padrão: now)

Exemplo 1: Funil Completo de Onboarding

Objetivo: Rastrear todas as etapas do onboarding

JSON para Importar

{
  "name": "Onboarding Funnel Tracking",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "event_started",
      "type": "event",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Onboarding Iniciado",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_started",
          "properties": {
            "source": "whatsapp",
            "flow_version": "v2"
          }
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Boas-vindas",
        "parameters": {
          "message": "👋 Bem-vindo! Vamos criar sua conta em 3 passos."
        }
      }
    },
    {
      "id": "event_step1",
      "type": "event",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Step 1 Iniciado",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_step_started",
          "properties": {
            "step_number": 1,
            "step_name": "personal_info"
          }
        }
      }
    },
    {
      "id": "input_nome",
      "type": "input",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Nome",
        "parameters": {
          "message": "1/3: Seu nome completo:",
          "variable": "nome"
        }
      }
    },
    {
      "id": "event_step1_completed",
      "type": "event",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Step 1 Completo",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_step_completed",
          "properties": {
            "step_number": 1,
            "step_name": "personal_info"
          }
        }
      }
    },
    {
      "id": "event_step2",
      "type": "event",
      "position": { "x": 1300, "y": 100 },
      "data": {
        "label": "Step 2 Iniciado",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_step_started",
          "properties": {
            "step_number": 2,
            "step_name": "contact_info"
          }
        }
      }
    },
    {
      "id": "email_1",
      "type": "email",
      "position": { "x": 1500, "y": 100 },
      "data": {
        "label": "Email",
        "parameters": {
          "message": "2/3: Seu email:",
          "variable": "email"
        }
      }
    },
    {
      "id": "event_step2_completed",
      "type": "event",
      "position": { "x": 1700, "y": 100 },
      "data": {
        "label": "Step 2 Completo",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_step_completed",
          "properties": {
            "step_number": 2,
            "step_name": "contact_info",
            "email": "{{email}}"
          }
        }
      }
    },
    {
      "id": "event_identify",
      "type": "event",
      "position": { "x": 1900, "y": 100 },
      "data": {
        "label": "Identificar Usuário",
        "parameters": {
          "eventType": "identify",
          "eventName": "user_identified",
          "properties": {
            "name": "{{nome}}",
            "email": "{{email}}",
            "signup_date": "{{$timestamp}}"
          }
        }
      }
    },
    {
      "id": "event_step3",
      "type": "event",
      "position": { "x": 2100, "y": 100 },
      "data": {
        "label": "Step 3 Iniciado",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_step_started",
          "properties": {
            "step_number": 3,
            "step_name": "preferences"
          }
        }
      }
    },
    {
      "id": "input_interesse",
      "type": "input",
      "position": { "x": 2300, "y": 100 },
      "data": {
        "label": "Interesses",
        "parameters": {
          "message": "3/3: Qual seu principal interesse? (vendas/marketing/suporte)",
          "variable": "interesse"
        }
      }
    },
    {
      "id": "event_step3_completed",
      "type": "event",
      "position": { "x": 2500, "y": 100 },
      "data": {
        "label": "Step 3 Completo",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_step_completed",
          "properties": {
            "step_number": 3,
            "step_name": "preferences",
            "interest": "{{interesse}}"
          }
        }
      }
    },
    {
      "id": "event_completed",
      "type": "event",
      "position": { "x": 2700, "y": 100 },
      "data": {
        "label": "Onboarding Completo",
        "parameters": {
          "eventType": "track",
          "eventName": "onboarding_completed",
          "properties": {
            "total_steps": 3,
            "completed_at": "{{$timestamp}}",
            "interest": "{{interesse}}"
          }
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 2900, "y": 100 },
      "data": {
        "label": "Concluído",
        "parameters": {
          "message": "🎉 Parabéns, {{nome}}!\n\nSeu cadastro está completo!\n\n📊 Toda sua jornada foi rastreada:\n- 3 steps iniciados\n- 3 steps completados\n- Usuário identificado\n- Onboarding completo"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 3100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "event_started" },
    { "source": "event_started", "target": "message_1" },
    { "source": "message_1", "target": "event_step1" },
    { "source": "event_step1", "target": "input_nome" },
    { "source": "input_nome", "target": "event_step1_completed" },
    { "source": "event_step1_completed", "target": "event_step2" },
    { "source": "event_step2", "target": "email_1" },
    { "source": "email_1", "target": "event_step2_completed" },
    { "source": "event_step2_completed", "target": "event_identify" },
    { "source": "event_identify", "target": "event_step3" },
    { "source": "event_step3", "target": "input_interesse" },
    { "source": "input_interesse", "target": "event_step3_completed" },
    { "source": "event_step3_completed", "target": "event_completed" },
    { "source": "event_completed", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: 👋 Bem-vindo! Vamos criar sua conta em 3 passos.
Sistema: 1/3: Seu nome completo:
Usuário: João Silva
Sistema: 2/3: Seu email:
Usuário: joao@example.com
Sistema: 3/3: Qual seu principal interesse? (vendas/marketing/suporte)
Usuário: vendas
Sistema: 🎉 Parabéns, João Silva!

Seu cadastro está completo!

📊 Toda sua jornada foi rastreada:
- 3 steps iniciados
- 3 steps completados
- Usuário identificado
- Onboarding completo

Eventos rastreados: 1. onboarding_started 2. onboarding_step_started (step 1) 3. onboarding_step_completed (step 1) 4. onboarding_step_started (step 2) 5. onboarding_step_completed (step 2) 6. user_identified (identify) 7. onboarding_step_started (step 3) 8. onboarding_step_completed (step 3) 9. onboarding_completed

Exemplo 2: Rastreamento de Feature Usage

Objetivo: Medir uso de diferentes features do produto

JSON para Importar

{
  "name": "Feature Usage Tracking",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Menu",
        "parameters": {
          "message": "Escolha uma feature:\n1. Relatório\n2. Exportar\n3. Compartilhar\n4. Configurar"
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Escolha",
        "parameters": {
          "message": "Digite o número:",
          "variable": "opcao"
        }
      }
    },
    {
      "id": "event_feature_accessed",
      "type": "event",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Feature Acessada",
        "parameters": {
          "eventType": "track",
          "eventName": "feature_accessed",
          "properties": {
            "feature_option": "{{opcao}}",
            "access_method": "menu",
            "session_duration_so_far": 120
          }
        }
      }
    },
    {
      "id": "switch_1",
      "type": "switch",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Qual Feature?",
        "parameters": {
          "variable": "opcao",
          "cases": [
            { "value": "1", "label": "Relatório" },
            { "value": "2", "label": "Exportar" },
            { "value": "3", "label": "Compartilhar" },
            { "value": "4", "label": "Configurar" }
          ]
        }
      }
    },
    {
      "id": "event_report",
      "type": "event",
      "position": { "x": 1100, "y": 0 },
      "data": {
        "label": "Relatório Usado",
        "parameters": {
          "eventType": "track",
          "eventName": "feature_used",
          "properties": {
            "feature_name": "report",
            "feature_category": "analytics",
            "usage_count": 1
          }
        }
      }
    },
    {
      "id": "event_export",
      "type": "event",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Exportar Usado",
        "parameters": {
          "eventType": "track",
          "eventName": "feature_used",
          "properties": {
            "feature_name": "export",
            "feature_category": "data",
            "export_format": "csv",
            "usage_count": 1
          }
        }
      }
    },
    {
      "id": "event_share",
      "type": "event",
      "position": { "x": 1100, "y": 200 },
      "data": {
        "label": "Compartilhar Usado",
        "parameters": {
          "eventType": "track",
          "eventName": "feature_used",
          "properties": {
            "feature_name": "share",
            "feature_category": "collaboration",
            "share_method": "link",
            "usage_count": 1
          }
        }
      }
    },
    {
      "id": "event_config",
      "type": "event",
      "position": { "x": 1100, "y": 300 },
      "data": {
        "label": "Configurar Usado",
        "parameters": {
          "eventType": "track",
          "eventName": "feature_used",
          "properties": {
            "feature_name": "settings",
            "feature_category": "configuration",
            "settings_section": "general",
            "usage_count": 1
          }
        }
      }
    },
    {
      "id": "message_report",
      "type": "message",
      "position": { "x": 1300, "y": 0 },
      "data": {
        "label": "Relatório",
        "parameters": {
          "message": "📊 Gerando relatório..."
        }
      }
    },
    {
      "id": "message_export",
      "type": "message",
      "position": { "x": 1300, "y": 100 },
      "data": {
        "label": "Exportar",
        "parameters": {
          "message": "💾 Exportando dados..."
        }
      }
    },
    {
      "id": "message_share",
      "type": "message",
      "position": { "x": 1300, "y": 200 },
      "data": {
        "label": "Compartilhar",
        "parameters": {
          "message": "🔗 Gerando link de compartilhamento..."
        }
      }
    },
    {
      "id": "message_config",
      "type": "message",
      "position": { "x": 1300, "y": 300 },
      "data": {
        "label": "Configurar",
        "parameters": {
          "message": "⚙️ Abrindo configurações..."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1500, "y": 150 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "input_1" },
    { "source": "input_1", "target": "event_feature_accessed" },
    { "source": "event_feature_accessed", "target": "switch_1" },
    { "source": "switch_1", "target": "event_report", "label": "1" },
    { "source": "switch_1", "target": "event_export", "label": "2" },
    { "source": "switch_1", "target": "event_share", "label": "3" },
    { "source": "switch_1", "target": "event_config", "label": "4" },
    { "source": "event_report", "target": "message_report" },
    { "source": "event_export", "target": "message_export" },
    { "source": "event_share", "target": "message_share" },
    { "source": "event_config", "target": "message_config" },
    { "source": "message_report", "target": "end_1" },
    { "source": "message_export", "target": "end_1" },
    { "source": "message_share", "target": "end_1" },
    { "source": "message_config", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Escolha uma feature:
1. Relatório
2. Exportar
3. Compartilhar
4. Configurar
Sistema: Digite o número:
Usuário: 2
Sistema: 💾 Exportando dados...

Eventos rastreados: 1. feature_accessed (option: 2) 2. feature_used (feature_name: export, category: data)

Resposta do Node

{
  "success": true,
  "action": "event_tracked",
  "event": {
    "eventType": "track",
    "eventName": "purchase_completed",
    "properties": {
      "product_name": "iPhone 15",
      "total_value": 10000.00,
      "currency": "BRL",
      "timestamp": "2025-01-15T10:30:00.000Z",
      "page_url": "https://app.example.com/checkout",
      "user_agent": "WhatsApp/2.0",
      "ip_address": "192.168.1.1"
    },
    "userId": "user_456",
    "anonymous_id": "anon_1736934600000_abc123",
    "context": {
      "flowId": "flow_789",
      "sessionId": "session_123",
      "campaign": "black_friday",
      "source": "whatsapp",
      "medium": "chat"
    },
    "timestamp": "2025-01-15T10:30:00.000Z"
  },
  "timestamp": "2025-01-15T10:30:00.000Z"
}

Event Types Explicados

track

Ação do usuário - o tipo mais comum. - Exemplos: button_clicked, form_submitted, product_purchased - Uso: Rastrear interações e conversões

page

Visualização de página web. - Exemplos: /home, /pricing, /checkout - Uso: Análise de navegação

screen

Visualização de tela em apps mobile. - Exemplos: HomeScreen, ProfileScreen - Uso: Mobile app analytics

identify

Identificar usuário e associar traits. - Exemplos: Nome, email, plano - Uso: Enriquecer perfil do usuário

group

Associar usuário a grupo/empresa. - Exemplos: Empresa, time, workspace - Uso: B2B analytics

alias

Conectar identidades de usuário. - Exemplos: Unir anônimo com identificado - Uso: User identity resolution

Boas Práticas

SIM: - Use nomenclatura consistente (objeto_acao: product_viewed) - Sempre inclua propriedades relevantes - Rastreie início E conclusão de ações importantes - Use eventType apropriado - Documente seus eventos em um schema - Inclua contexto de origem (source, campaign)

NÃO: - Não use nomes genéricos ("event1", "action") - Não rastreie dados sensíveis sem consent - Não mude estrutura de evento existente - Não abuse de tracking (performance) - Não esqueça de rastrear falhas também

Dicas

💡 Naming Convention: Use objeto_acao (product_viewed, cart_abandoned, checkout_completed)

💡 Funis: Rastreie cada etapa com step_number para análise de drop-off

💡 Properties padrão: Sempre inclua: timestamp, source, version

💡 Track vs Identify: Use track para ações, identify para atualizar perfil

💡 Anonymous tracking: Sistema rastreia antes de identificação e conecta depois

💡 Contexto rico: Quanto mais contexto nas properties, melhor a segmentação

Próximo Node

ANALYTICS - Rastreamento com providers externos → TRACKING - Rastreamento avançado de comportamento → METRIC - Métricas numéricas e KPIs → LOGGER - Logs estruturados