Pular para conteúdo

USER_PROPERTIES - Propriedades de Usuário

O que é este Node?

O USER_PROPERTIES é o node responsável por armazenar e atualizar propriedades permanentes do usuário, como nome, email, plano, segmento, permitindo segmentação e personalização.

Por que este Node existe?

User properties enriquecem dados de analytics. O USER_PROPERTIES existe para:

  1. User Segmentation: Agrupar usuários por atributos
  2. Personalization: Personalizar experiência por perfil
  3. Enriched Analytics: Análise com contexto de quem é o usuário
  4. Targeted Messaging: Enviar mensagens para segmentos específicos

Como funciona internamente?

USER_PROPERTIES atualiza perfil do usuário com propriedades que persistem entre sessões (diferente de event properties que são temporárias).

Quando você DEVE usar este Node?

Use USER_PROPERTIES para atributos permanentes do usuário:

Casos de uso

  1. Profile Data: Nome, email, avatar
  2. Plan/Tier: Free, Pro, Enterprise
  3. Preferences: Idioma, tema, notificações
  4. Calculated Attributes: LTV, total_purchases, last_seen
  5. Segments: VIP, churned, active

Quando NÃO usar USER_PROPERTIES

  • Event Data: Use event properties ao invés
  • Temporary Data: Use session properties
  • PII Sensível: Minimize dados pessoais armazenados

Parâmetros Detalhados

userId (string, obrigatório)

O que é: Identificador único do usuário.

properties (object, obrigatório)

O que é: Propriedades a serem atualizadas no perfil.

Flow completo para testar:

{
  "name": "User Properties - Update Profile",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Get Name",
        "parameters": {
          "message": "Qual seu nome?",
          "variable": "user_name"
        }
      }
    },
    {
      "id": "input_2",
      "type": "email",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Get Email",
        "parameters": {
          "message": "Qual seu email?",
          "variable": "user_email"
        }
      }
    },
    {
      "id": "analytics_1",
      "type": "analytics",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Set User Properties",
        "parameters": {
          "eventName": "user_properties_set",
          "userId": "{{user_email}}",
          "properties": {
            "name": "{{user_name}}",
            "email": "{{user_email}}",
            "signup_date": "{{$timestamp}}",
            "plan": "free",
            "status": "active",
            "language": "pt-BR"
          }
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Confirmation",
        "parameters": {
          "message": "✅ Perfil atualizado!\n\n👤 Nome: {{user_name}}\n📧 Email: {{user_email}}\n📦 Plano: Free"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "input_2" },
    { "source": "input_2", "target": "analytics_1" },
    { "source": "analytics_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite nome e email. Propriedades ficam vinculadas ao perfil permanentemente.

Parâmetros

Campo Tipo Obrigatório Descrição
userId string Sim User ID único
properties object Sim Propriedades do usuário

Propriedades Comuns

Profile Properties

{
  "name": "João Silva",
  "email": "joao@email.com",
  "phone": "+5511999999999",
  "avatar_url": "https://...",
  "created_at": "2025-01-15T10:00:00Z"
}

Business Properties

{
  "plan": "pro",
  "mrr": 97.00,
  "ltv": 1164.00,
  "total_purchases": 12,
  "last_purchase_date": "2025-01-10"
}

Behavioral Properties

{
  "segment": "power_user",
  "feature_adoption_score": 85,
  "days_since_signup": 45,
  "sessions_count": 120,
  "last_seen": "2025-01-15T09:30:00Z"
}

Preferences

{
  "language": "pt-BR",
  "timezone": "America/Sao_Paulo",
  "notifications_enabled": true,
  "theme": "dark"
}

Exemplo: Upgrade to Pro

Objetivo: Atualizar propriedades quando usuário faz upgrade.

{
  "name": "User Properties - Plan Upgrade",
  "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": "Offer Upgrade",
        "parameters": {
          "message": "🚀 Upgrade para Pro!\n\n✅ Feature X\n✅ Feature Y\n✅ Suporte prioritário\n\nR$ 97/mês"
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirm",
        "parameters": {
          "message": "Digite SIM para confirmar",
          "variable": "confirm"
        }
      }
    },
    {
      "id": "analytics_1",
      "type": "analytics",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Update to Pro",
        "parameters": {
          "eventName": "user_properties_updated",
          "properties": {
            "plan": "pro",
            "plan_upgraded_at": "{{$timestamp}}",
            "previous_plan": "free",
            "mrr": 97.00,
            "segment": "paid_user"
          }
        }
      }
    },
    {
      "id": "analytics_2",
      "type": "analytics",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Track Upgrade Event",
        "parameters": {
          "eventName": "plan_upgraded",
          "properties": {
            "from_plan": "free",
            "to_plan": "pro",
            "price": 97.00
          }
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Success",
        "parameters": {
          "message": "🎉 Upgrade concluído!\n\nVocê agora é usuário Pro.\n\n📊 Propriedades atualizadas:\n- Plano: Pro\n- MRR: R$ 97\n- Segmento: paid_user"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1300, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "input_1" },
    { "source": "input_1", "target": "analytics_1" },
    { "source": "analytics_1", "target": "analytics_2" },
    { "source": "analytics_2", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: 🚀 Upgrade para Pro! [detalhes]
Usuário: SIM
Sistema: 🎉 Upgrade concluído! Você agora é usuário Pro.

Resposta do Node

{
  "success": true,
  "action": "user_properties_updated",
  "userId": "user_123",
  "properties": {
    "plan": "pro",
    "plan_upgraded_at": "2025-01-15T10:30:00.000Z",
    "previous_plan": "free",
    "mrr": 97.00,
    "segment": "paid_user"
  },
  "timestamp": "2025-01-15T10:30:00.000Z"
}

Calculated Properties

Automatically Update

{
  "days_since_signup": "calculado diariamente",
  "total_sessions": "incrementado a cada sessão",
  "last_seen": "atualizado a cada atividade",
  "ltv": "soma de todas as compras"
}

Segmentação por Properties

Query Users by Properties

-- Power Users (Pro plan + alta atividade)
SELECT * FROM users
WHERE plan = 'pro'
AND sessions_count > 50
AND last_seen > NOW() - INTERVAL 7 DAY;

-- Churn Risk (Free + não visitou há 30 dias)
SELECT * FROM users
WHERE plan = 'free'
AND last_seen < NOW() - INTERVAL 30 DAY;

Boas Práticas

SIM: - Mantenha properties atualizadas e precisas - Use naming convention consistente (snake_case) - Calcule properties derivadas (LTV, segment) - Update apenas properties que mudaram - Use tipos consistentes (string, number, boolean, date)

NÃO: - Não armazene dados sensíveis desnecessariamente - Não use properties para event data (use event properties) - Não crie properties demais (mantenha essencial) - Não esqueça GDPR compliance

Dicas

💡 Dica 1: User properties persistem entre sessões - use para estado permanente 💡 Dica 2: Combine com COHORT para segmentação avançada 💡 Dica 3: Enriche events automaticamente com user properties 💡 Dica 4: Use computed properties para scores (engagement_score, health_score) 💡 Dica 5: Export user properties para CRM (Salesforce, HubSpot)

Próximo Node

COHORT - Agrupar usuários por properties → SEGMENT - Enviar properties para múltiplas plataformas → CUSTOM_EVENT - Track events customizados