Pular para conteúdo

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:

  1. Atualizar informações: Nome, telefone, preferências
  2. Alterar status: Reativar assinante ou pausar
  3. Adicionar tags: Segmentar baseado em comportamento
  4. Manter dados atualizados: Sincronizar com outros sistemas
  5. Personalização: Atualizar merge fields para emails personalizados

Como funciona internamente?

Quando o Members Update é executado, o sistema:

  1. Calcula MD5 hash do email (lowercase)
  2. Monta objeto com campos a atualizar
  3. Faz requisição PATCH para /lists/{listId}/members/{hash}
  4. Mailchimp atualiza os dados
  5. Retorna assinante atualizado
  6. 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:

  1. Atualizar preferências: Usuário muda telefone/nome
  2. Reativar assinante: Mudar status de unsubscribed para subscribed
  3. Adicionar tags: Baseado em compra/comportamento
  4. Sincronização: Atualizar dados de CRM
  5. Segmentação: Adicionar campos personalizados

Parâmetros

Campo Tipo Obrigatório Descrição
listId string Sim ID da lista
email 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