MAILCHIMP Members Add - Adicionar Assinante
O que é este Node?
O Mailchimp Members Add é o node responsável por adicionar um novo assinante (member) a uma lista do Mailchimp com email, status, merge fields e tags.
Por que este Node existe?
Capturar leads é a base do email marketing. Este node existe para:
- Captura de leads: Adicionar novos contatos à lista
- Sincronização: Integrar leads de WhatsApp/CRM com Mailchimp
- Segmentação: Adicionar tags para segmentar audiência
- Personalização: Incluir merge fields (nome, cidade, etc.)
- Automação: Inscrever automaticamente em flows
Como funciona internamente?
Quando o Members Add é executado, o sistema:
- Valida email e listId
- Monta objeto com email, status, merge fields e tags
- Faz requisição POST para
/lists/{listId}/members - Mailchimp adiciona assinante ou retorna erro se duplicado
- Salva resposta na variável
- Continua o flow
Código interno (mailchimp.executor.ts:136-164):
case 'add':
const email = this.replaceVariables(data.email || '', context.variables);
const memberData: any = {
email_address: email,
status: data.status || 'subscribed', // subscribed, unsubscribed, cleaned, pending
};
if (data.mergeFields) {
try {
const mergeFields = typeof data.mergeFields === 'string'
? JSON.parse(this.replaceVariables(data.mergeFields, context.variables))
: data.mergeFields;
memberData.merge_fields = mergeFields;
} catch (e) {
this.logger.warn('Failed to parse merge fields:', e);
}
}
if (data.tags) {
memberData.tags = Array.isArray(data.tags) ? data.tags : data.tags.split(',').map((t: string) => t.trim());
}
const addResponse = await axios.post(`${baseUrl}/lists/${listId}/members`, memberData, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
});
return addResponse.data;
Quando você DEVE usar este Node?
Use Members Add quando precisar adicionar assinantes:
Casos de uso:
- Captura via WhatsApp: Usuário fornece email no chat
- Formulário web: Sincronizar com Mailchimp
- Pós-compra: Adicionar cliente à lista
- Evento: Inscrever participantes
- Migração: Importar de outro sistema
Parâmetros Detalhados
listId (string, obrigatório)
O que é: ID da lista onde o assinante será adicionado.
Formato: String alfanumérica do Mailchimp
email (string, obrigatório)
O que é: Email do assinante a ser adicionado.
Formato: Email válido (validado pelo Mailchimp)
Flow completo para testar:
{
"name": "Teste Mailchimp Members Add",
"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": "Capturar Email",
"parameters": {
"message": "Qual é o seu email?",
"variable": "user_email"
}
}
},
{
"id": "mailchimp_1",
"type": "mailchimp",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Adicionar à Lista",
"resource": "members",
"operation": "add",
"config": {
"apiKey": "{{mailchimp_api_key}}",
"server": "{{mailchimp_server}}"
},
"listId": "{{my_list_id}}",
"email": "{{user_email}}",
"status": "subscribed",
"responseVariable": "newMember"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmação",
"parameters": {
"message": "✅ Email {{user_email}} adicionado com sucesso!\n\nVocê receberá nossas novidades em breve."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "email_1" },
{ "source": "email_1", "target": "mailchimp_1" },
{ "source": "mailchimp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite um email válido e veja a confirmação!
status (string, opcional)
O que é: Status inicial do assinante.
Padrão: "subscribed"
Valores: - subscribed: Inscrito ativo (recebe emails) - unsubscribed: Descadastrado - pending: Aguardando confirmação (double opt-in) - cleaned: Email inválido (bounce)
Dica: Use "pending" para double opt-in (melhor prática)
mergeFields (string/object, opcional)
O que é: Campos personalizados do assinante (nome, cidade, telefone, etc.).
Formato: JSON string ou objeto
Exemplo: {"FNAME": "João", "LNAME": "Silva", "PHONE": "11999999999"}
Campos comuns: - FNAME: Primeiro nome - LNAME: Sobrenome - PHONE: Telefone - BIRTHDAY: Aniversário (MM/DD) - ADDRESS: Endereço
tags (string/array, opcional)
O que é: Tags para segmentação do assinante.
Formato: Array ou string separada por vírgulas
Exemplos:
- Array: ["vip", "black-friday", "sp"]
- String: "vip,black-friday,sp"
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| listId | string | Sim | ID da lista Mailchimp |
| string | Sim | Email do assinante | |
| status | string | Não | subscribed, pending, unsubscribed, cleaned (padrão: subscribed) |
| mergeFields | string/object | Não | Campos personalizados (FNAME, LNAME, etc.) |
| tags | string/array | Não | Tags para segmentação |
Exemplo 1: Captura Completa via WhatsApp
Objetivo: Capturar nome, email e telefone via WhatsApp e adicionar ao Mailchimp.
JSON para Importar
{
"name": "Captura Completa WhatsApp → Mailchimp",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_nome",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nome",
"parameters": {
"message": "Qual é o seu nome completo?",
"variable": "nome"
}
}
},
{
"id": "email_1",
"type": "email",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Email",
"parameters": {
"message": "Qual é o seu email?",
"variable": "email"
}
}
},
{
"id": "phone_1",
"type": "phone",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Telefone",
"parameters": {
"message": "Qual é o seu telefone?",
"variable": "telefone"
}
}
},
{
"id": "mailchimp_1",
"type": "mailchimp",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Adicionar ao Mailchimp",
"resource": "members",
"operation": "add",
"config": {
"apiKey": "{{mailchimp_api_key}}",
"server": "{{mailchimp_server}}"
},
"listId": "{{newsletter_list_id}}",
"email": "{{email}}",
"status": "subscribed",
"mergeFields": "{\"FNAME\": \"{{nome}}\", \"PHONE\": \"{{telefone}}\"}",
"tags": "whatsapp,lead-2025",
"responseVariable": "subscriber"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Sucesso",
"parameters": {
"message": "🎉 Bem-vindo, {{nome}}!\n\n✅ Você foi inscrito com sucesso em nossa newsletter.\n📧 {{email}}\n\nEm breve você receberá nossos conteúdos exclusivos!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_nome" },
{ "source": "input_nome", "target": "email_1" },
{ "source": "email_1", "target": "phone_1" },
{ "source": "phone_1", "target": "mailchimp_1" },
{ "source": "mailchimp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Qual é o seu nome completo?
Usuário: João Silva
Sistema: Qual é o seu email?
Usuário: joao@exemplo.com
Sistema: Qual é o seu telefone?
Usuário: 11999999999
Sistema: 🎉 Bem-vindo, João Silva!
✅ Você foi inscrito com sucesso em nossa newsletter.
📧 joao@exemplo.com
Em breve você receberá nossos conteúdos exclusivos!
Exemplo 2: Double Opt-In (Melhor Prática)
Objetivo: Adicionar com status "pending" para Mailchimp enviar email de confirmação.
JSON para Importar
{
"name": "Double Opt-In Mailchimp",
"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": "Capturar Email",
"parameters": {
"message": "Digite seu email para receber nossas novidades:",
"variable": "email"
}
}
},
{
"id": "mailchimp_1",
"type": "mailchimp",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Adicionar (Pending)",
"resource": "members",
"operation": "add",
"config": {
"apiKey": "{{mailchimp_api_key}}",
"server": "{{mailchimp_server}}"
},
"listId": "{{list_id}}",
"email": "{{email}}",
"status": "pending",
"responseVariable": "result"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Instruções",
"parameters": {
"message": "📧 Email de confirmação enviado!\n\nVerifique sua caixa de entrada ({{email}}) e clique no link de confirmação para completar sua inscrição.\n\n✉️ Não esqueça de verificar o spam!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "email_1" },
{ "source": "email_1", "target": "mailchimp_1" },
{ "source": "mailchimp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Digite seu email para receber nossas novidades:
Usuário: maria@exemplo.com
Sistema: 📧 Email de confirmação enviado!
Verifique sua caixa de entrada (maria@exemplo.com) e clique no link de confirmação para completar sua inscrição.
✉️ Não esqueça de verificar o spam!
Resposta do Node
{
"id": "abc123def456",
"email_address": "joao@exemplo.com",
"unique_email_id": "xyz789",
"email_type": "html",
"status": "subscribed",
"merge_fields": {
"FNAME": "João",
"LNAME": "",
"PHONE": "11999999999"
},
"stats": {
"avg_open_rate": 0,
"avg_click_rate": 0
},
"ip_signup": "192.168.1.1",
"timestamp_signup": "2025-10-13T10:30:00+00:00",
"timestamp_opt": "2025-10-13T10:30:00+00:00",
"member_rating": 2,
"last_changed": "2025-10-13T10:30:00+00:00",
"list_id": "abc123list",
"tags": [
{
"name": "whatsapp",
"date_added": "2025-10-13T10:30:00+00:00"
},
{
"name": "lead-2025",
"date_added": "2025-10-13T10:30:00+00:00"
}
]
}
Tratamento de Erros
Email já existe
Se o email já está na lista, a API retorna erro 400:
{
"title": "Member Exists",
"status": 400,
"detail": "joao@exemplo.com is already a list member."
}
Solução: Use Members Update ao invés de Add.
Email inválido
{
"title": "Invalid Resource",
"status": 400,
"detail": "Please provide a valid email address."
}
Solução: Valide email antes com EMAIL node.
Boas Práticas
✅ SIM: - Use status "pending" para double opt-in - Sempre valide email antes de adicionar - Use merge fields para personalização - Adicione tags para segmentação - Trate erro de email duplicado - Informe o usuário sobre confirmação
❌ NÃO: - Não adicione sem permissão (LGPD/GDPR) - Não use status "subscribed" sem consentimento - Não ignore validação de email - Não adicione emails comprados - Não force opt-in
Dicas
💡 Double Opt-In: Melhor prática para compliance e qualidade 💡 Merge Fields: Configure campos personalizados no Mailchimp primeiro 💡 Tags: Use para automações baseadas em comportamento 💡 Validação: Sempre valide email antes de enviar à API 💡 LGPD: Guarde evidência de consentimento do usuário
Próximos Passos
→ Members Update - Atualizar dados do assinante → Members Get - Buscar informações do assinante → Campaigns Create - Criar campanha para enviar