MAILCHIMP Members Update - Atualizar Assinante
O que é este Node?
O Mailchimp Members Update é o node responsável por atualizar informações de um assinante existente incluindo status, merge fields e tags.
Por que este Node existe?
Dados de assinantes mudam. Este node existe para:
- Atualizar informações: Nome, telefone, preferências
- Alterar status: Reativar assinante ou pausar
- Adicionar tags: Segmentar baseado em comportamento
- Manter dados atualizados: Sincronizar com outros sistemas
- Personalização: Atualizar merge fields para emails personalizados
Como funciona internamente?
Quando o Members Update é executado, o sistema:
- Calcula MD5 hash do email (lowercase)
- Monta objeto com campos a atualizar
- Faz requisição PATCH para
/lists/{listId}/members/{hash} - Mailchimp atualiza os dados
- Retorna assinante atualizado
- Salva na variável
Código interno (mailchimp.executor.ts:166-189):
case 'update':
const updateEmail = this.replaceVariables(data.email || '', context.variables);
const subscriberHash = require('crypto').createHash('md5').update(updateEmail.toLowerCase()).digest('hex');
const updateMemberData: any = {};
if (data.status) updateMemberData.status = data.status;
if (data.mergeFields) {
try {
const mergeFields = typeof data.mergeFields === 'string'
? JSON.parse(this.replaceVariables(data.mergeFields, context.variables))
: data.mergeFields;
updateMemberData.merge_fields = mergeFields;
} catch (e) {
this.logger.warn('Failed to parse merge fields:', e);
}
}
const updateMemberResponse = await axios.patch(`${baseUrl}/lists/${listId}/members/${subscriberHash}`, updateMemberData, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
});
return updateMemberResponse.data;
Quando você DEVE usar este Node?
Use Members Update quando precisar modificar dados existentes:
Casos de uso:
- Atualizar preferências: Usuário muda telefone/nome
- Reativar assinante: Mudar status de unsubscribed para subscribed
- Adicionar tags: Baseado em compra/comportamento
- Sincronização: Atualizar dados de CRM
- Segmentação: Adicionar campos personalizados
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| listId | string | Sim | ID da lista |
| string | Sim | Email do assinante a atualizar | |
| status | string | Não | Novo status (subscribed, unsubscribed, etc.) |
| mergeFields | string/object | Não | Campos a atualizar |
Exemplo 1: Atualizar Nome e Telefone
Objetivo: Permitir usuário atualizar suas informações.
JSON para Importar
{
"name": "Atualizar Informações do Assinante",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "email_1",
"type": "email",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Seu Email",
"parameters": {
"message": "Digite seu email cadastrado:",
"variable": "email"
}
}
},
{
"id": "input_1",
"type": "input",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Novo Nome",
"parameters": {
"message": "Digite seu nome completo atualizado:",
"variable": "novo_nome"
}
}
},
{
"id": "phone_1",
"type": "phone",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Novo Telefone",
"parameters": {
"message": "Digite seu telefone atualizado:",
"variable": "novo_telefone"
}
}
},
{
"id": "mailchimp_1",
"type": "mailchimp",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Atualizar Mailchimp",
"resource": "members",
"operation": "update",
"config": {
"apiKey": "{{mailchimp_api_key}}",
"server": "{{mailchimp_server}}"
},
"listId": "{{list_id}}",
"email": "{{email}}",
"mergeFields": "{\"FNAME\": \"{{novo_nome}}\", \"PHONE\": \"{{novo_telefone}}\"}",
"responseVariable": "updated"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Sucesso",
"parameters": {
"message": "✅ Informações atualizadas com sucesso!\n\n👤 Nome: {{novo_nome}}\n📞 Telefone: {{novo_telefone}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "email_1" },
{ "source": "email_1", "target": "input_1" },
{ "source": "input_1", "target": "phone_1" },
{ "source": "phone_1", "target": "mailchimp_1" },
{ "source": "mailchimp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Exemplo 2: Adicionar Tag Pós-Compra
Objetivo: Adicionar tag "cliente" automaticamente após compra.
JSON para Importar
{
"name": "Adicionar Tag Cliente Pós-Compra",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início - Compra Detectada" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Email da Compra",
"parameters": {
"variable": "customer_email",
"value": "{{order.customer.email}}"
}
}
},
{
"id": "mailchimp_1",
"type": "mailchimp",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Atualizar para Cliente",
"resource": "members",
"operation": "update",
"config": {
"apiKey": "{{mailchimp_api_key}}",
"server": "{{mailchimp_server}}"
},
"listId": "{{list_id}}",
"email": "{{customer_email}}",
"mergeFields": "{\"CUSTOMER\": \"yes\", \"LASTPURCH\": \"{{order.date}}\"}",
"responseVariable": "customer"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Log",
"parameters": {
"message": "✅ Cliente {{customer_email}} atualizado com tag de compra"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "mailchimp_1" },
{ "source": "mailchimp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Resposta do Node
{
"id": "abc123",
"email_address": "joao@exemplo.com",
"status": "subscribed",
"merge_fields": {
"FNAME": "João Silva",
"PHONE": "11999999999"
},
"last_changed": "2025-10-13T10:35:00+00:00"
}
Boas Práticas
✅ SIM: - Atualize apenas campos necessários - Valide email antes de atualizar - Use para manter dados sincronizados - Adicione tags baseadas em comportamento
❌ NÃO: - Não force mudança de status sem consentimento - Não atualize em massa sem cuidado - Não ignore erros
Próximos Passos
→ Members Get - Buscar dados atuais → Members Delete - Remover assinante