Make Scenario
Esta skill capacita o Claude a projetar, implementar e depurar cenários de automação robustos e eficientes na plataforma Make.com (anteriormente Integromat), utilizando módulos, webhooks, APIs e lógica condicional.
Keywords
Make.com, Cenário Make, Automação de Fluxos, Integração API, Webhook Customizado, Módulos Make, Roteador, Filtro Condicional, Agendador, Conexões, Data Stores, Iterator, Array Aggregator, Error Handling, HTTP Request.
Quick Start
- Início de Cenário: Acesse o painel do Make.com, navegue até "Scenarios" e selecione "Create a new scenario" para começar um novo fluxo de automação.
- Configuração do Gatilho: Adicione o primeiro módulo, que servirá como gatilho. Por exemplo, selecione "Webhooks" > "Custom webhook" para receber dados de uma fonte externa. Copie o URL gerado e envie um payload de teste (e.g., JSON com
{"nome": "Teste", "email": "teste@exemplo.com"}) para que o Make detecte a estrutura dos dados. - Adição de Módulos de Ação: Conecte módulos subsequentes ao gatilho. Se o objetivo é salvar dados em uma planilha, adicione "Google Sheets" > "Add a Row" e selecione a planilha e a aba de destino.
- Mapeamento de Dados: No módulo de ação do Google Sheets, arraste os campos detectados pelo Webhook (e.g.,
{{1.nome}},{{1.email}}) para as colunas correspondentes na sua planilha. - Ativação e Teste: Salve o cenário e ative o botão "ON". Execute o gatilho novamente com dados reais para confirmar se o fluxo funciona como esperado e os dados são processados corretamente.
Core Workflows
Workflow 1: Automatização de Captação de Leads de Formulário Web para Google Sheets e Notificação Slack
Este workflow detalha a captura de dados de um formulário web via webhook, salvando-os em uma planilha do Google Sheets e enviando uma notificação em tempo real para um canal do Slack.
Gatilho - Webhooks: Custom webhook:
- Propósito: Receber dados HTTP POST de um formulário web (ex: WordPress com plugin de webhook, Typeform, etc.).
- Configuração:
- Adicione o módulo "Webhooks" e escolha "Custom webhook".
- Clique em "Add" para criar um novo webhook, nomeie-o como "LeadFormularioSite".
- Copie o "Webhook URL" gerado.
- Teste Inicial: Envie um POST request para este URL com um JSON payload de exemplo para que o Make detecte a estrutura dos dados.
{ "nomeCompleto": "Fernanda Lima", "emailContato": "fernanda.lima@email.com", "telefoneContato": "+5511998877665", "origemLead": "Campanha Google Ads" } - Confirme que o Make detectou os campos (
nomeCompleto,emailContato,telefoneContato,origemLead).
Ação - Google Sheets: Add a Row:
- Propósito: Salvar os dados do lead em uma linha nova em uma planilha Google Sheets.
- Configuração:
- Conecte o módulo "Google Sheets" e selecione "Add a Row".
- Connection: Selecione sua conexão Google existente.
- Spreadsheet: Busque e selecione a planilha onde os leads serão armazenados (e.g., "CRM - Leads Site").
- Sheet Name: Escolha a aba específica (e.g., "Leads Atuais").
- Values: Mapeie os campos do módulo Webhook (módulo 1) para as colunas da sua planilha:
Coluna A (Nome):{{1.nomeCompleto}}Coluna B (Email):{{1.emailContato}}Coluna C (Telefone):{{1.telefoneContato}}Coluna D (Origem):{{1.origemLead}}Coluna E (Data Recebimento):{{formatDate(now; "YYYY-MM-DD HH:mm:ss")}}(função Make para data/hora atual formatada).
Ação - Slack: Create a Message:
- Propósito: Enviar uma notificação para um canal Slack sobre o novo lead.
- Configuração:
- Conecte o módulo "Slack" e selecione "Create a Message".
- Connection: Selecione sua conexão Slack.
- Channel: Escolha o canal de destino (e.g., "#leads-novos-negocios").
- Text: Crie a mensagem personalizada usando os dados do Webhook:
✨ Novo Lead Recebido! ✨ Nome: {{1.nomeCompleto}} Email: {{1.emailContato}} Telefone: {{1.telefoneContato}} Origem: {{1.origemLead}} - (Opcional) As user: Marque para que a mensagem apareça como sua conta Slack.
Finalização: Salve o cenário e certifique-se de que o interruptor "ON" esteja ativado. Teste o formulário web real para confirmar o fluxo completo.
Workflow 2: Sincronização Condicional de Dados de Clientes de CRM (Pipedrive) para Email Marketing (ActiveCampaign)
Este workflow demonstra como monitorar atualizações de contatos no Pipedrive, filtrar por uma condição específica e sincronizar apenas os contatos relevantes para uma lista no ActiveCampaign.
Gatilho - Pipedrive: Watch Persons (Instant Trigger):
- Propósito: Ser notificado instantaneamente sobre qualquer criação ou atualização de "Person" (contato) no Pipedrive.
- Configuração:
- Adicione o módulo "Pipedrive" e escolha "Watch Persons".
- Connection: Selecione sua conexão Pipedrive.
- Event: Mantenha "New or Updated Person". O Make configurará um webhook no Pipedrive automaticamente.
- Limit: Defina um limite razoável (ex: 100) para o número máximo de itens processados por ciclo, se aplicável.
Ferramenta - Router:
- Propósito: Criar ramificações lógicas para diferentes condições. Neste caso, uma rota para sincronizar com ActiveCampaign e outra (opcional) para outras ações.
- Configuração: Adicione o módulo "Router" após o módulo "Pipedrive".
Filtro - Verificar Condições para Sincronização:
- Propósito: Permitir que o fluxo continue apenas para contatos que atendam a critérios específicos (e.g., ter um email válido e uma tag específica).
- Configuração:
- Na primeira rota do "Router", clique na linha entre o Router e o próximo módulo para adicionar um filtro.
- Label: "Email Válido e Tag Newsletter"
- Conditions:
- Condition 1 (Email Válido):
{{2.email.[].value}}(campo do Pipedrive que pode ser um array de emails) Existis (Operador). - Condition 2 (Tag Específica):
{{2.tag}}(o campo pode variar, pode sertags_idoulabeldependendo de como tags são expostas na saída do Pipedrive) Contains (Operador)Newsletter. - Logical operator:
AND.
- Condition 1 (Email Válido):
Ação - ActiveCampaign: Upsert a Contact:
- Propósito: Adicionar ou atualizar um contato no ActiveCampaign. "Upsert" garante que um novo contato seja criado se não existir, ou atualizado se já existir.
- Configuração:
- Conecte o módulo "ActiveCampaign" e selecione "Upsert a Contact".
- Connection: Selecione sua conexão ActiveCampaign.
- Email:
{{first(2.email.[].value)}}(utiliza a funçãofirstpara pegar o primeiro email do array, se houver). - First Name:
{{2.first_name}} - Last Name:
{{2.last_name}} - List: Selecione a lista de destino (e.g., "Assinantes de Notícias").
- Tags: Adicione tags adicionais para categorização (e.g.,
Pipedrive_Sync).
Finalização: Salve e ative o cenário. Teste criando ou atualizando um contato no Pipedrive com um email e a tag "Newsletter" para verificar a sincronização.
Templates
Módulo Webhook Customizado - Estrutura JSON para Lead Qualificado
Este template define uma estrutura JSON ideal para receber dados de um lead qualificado, incluindo campos para segmentação e enriquecimento.
{
"lead_id_externo": "FORM-WEB-12345",
"nome_completo": "Carlos Eduardo Pereira",
"email_contato": "carlos.pereira@exemplo.com.br",
"telefone_principal": "+5511987654321",
"empresa_nome": "Tech Solutions S.A.",
"cargo_contato": "Gerente de TI",
"origem_canal": "LinkedIn Ads",
"data_envio_formulario": "2024-07-26T10:00:00Z",
"interesses_produto": ["Automação", "Cloud Computing", "Segurança"],
"score_lead": 75
}
Função de Mapeamento de Itens (Map) e Agregação (Join) para Email
Este template demonstra como usar as funções map e join para formatar uma lista de itens (e.g., produtos de um pedido) em uma string legível para um e-mail ou documento.
- Cenário: Você recebe um array de objetos
itemsde um pedido (ex:[{"name": "Produto A", "qty": 2, "price": 100}, {"name": "Produto B", "qty": 1, "price": 50}]). - Objetivo: Gerar uma lista formatada como "2x Produto A (R$ 100.00)" para um e-mail de confirmação.
{{join(map(1.items; formatText("{{qty}}x {{name}} (R$ {{price}}.00)"); ); "\n")}}
- Explicação:
1.items: Assume que o array de itens está na saída do módulo 1.map(1.items; ...): Itera sobre cada objeto no array1.items.formatText("{{qty}}x {{name}} (R$ {{price}}.00)"): Para cada item, constrói uma string formatada usando os camposqty,nameepricede cada item.join(...; "\n"): Concatena todas as strings resultantes domap, separando cada uma por uma quebra de linha (\n), criando uma lista vertical.
Checklist
- O gatilho inicial do cenário está configurado corretamente e testado com dados válidos?
- Todas as conexões de serviços (APIs) utilizadas estão ativas e com credenciais atualizadas?
- O mapeamento de dados entre os módulos é preciso, evitando perdas ou erros de tipo?
- Foram implementados filtros e roteadores para direcionar o fluxo de dados conforme a lógica de negócio?
- O tratamento de erros (Error Handling) está configurado para módulos críticos, prevenindo interrupções?
- O cenário foi exaustivamente testado com uma variedade de dados reais e casos de borda?
- O agendamento do cenário (intervalo de execução) está otimizado para a frequência necessária e custos?
- Variáveis, Data Stores ou Loops estão sendo utilizados de forma eficiente para lógica complexa?
- As operações consumidas pelo cenário estão dentro do orçamento e limites da plataforma Make?
- Existem logs ou mecanismos de alerta (e.g., Slack, Email) para monitorar falhas e execuções?
Métricas de Referência
| Métrica | Benchmark (Ideal) | Meta (Aceitável) |
|---|---|---|
| Taxa de Sucesso de Execução | > 99.8% | > 98.5% |
| Latência Média do Cenário | < 300 ms | < 1.5 segundos |
| Custo por Operação (Médio) | < 0.003 USD | < 0.008 USD |
| Volume de Operações/Mês | Varia (Ex: 50k-5M) | Conforme demanda |
| Taxa de Erro Crítico | < 0.05% | < 0.2% |
| Tempo de Resolução de Erro | < 30 minutos | < 2 horas |
Erros Comuns
- Mapeamento Incorreto ou Ausência de Dados: Campos não são passados corretamente entre os módulos, resultando em dados vazios ou incorretos nos sistemas de destino.
- Como evitar: Sempre utilize o "Run History" (Histórico de Execuções) para inspecionar a saída de cada módulo e verificar a estrutura exata dos dados. Use funções como
get()para acessar propriedades aninhadas ({{get(1.data; "cliente.endereco")}}) oufirst()para extrair um item de um array ({{first(2.emails)}}).
- Como evitar: Sempre utilize o "Run History" (Histórico de Execuções) para inspecionar a saída de cada módulo e verificar a estrutura exata dos dados. Use funções como
- Loops Infinitos ou Execuções Duplicadas: Cenários que disparam outros cenários ou atualizam registros no mesmo sistema que os originou podem criar ciclos, consumindo operações rapidamente.
- Como evitar: Implemente filtros rigorosos para condições específicas (ex: "se o
IDdo registro já foi processado"). UtilizeData Storespara manter um registro de IDs já processados ou timestamps de última execução. Exemplo de filtro:{{2.last_modified_date}}Greater than{{get(data_store; "last_run_timestamp")}}.
- Como evitar: Implemente filtros rigorosos para condições específicas (ex: "se o
- Exceder Limites de API (Rate Limits): Fazer muitas requisições para uma API em um curto período pode resultar em erros
429 Too Many Requests.- Como evitar: Use o módulo "Tools" > "Sleep" para inserir pausas estratégicas entre as chamadas de API. Configure o "Maximum number of concurrent executions" nas configurações do cenário para limitar execuções paralelas. Em módulos HTTP, marque a opção "Retry on rate limit errors" se disponível.
Dicas Avançadas
- Utilização Estratégica de Routers e Filtros: Em vez de criar múltiplos cenários para diferentes condições, use um único cenário com um
RoutereFiltersem cada rota. Isso centraliza a lógica, facilita a manutenção e otimiza o consumo de operações. Ex: Um webhook genérico pode rotear para "criar lead", "atualizar cliente" ou "notificar falha" com base em um campoevent_typedo payload. Array Aggregatorspara Processamento em Lote: Quando precisar processar múltiplos itens (ex: várias linhas de uma planilha, múltiplos itens de um pedido) em uma única operação para um sistema externo, utilize módulosArray Aggregator(como "Text Aggregator", "JSON Aggregator", "Numeric Aggregator"). Eles coletam dados de umIteratore os agrupam, permitindo que um único módulo de ação subsequente envie um payload em lote, economizando operações e tempo.Data Storespara Persistência e Controle de Estado: UseData Storesdo Make para armazenar e recuperar dados personalizados e persistentes diretamente na plataforma. Ideal para manter contadores, registrar IDs de último processamento (last_id), armazenar configurações ou gerenciar o estado de fluxos complexos, eliminando a dependência de bancos de dados externos. Ex: Armazenar oIDdo último email lido para evitar reprocessamento em gatilhos de polling.- Funções Personalizadas e Expressões Complexas: Vá além do mapeamento simples. Utilize as funções embutidas do Make (
if(),switch(),map(),filter(),formatDate(),split(),replace(),parseJson(),json()) para transformar, manipular e validar dados.parseJson()ejson()são cruciais para trabalhar com strings JSON dinâmicas ou construir objetos JSON complexos. Ex:{{if(1.score > 80; "High Priority"; "Normal")}}. - Tratamento de Erros Robusto com
Error Handlers: AnexeError Handlers(rotas de tratamento de erros) a módulos críticos ou a todo o cenário. Isso permite que o