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:
- User Segmentation: Agrupar usuários por atributos
- Personalization: Personalizar experiência por perfil
- Enriched Analytics: Análise com contexto de quem é o usuário
- 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
- Profile Data: Nome, email, avatar
- Plan/Tier: Free, Pro, Enterprise
- Preferences: Idioma, tema, notificações
- Calculated Attributes: LTV, total_purchases, last_seen
- 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