This workflow follows the Emailsend → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Disparador 1.8",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 1
}
]
}
},
"id": "fe778228-a383-4d15-9b33-995e8ff25593",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1,
"position": [
-2400,
1040
]
},
{
"parameters": {
"conditions": {
"dateTime": [
{
"value1": "={{ $json.newDate }}",
"operation": "before",
"value2": "={{ $now }}"
}
]
}
},
"id": "c7811219-8d15-4722-8b74-535f6cf3af48",
"name": "Horario",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
-1460,
1040
]
},
{
"parameters": {
"content": "# Buscando Campanhas",
"height": 456.3958547081602,
"width": 1431.3025345443343
},
"id": "2667951b-782e-4bd7-b5b6-edd0e7b28d5e",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-2441.947781253568,
840
]
},
{
"parameters": {
"content": "# Disparador de Campanha para ChatWoot\n## Evolution API\n\n\nv 1.8",
"height": 163.30528430133387,
"width": 847.4993167412657,
"color": 4
},
"id": "f9922a0a-b405-4ecd-8002-d4f5fbfa293e",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1940,
520
]
},
{
"parameters": {
"operation": "subtractFromDate",
"magnitude": "={{ $json.scheduled_at }}",
"timeUnit": "hours",
"duration": 3,
"options": {
"includeInputFields": true
}
},
"id": "d05fca36-c0d4-4ffb-a784-db5541500696",
"name": "Altera fuso hor\u00e1rio",
"type": "n8n-nodes-base.dateTime",
"typeVersion": 2,
"position": [
-1660,
1040
]
},
{
"parameters": {
"content": "# Busca contatos / Envia campanha\n",
"height": 1569.3729310736378,
"width": 5519.984579857509,
"color": 3
},
"id": "e5b5da72-75b5-41c0-8856-1d2340e284a6",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-160,
780
]
},
{
"parameters": {},
"id": "150ca21b-482f-465c-93bb-25d001d1fb77",
"name": "Repetir a\u00e7\u00e3o",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
5220,
1220
]
},
{
"parameters": {
"jsCode": "// Este exemplo gera um tempo de espera aleat\u00f3rio entre 10 e 60 segundos\nconst minWait = 8; // Tempo m\u00ednimo de espera em segundos\nconst maxWait = 15; // Tempo m\u00e1ximo de espera em segundos\nconst randomWaitTime = Math.floor(Math.random() * (maxWait - minWait + 1)) + minWait;\n\nreturn [\n {\n json: {\n waitTime: randomWaitTime\n }\n }\n];\n"
},
"id": "d92c511f-fffb-42dc-af33-119b7befca0c",
"name": "Time Randon1",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2400,
1060
]
},
{
"parameters": {
"amount": "={{ $json.waitTime }}"
},
"id": "7d5684f7-3bcd-4879-b706-93b24c3239d9",
"name": "Tempo de espera1",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
2580,
1060
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $('Buscar campanhas').item.json.campaign_type }}",
"value2": "={{ 1 }}"
}
]
}
},
"id": "95a3c771-79af-4dc3-9af4-41c95d7ec4b7",
"name": "IF6",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
-840,
1000
]
},
{
"parameters": {
"fieldToSplitOut": "audience",
"include": "allOtherFields",
"options": {}
},
"id": "2e98a9ad-5fc3-49c9-89a4-dd53d1951bdc",
"name": "Item Lists1",
"type": "n8n-nodes-base.itemLists",
"typeVersion": 3,
"position": [
-620,
1000
]
},
{
"parameters": {
"content": "# Trata mensagem",
"height": 456.8892799239013,
"width": 728.217926985971,
"color": 2
},
"id": "8b6974ae-6738-4b1f-a457-6d1307a94302",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-940,
840
]
},
{
"parameters": {
"options": {}
},
"id": "8bc7d69b-8ac0-44e9-93a7-5a490ee19251",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
360,
1020
],
"executeOnce": false,
"alwaysOutputData": false,
"retryOnFail": false,
"notesInFlow": false
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "d0205698-dcfd-4d3c-b6e3-dfd7209035c3",
"leftValue": "={{ $json.limite_disparo }}",
"rightValue": 1,
"operator": {
"type": "number",
"operation": "gte"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "7df84a3f-af0b-4955-af8a-adf466d6a914",
"name": "If",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
1520,
1060
]
},
{
"parameters": {
"content": "## Contador de limite / Verifica\u00e7\u00e3o do n\u00famero",
"height": 225.35612209945384,
"width": 853.0984671711764,
"color": 4
},
"id": "460e22ce-bb6f-454e-bcb4-9c76d3320876",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1320,
1000
]
},
{
"parameters": {
"content": "## Tempo entre as mensagens",
"height": 230.3746650610074,
"width": 404.53569195365,
"color": 4
},
"id": "b4d086e3-1651-48bd-bbf4-6e2d1c35b897",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
2340,
1000
]
},
{
"parameters": {
"content": "## Contabiliza falhas",
"height": 225.08131697058332,
"width": 546.5336275124715,
"color": 2
},
"id": "19a3eb9a-c552-4eac-83c1-bb8da93e8a53",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3720,
1400
]
},
{
"parameters": {
"content": "## Contabiliza envios",
"height": 215.09474919455494,
"width": 376.16757486051324,
"color": 2
},
"id": "67222cd3-214f-4dc5-b0ed-e6d71743e9d6",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3460,
980
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT falhou\nFROM campaigns\nWHERE id = {{ $('IF6').item.json.id }};",
"options": {
"queryReplacement": "="
}
},
"id": "4a652151-eb76-40ca-8631-be7a4d022e24",
"name": "Busca falhas",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
3760,
1440
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT enviou\nFROM campaigns\nWHERE id = {{ $('IF6').item.json.id }};",
"options": {}
},
"id": "676a965b-f3c3-4e50-895e-bb26c52ea37c",
"name": "Busca envios",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
3520,
1040
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cbb23691-dfc9-413f-b996-ba0515b0a902",
"name": "etiqueta",
"value": "={{ $('Buscar campanhas').item.json.audience.map(a => a.id).join(',') }}",
"type": "number"
},
{
"id": "7a194f32-e774-4d48-94ed-1e2c9b9fd025",
"name": "msg.title",
"value": "={{ $('Buscar campanhas').item.json.title }}",
"type": "string"
},
{
"id": "4dc32df3-cc5a-4a9b-8dcd-2d3f8a50a6fd",
"name": "msg.message",
"value": "={{ $('Buscar campanhas').item.json.message }}",
"type": "string"
},
{
"id": "3b2fef42-7655-4ebc-ac93-1a25f77cbec1",
"name": "img",
"value": "={{ $('IF6').item.json.message.split('&img=')[1].split('&')[0] }}",
"type": "string"
},
{
"id": "66e5ac5e-5cef-4737-81d8-9457f8fb8536",
"name": "nomecontato",
"value": "={{ $json.message.match(/&nome/)[0] }}",
"type": "string"
},
{
"id": "afa0b53c-9933-44e1-ab91-49a9540f9c7d",
"name": "emailcontato",
"value": "={{ $json.message.match(/&email/)[0] }}",
"type": "string"
},
{
"id": "fde7488d-6bca-4057-a2c3-17cd21ea41cd",
"name": "doc",
"value": "={{ $('IF6').item.json.message.split('&doc=')[1].split('&')[0] }}",
"type": "string"
},
{
"id": "459f505e-48c9-4829-a151-e9a9c651901c",
"name": "vid",
"value": "={{ $('IF6').item.json.message.split('&vid=')[1].split('&')[0] }}",
"type": "string"
},
{
"id": "12d83710-4f40-4d9b-a6cc-3a12b4f6c358",
"name": "audio",
"value": "={{ $('IF6').item.json.message.split('&audio=')[1].split('&')[0] }}",
"type": "string"
}
]
},
"options": {}
},
"id": "17078c23-af56-452d-aba7-b60a21d393dd",
"name": "Campanha",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
-420,
1000
]
},
{
"parameters": {
"content": "# Relatorio da campanha",
"height": 346.43605543050865,
"width": 1085.0447604700087
},
"id": "835f949e-d335-4ecf-9e41-02bfe9e0ee72",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1060,
414.55190978677456
]
},
{
"parameters": {
"content": "# Limite excedido ",
"height": 339.69571412210314,
"width": 1088.2492332463764
},
"id": "8eb761b6-8dfc-4628-b3cb-3e3ae3a0da7c",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1060,
20
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE campaigns\nSET enviou = {{ $json.enviou +1 }}\nWHERE id = {{ $('IF6').item.json.id }};",
"options": {}
},
"id": "59ce0325-e7bb-4776-9a51-f6618131eaee",
"name": "Adiciona envios",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
3680,
1040
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "## Somente texto",
"height": 199.63817652105178,
"width": 313.99126283929667
},
"id": "886bec7d-41e5-44b8-bf40-dbcf4f813f56",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3080,
840
]
},
{
"parameters": {
"content": "## Com imagem",
"height": 221.17684873191945,
"width": 313.99126283929667
},
"id": "9202b3b5-adee-41ea-9ff9-3e43ff14f580",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3080,
1100
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "ebbe2797-49a1-47e7-9c54-161ff02dfa49",
"leftValue": "={{ $('Campanha').item.json.nomecontato }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
},
{
"id": "77ff2a0a-ae27-427a-b489-2daac4e90429",
"leftValue": "={{ $('Campanha').item.json.emailcontato}}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
}
],
"combinator": "or"
},
"options": {}
},
"id": "6d93cf92-a22e-4f31-a00a-582c16b0d35e",
"name": "If2",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
720,
1040
]
},
{
"parameters": {
"content": "## Resolve Conversa\n** Se a conversa estiver aberta mant\u00e9m / Se for uma conversa nova ele fecha!",
"height": 331.5360284004761,
"width": 1227.4972493046307
},
"id": "68e8e520-1782-42bb-afd2-273be2250c26",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3920,
940
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a8de3538-0eac-4149-aaf9-7bc2c5c4b00e",
"name": "id_caixa",
"value": "={{ $('Info_Base').item.json.id_caixa }}",
"type": "string"
},
{
"id": "04e8a587-52b0-4ddc-877e-e97fdd1ef171",
"name": "id_contato",
"value": "={{ $('Busca Contato Existe').item.json.payload[0].id }}",
"type": "string"
}
]
},
"options": {}
},
"id": "f2c1e907-fec3-4198-a26a-0e7278715ac9",
"name": "Salva conversa",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
4540,
1040
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "493b5963-2314-4179-a065-3a9aca90749e",
"leftValue": "={{ $json.payload[0].status }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "be67bfcb-6d85-427b-8f5c-1b6a2c2daa56",
"name": "If3",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
4280,
1040
]
},
{
"parameters": {
"amount": 1
},
"id": "fae89c5f-354a-4071-b19e-2c3299384dce",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
4700,
1040
]
},
{
"parameters": {
"content": "# Resolve Conversa",
"height": 246.1701698163285,
"width": 704.4608631799392
},
"id": "94bcb70f-3fae-45e3-85ab-d3230aa2efe2",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
2340,
280
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT limite_disparo\nFROM accounts\nWHERE id ={{ $('Info_Base').item.json.chatwoot_account_id }};",
"options": {
"queryReplacement": "="
}
},
"id": "f17538c1-196b-4366-b6b6-37aa87256e50",
"name": "Busca limite diario",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
1360,
1060
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fromEmail": "emailenviarelatorio@gmail.com",
"toEmail": "={{ $node['Info_Base'].json.email_relatorio }}",
"subject": "Limite de disparo excedido",
"text": "=\u26a0\ufe0f Aten\u00e7\u00e3o! Algumas mensagens da campanha {{ $node['Buscar campanhas'].json.title }} podem n\u00e3o ter sido enviadas. \u26a0\ufe0f\n\n\u2714\ufe0f Total de envios: {{ $('Notifica limite excedido').item.json.enviou }}\n\u274c N\u00famero de falhas: {{ $('Notifica limite excedido').item.json.falhou }}\n#\ufe0f\u20e3 Limite restante: {{ $('Notifica limite excedido').item.json.limite_disparo }} \n\nO limite de disparos di\u00e1rios foi excedido. Por favor, verifique os envios ou entre em contato com o suporte para mais informa\u00e7\u00f5es.\n\nObrigado pela compreens\u00e3o! ",
"options": {}
},
"id": "bae0c923-9a60-4663-907b-1ecfa3a41fe8",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2,
"position": [
1800,
80
],
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"continueOnFail": true
},
{
"parameters": {
"fromEmail": "emailenviarelatorio@gmail.com",
"toEmail": "={{ $node['Info_Base'].json.email_relatorio }}",
"subject": "Relat\u00f3rio a Campanha",
"text": "=\ud83d\udce2 Campanha {{ $node['Buscar campanhas'].json.title }} enviada com sucesso! \ud83d\udce2\n\n\u2714\ufe0f Total de envios: {{ $('Resumo relatorio').item.json.enviou }}\n\u274c N\u00famero de falhas: {{ $('Resumo relatorio').item.json.falhou }} \n#\ufe0f\u20e3 Limite restante: {{ $('Resumo relatorio').item.json.limite_disparo }} \n\nObrigado por utilizar nossos servi\u00e7os!",
"options": {}
},
"id": "c51b3425-5868-4ee6-b5ee-23cc4e0012a9",
"name": "Send Email1",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2,
"position": [
1800,
480
],
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"continueOnFail": true
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "c2573aed-9acc-4fc6-a799-b11e2191d408",
"leftValue": "={{ $json.exists }}",
"rightValue": "true",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "1e370e5c-d550-4634-a38e-e72627430dae",
"name": "If4",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
1860,
1060
]
},
{
"parameters": {},
"id": "9ab30a8c-0d52-4246-8b36-badad7d37b64",
"name": "Wait1",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
2396,
360
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE campaigns\nSET falhou = {{ $json.falhou +1 }}\nWHERE id = {{ $('IF6').item.json.id }};",
"options": {}
},
"id": "fb6dd13a-50f4-492d-9e42-90a363319c0d",
"name": "Adiciona num de falhas",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
3940,
1440
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "INSERT INTO campaigns_failled (nomecontato, telefone, id_campanha)\nSELECT '{{ $('Busca contatos').item.json.name }}', '{{ $('Busca contatos').item.json.phone_number }}', {{ $('Buscar campanhas').item.json.id }}\nWHERE NOT EXISTS (\n SELECT 1\n FROM campaigns_failled\n WHERE telefone = '{{ $('Busca contatos').item.json.phone_number }}' AND id_campanha = {{ $('Buscar campanhas').item.json.id }}\n);",
"options": {}
},
"id": "e2515859-4a4d-47ee-981f-38544dff8edf",
"name": "Adiciona num n\u00e3o enviado",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
4120,
1440
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "0ed1f598-cec8-458a-97d7-1d82aedf251e",
"leftValue": "={{ $json.falhou }}",
"rightValue": 0,
"operator": {
"type": "number",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "98ab312d-848b-4306-ac6f-4951319fa017",
"name": "If5",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
1280,
180
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT \n c.falhou, \n c.enviou, \n a.limite_disparo \nFROM \n campaigns c\nJOIN \n accounts a ON c.account_id = a.id\nWHERE \n c.id = {{ $('IF6').item.json.id }};",
"options": {
"queryReplacement": "="
}
},
"id": "bc269eae-cb86-482c-8408-aa08a431739c",
"name": "Notifica limite excedido",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
1120,
180
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "69cc2650-7d52-4da1-b391-a88b2326d63d",
"leftValue": "={{ $json.falhou }}",
"rightValue": 0,
"operator": {
"type": "number",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "21cf0f80-e996-4e9c-b93b-ae49cbbdb5b6",
"name": "If6",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
1280,
580
]
},
{
"parameters": {
"jsCode": "let contatos = items.map(item => `${item.json.nomecontato} - ${item.json.telefone}`).join('\\n');\n\nreturn [\n {\n json: {\n listaContatos: contatos\n }\n }\n];"
},
"id": "639dde41-6266-4d46-bea2-740abfff8d3d",
"name": "Code",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1620,
620
]
},
{
"parameters": {
"jsCode": "let contatos = items.map(item => `${item.json.nomecontato} - ${item.json.telefone}`).join('\\n');\n\nreturn [\n {\n json: {\n listaContatos: contatos\n }\n }\n];"
},
"id": "b86f10a4-ceec-488f-bc8a-962cceec4653",
"name": "Code1",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1620,
220
]
},
{
"parameters": {
"fromEmail": "emailenviarelatorio@gmail.com",
"toEmail": "={{ $node['Info_Base'].json.email_relatorio }}",
"subject": "Relat\u00f3rio a Campanha",
"text": "=\ud83d\udce2 Campanha {{ $node['Buscar campanhas'].json.title }} enviada com sucesso! \ud83d\udce2\n\n\u2714\ufe0f Total de envios: {{ $node['Resumo relatorio'].json.enviou }}\n\u274c N\u00famero de falhas: {{ $node['Resumo relatorio'].json.falhou }} \n#\ufe0f\u20e3 Limite restante: {{ $node['Resumo relatorio'].json.limite_disparo }} \n\nContatos n\u00e3o enviados:\n{{ $('Code').item.json[\"listaContatos\"] }}\n\nObrigado por utilizar nossos servi\u00e7os!",
"options": {}
},
"id": "2e79c4d9-3914-4df8-ad2f-7cbf9055817f",
"name": "Send Email2",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2,
"position": [
1980,
620
],
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"continueOnFail": true
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT \n (SELECT COUNT(*) FROM campaigns_failled WHERE id_campanha = {{ $('Buscar campanhas').item.json.id }}) AS total_registros,\n campaigns_failled.*\nFROM campaigns_failled\nWHERE id_campanha = {{ $('Buscar campanhas').item.json.id }};",
"options": {}
},
"id": "205aa2ae-be61-41d6-ac05-a99a7ba2d539",
"name": "Postgres1",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
1440,
220
],
"alwaysOutputData": true,
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fromEmail": "emailenviarelatorio@gmail.com",
"toEmail": "={{ $node['Info_Base'].json.email_relatorio }}",
"subject": "Limite de disparo excedido",
"text": "=\u26a0\ufe0f Aten\u00e7\u00e3o! Algumas mensagens da campanha {{ $node['Buscar campanhas'].json.title }} podem n\u00e3o ter sido enviadas. \u26a0\ufe0f\n\n\u2714\ufe0f Total de envios: {{ $node['Notifica limite excedido'].json.enviou }}\n\u274c N\u00famero de falhas: {{ $node['Notifica limite excedido'].json.falhou }}\n#\ufe0f\u20e3 Limite restante: {{ $node['Notifica limite excedido'].json.limite_disparo }} \n\nContatos n\u00e3o enviados:\n{{ $node['Code1'].json[\"listaContatos\"] }}\n\nO limite de disparos di\u00e1rios foi excedido. Por favor, verifique os envios ou entre em contato com o suporte para mais informa\u00e7\u00f5es.\n\nObrigado pela compreens\u00e3o! ",
"options": {}
},
"id": "eddf1b71-30cc-40c5-8f62-1d60e21587ac",
"name": "Send Email3",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2,
"position": [
1980,
220
],
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"continueOnFail": true
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "4e7aab24-149c-4afb-8970-97f3f4b91841",
"name": "etiqueta",
"value": "={{ $node['Buscar campanhas'].json.audience[0].id }}",
"type": "string"
},
{
"id": "93fad362-a35a-43c8-85ce-9d8dff3a28ad",
"name": "titulo_campanha",
"value": "={{ $node['Campanha'].json.msg.title }}",
"type": "string"
},
{
"id": "ae1dace5-7708-4042-a4f6-5d34a6b046bd",
"name": "id_campanha",
"value": "={{ $node['Buscar campanhas'].json.id }}",
"type": "string"
}
]
},
"options": {}
},
"id": "24a3b46f-19c8-4f50-bf44-b259c46d8414",
"name": "Dados da campanha",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
800,
600
]
},
{
"parameters": {
"fieldToSplitOut": "audience",
"include": "allOtherFields",
"options": {}
},
"id": "2472bf9b-333b-43e3-b082-cf5dbf3aaed7",
"name": "Tratamento de lista",
"type": "n8n-nodes-base.itemLists",
"typeVersion": 3,
"position": [
580,
860
],
"alwaysOutputData": true
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT \n (SELECT COUNT(*) FROM campaigns_failled WHERE id_campanha = {{ $node['Dados da campanha'].json.id_campanha }}) AS total_registros,\n cf.*\nFROM campaigns_failled cf\nWHERE cf.id_campanha = {{ $node['Dados da campanha'].json.id_campanha }};",
"options": {}
},
"id": "441bb08f-7722-4faa-867f-b507620df22f",
"name": "Postgres",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
1440,
620
],
"alwaysOutputData": true,
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT \n c.falhou, \n c.enviou, \n a.limite_disparo \nFROM \n campaigns c\nJOIN \n accounts a ON c.account_id = a.id\nWHERE \n c.id = {{ $json.id_campanha }};",
"options": {}
},
"id": "9ce30354-81ae-4680-83e4-249455576c88",
"name": "Resumo relatorio",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
1120,
580
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE accounts\nSET limite_disparo = {{ $('Busca limite diario').item.json.limite_disparo -1 }}\nWHERE id ={{ $('Info_Base').item.json.chatwoot_account_id }};",
"options": {}
},
"id": "a0dce6cc-4de0-4061-88c1-d434ee0a6001",
"name": "Subtrair",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
2040,
1060
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "={{ $node['Info_Base'].json.chatwoot_url }}/api/v1/accounts/{{ $node['Info_Base'].json.chatwoot_account_id }}/contacts/{{ $json.payload[0].id }}/conversations",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "api_access_token",
"value": "={{ $node['Info_Base'].json.chatwoot_token }}"
}
]
},
"options": {}
},
"id": "05283c2c-b66c-44e9-b84e-ea91e29b8ff4",
"name": "Abre conversa de contato existente",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"position": [
4120,
1040
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"url": "={{ $node['Info_Base'].json.chatwoot_url }}/api/v1/accounts/{{ $node['Info_Base'].json.chatwoot_account_id }}/contacts/search",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $node['Edita Mensagem'].json.verificanum }}"
}
]
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "api_access_token",
"value": "={{ $node['Info_Base'].json.chatwoot_token }}"
}
]
},
"options": {}
},
"id": "542009a0-2ba4-4ceb-8637-74484fcf1f5a",
"name": "Busca Contato Existe",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"position": [
3960,
1040
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"method": "POST",
"url": "={{ $node['Info_Base'].json.evolution_url }}/chat/whatsappNumbers/{{ $node['Info_Base'].json.instance_name }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "apikey",
"value": "={{ $node['Info_Base'].json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"numbers\": [\n \"{{ $node['Edita Mensagem'].json.verificanum }}\"\n ]\n} ",
"options": {}
},
"id": "10fa2039-20de-4606-a145-41a6dd51b3bf",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1700,
1060
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $node['Info_Base'].json.chatwoot_url }}/api/v1/accounts/{{ $node['Info_Base'].json.chatwoot_account_id }}/conversations/{{ $json.payload[0].id }}/toggle_status",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "api_access_token",
"value": "={{ $node['Info_Base'].json[\"chatwoot_token\"] }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n\"status\": \"resolved\"\n}",
"options": {}
},
"id": "3793ac4f-46b3-4a42-92c5-221016e51af6",
"name": "Fecha Conversa",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"position": [
2876,
360
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"url": "={{ $node['Info_Base'].json.chatwoot_url }}/api/v1/accounts/{{ $node['Info_Base'].json.chatwoot_account_id }}/contacts/{{ $json.payload[0].id }}/conversations",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "api_access_token",
"value": "={{ $node['Info_Base'].json.chatwoot_token }}"
}
]
},
"options": {}
},
"id": "636b3eba-53a7-407f-a745-4fe51ef2c741",
"name": "Seleciona conversa",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"position": [
2716,
360
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"url": "={{ $node['Info_Base'].json.chatwoot_url }}/api/v1/accounts/{{ $node['Info_Base'].json.chatwoot_account_id }}/contacts/search",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "=+{{ $node['Info_Base'].json[\"recebe_relatorio\"] }}"
}
]
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "api_access_token",
"value": "={{ $node['Info_Base'].json.chatwoot_token }}"
}
]
},
"options": {}
},
"id": "08a673f1-3bb0-4dff-b6cc-a0c7d484c3f3",
"name": "Busca Contato do Relatorio",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 3,
"position": [
2560,
360
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE conversations\nSET status = 1\nWHERE contact_id = {{ $json.id_contato }};",
"options": {}
},
"id": "60358ca8-7f4b-48f5-a365-bae10faecb29",
"name": "Resolve Conversa",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
4880,
1040
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"content": "## Com documento",
"height": 221.17684873191945,
"width": 313.99126283929667
},
"id": "b70106fc-bb53-4ffd-ba0b-685cc0eceb67",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3080,
1400
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT * \nFROM campaigns c \nWHERE account_id = 0\nAND status_envia = 0\nAND inbox_id = 0;",
"additionalFields": {}
},
"id": "79675b5a-61be-4643-b9a8-862654538647",
"name": "Buscar campanhas",
"type": "n8n-nodes-base.postgres",
"typeVersion": 1,
"position": [
-2080,
1040
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE campaigns SET status_envia = 1 WHERE id = {{ $json.id }}",
"options": {}
},
"id": "0207a237-592c-4ca6-a729-c8428b0051f4",
"name": "UPDATE CAMPANHA",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
-1200,
860
],
"alwaysOutputData": false,
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT DISTINCT c.*\nFROM contacts c\nJOIN taggings tg ON c.id = tg.taggable_id\nWHERE tg.tag_id IN ({{ $('Campanha').item.json.etiqueta }})\nAND tg.taggable_type = 'Contact'\nAND c.account_id = {{ $('Info_Base').item.json.chatwoot_account_id }};",
"options": {}
},
"id": "bd262158-182b-446f-b4a8-81501aab78e1",
"name": "Busca contatos",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
-80,
1040
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "=POST",
"url": "={{ $('Info_Base').item.json.evolution_url }}/message/sendText/{{ $('Info_Base').item.json.instance_name }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $('Info_Base').item.json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\":\"{{ $node['Edita Mensagem'].json.verificanum }}\",\n \"options\":{\"delay\":3000,\"presence\":\"composing\"},\n \"textMessage\":{\"text\":\"{{ $node['Edita Mensagem'].json.var_msg.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') }}\"}\n}",
"options": {}
},
"id": "3d92b924-d262-4f26-b390-738f067bf9f6",
"name": "Envia msg",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
3180,
880
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true,
"onError": "continueErrorOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "eba67cd0-fd9f-4069-b1e3-accd10450f96",
"leftValue": "={{ $('Campanha').item.json.img}}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
},
{
"id": "de8f0cf5-8faf-45a1-8965-7e660b401c5d",
"leftValue": "={{ $('Campanha').item.json.doc}}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
},
{
"id": "292e83ff-984b-4d13-8997-a70e14d6cab6",
"leftValue": "={{ $('Campanha').item.json.vid}}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
},
{
"id": "1454588a-05f2-4306-adb8-2bda761dac54",
"leftValue": "={{ $('Campanha').item.json.audio}}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "a611514b-41ce-45a6-8914-8f852b741fea",
"name": "If1",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2800,
1060
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $node['Info_Base'].json[\"evolution_url\"] }}/message/sendText/{{ $node['Info_Base'].json[\"instance_name\"] }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $node['Info_Base'].json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"{{ $node['Info_Base'].json['recebe_relatorio'] }}\",\n \"options\": {\n \"delay\": 3000,\n \"presence\": \"composing\"\n },\n \"textMessage\": {\n \"text\": \"\ud83d\udce2 Campanha *{{ $node['Buscar campanhas'].json.title }}* enviada com sucesso! \ud83d\udce2\\n\\n\u2714\ufe0f Total de envios: {{ $node['Resumo relatorio'].json.enviou }}\\n\u274c N\u00famero de falhas: {{ $node['Resumo relatorio'].json.falhou }}\\n#\ufe0f\u20e3 Limite restante: {{ $node['Resumo relatorio'].json.limite_disparo }}\\n\\n*Contatos n\u00e3o enviados:*\\n{{ $node['Code'].json.listaContatos.replace(/\\n/g, '\\\\n') }} \\n\\nObrigado por utilizar nossos servi\u00e7os!\"\n }\n}\n ",
"options": {}
},
"id": "8fab660f-3195-4a63-8f9b-b1de0e68cf67",
"name": "Envia relatorio3",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
1800,
620
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true
},
{
"parameters": {
"method": "POST",
"url": "={{ $node['Info_Base'].json.evolution_url }}/message/sendText/{{ $node['Info_Base'].json.instance_name }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $node['Info_Base'].json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\"number\":\"{{ $node['Info_Base'].json[\"recebe_relatorio\"] }}\",\"options\":{\"delay\":3000,\"presence\":\"composing\"},\"textMessage\":{\"text\":\"\ud83d\udce2 Campanha *{{ $node['Buscar campanhas'].json.title }}* enviada com sucesso! \ud83d\udce2\\n\\n\u2714\ufe0f Total de envios: {{ $json[\"enviou\"] }}\\n\u274c N\u00famero de falhas: {{ $json[\"falhou\"] }}\\n#\ufe0f\u20e3 Limite restante: {{ $json[\"limite_disparo\"] }}\\n\\nObrigado por utilizar nossos servi\u00e7os!\"}}",
"options": {}
},
"id": "4da50f83-4957-46fe-8fd9-7edfee2711b5",
"name": "Envia relatorio",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
1620,
480
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true
},
{
"parameters": {
"method": "POST",
"url": "={{ $node['Info_Base'].json[\"evolution_url\"] }}/message/sendText/{{ $node['Info_Base'].json[\"instance_name\"] }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $node['Info_Base'].json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\"number\":\"{{ $node['Info_Base'].json[\"recebe_relatorio\"] }}\",\"options\":{\"delay\":3000,\"presence\":\"composing\"},\"textMessage\":{\"text\":\"\u26a0\ufe0f *Aten\u00e7\u00e3o!* Algumas mensagens da campanha *{{ $node['Buscar campanhas'].json.title }}* podem n\u00e3o ter sido enviadas. \u26a0\ufe0f\\n\\n\u2714\ufe0f Total de envios: {{ $node['Notifica limite excedido'].json[\"enviou\"] }}\\n\u274c N\u00famero de falhas: {{ $node['Notifica limite excedido'].json[\"falhou\"] }}\\n#\ufe0f\u20e3 Limite restante: {{ $node['Notifica limite excedido'].json[\"limite_disparo\"] }}\\n\\n*Contatos n\u00e3o enviados:*\\n{{ $node['Code1'].json.listaContatos.replace(/\\n/g, '\\\\n') }} \\n\\nO limite de disparos di\u00e1rios foi excedido. Por favor, verifique os envios ou entre em contato com o suporte para mais informa\u00e7\u00f5es.\\n\\nObrigado pela compreens\u00e3o!\"}}\n",
"options": {}
},
"id": "4bf33c46-85f5-4000-80d1-e94de03fbaae",
"name": "Envia relatorio2",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
1800,
220
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true
},
{
"parameters": {
"method": "POST",
"url": "={{ $node['Info_Base'].json.evolution_url }}/message/sendText/{{ $node['Info_Base'].json.instance_name }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $node['Info_Base'].json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\"number\":\"{{ $node['Info_Base'].json[\"recebe_relatorio\"] }}\",\"options\":{\"delay\":3000,\"presence\":\"composing\"},\"textMessage\":{\"text\":\"\u26a0\ufe0f *Aten\u00e7\u00e3o!* Algumas mensagens da campanha *{{ $node['Buscar campanhas'].json.title }}* podem n\u00e3o ter sido enviadas. \u26a0\ufe0f\\n\\n\u2714\ufe0f Total de envios: {{ $json[\"enviou\"] }}\\n\u274c N\u00famero de falhas: {{ $json[\"falhou\"] }}\\n#\ufe0f\u20e3 Limite restante: {{ $json[\"limite_disparo\"] }}\\n\\nO limite de disparos di\u00e1rios foi excedido. Por favor, verifique os envios ou entre em contato com o suporte para mais informa\u00e7\u00f5es.\\n\\nObrigado pela compreens\u00e3o!\"}}",
"options": {}
},
"id": "8ce545bb-9528-4360-969a-7b61b27aa92a",
"name": "Envia relatorio1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
1620,
80
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true
},
{
"parameters": {
"method": "POST",
"url": "={{ $node['Info_Base'].json.evolution_url }}/message/sendText/{{ $node['Info_Base'].json.instance_name }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $node['Info_Base'].json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\"number\":\"{{ $node['Info_Base'].json[\"recebe_relatorio\"] }}\",\"options\":{\"delay\":3000,\"presence\":\"composing\"},\"textMessage\":{\"text\":\"\ud83d\udce2 Notifica\u00e7\u00e3o Importante \ud83d\udce2\\n\\n\ud83d\ude80 A campanha *{{ $node['Buscar campanhas'].json.title }}* foi iniciada com sucesso! \ud83c\udf89\\n\\n\ud83d\udcf2 As mensagens est\u00e3o sendo enviadas. Fique atento para atualiza\u00e7\u00f5es.\\n\\nObrigado por utilizar nossos servi\u00e7os! \ud83d\ude0a\"}}",
"options": {}
},
"id": "d035a2f5-0491-467f-b8e1-c9221f061b84",
"name": "Envia Notifica\u00e7\u00e3o",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
160,
920
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a588a036-88bc-4bc2-aefa-a2c0b9af2000",
"name": "var_msg",
"value": "={{ $('IF6').item.json.message.split('&nome').join($json.name).split('&email').join($json.email) }}",
"type": "string"
},
{
"id": "16d86caa-9f85-496d-ae3d-7ad024e100d7",
"name": "verificanum",
"value": "={{ $('Loop Over Items').item.json.phone_number }}",
"type": "string"
}
]
},
"options": {}
},
"id": "24419f4d-6d6a-490d-b386-af809b7e204d",
"name": "Edita Mensagem",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
980,
1040
]
},
{
"parameters": {
"fields": {
"values": [
{
"name": "mensagem",
"stringValue": "={{ $node['Edita Mensagem'].json.var_msg.split(\"&doc=\")[0].replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') }}"
},
{
"name": "titulo",
"stringValue": "={{ $('Campanha').item.json.msg.title }}"
},
{
"name": "doc",
"stringValue": "={{ $('Campanha').item.json.doc }}"
}
]
},
"options": {
"includeBinary": true
}
},
"id": "3dfc2230-0f09-4d64-a9fd-dccdd19398ce",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"typeVersion": 3.2,
"position": [
3120,
1460
]
},
{
"parameters": {
"fields": {
"values": [
{
"name": "mensagem",
"stringValue": "={{ $node['Edita Mensagem'].json.var_msg.split(\"&img=\")[0].replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') }}"
},
{
"name": "titulo",
"stringValue": "={{ $('Campanha').item.json.msg.title }}"
},
{
"name": "img",
"stringValue": "={{ $('Campanha').item.json.img }}"
}
]
},
"options": {
"includeBinary": true
}
},
"id": "84f1ff60-ec64-4cf3-bf03-48aa14ab6fb1",
"name": "Edit Fields2",
"type": "n8n-nodes-base.set",
"typeVersion": 3.2,
"position": [
3120,
1160
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $('Info_Base').item.json.evolution_url }}/message/sendMedia/{{ $('Info_Base').item.json.instance_name }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $('Info_Base').item.json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\":\"{{ $node['Edita Mensagem'].json.verificanum }}\",\n \"options\":{\"delay\":3000,\"presence\":\"composing\"},\n \"mediaMessage\":{\"mediatype\":\"image\",\"caption\":\"{{ $json.mensagem }}\",\n \"media\":\"{{ $json[\"img\"] }}\"}\n}\n",
"options": {}
},
"id": "504ff9b6-5ca6-459a-a6b3-64f8b00df1ea",
"name": "Envia msg2",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
3260,
1160
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true,
"onError": "continueErrorOutput"
},
{
"parameters": {
"method": "=POST",
"url": "={{ $('Info_Base').item.json[\"evolution_url\"] }}/message/sendMedia/{{ $('Info_Base').item.json[\"instance_name\"] }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $('Info_Base').item.json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"{{ $node['Edita Mensagem'].json.verificanum }}\",\n \"options\": {\n \"delay\": 3000,\n \"presence\": \"composing\"\n },\n \"mediaMessage\": {\n \"mediatype\": \"document\",\n \"media\": \"{{ $json[\"doc\"] }}\",\n \"caption\": \"{{ $json.mensagem }}\",\n \"fileName\": \"documento.pdf\"\n }\n}",
"options": {}
},
"id": "d2a47109-e433-40ec-9d7b-8b47d920de79",
"name": "Envia msg1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
3260,
1460
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true,
"onError": "continueErrorOutput"
},
{
"parameters": {
"content": "## Com video",
"height": 221.17684873191945,
"width": 313.99126283929667
},
"id": "60a1db9f-6767-462e-91fc-9c6a965d1ebf",
"name": "Sticky Note15",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3080,
1700
]
},
{
"parameters": {
"fields": {
"values": [
{
"name": "mensagem",
"stringValue": "={{ $node['Edita Mensagem'].json.var_msg.split(\"&vid=\")[0].replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') }}"
},
{
"name": "titulo",
"stringValue": "={{ $('Campanha').item.json.msg.title }}"
},
{
"name": "vid",
"stringValue": "={{ $('Campanha').item.json.vid }}"
}
]
},
"options": {
"includeBinary": true
}
},
"id": "2361404e-7c01-43ed-b70c-16f9c3d27d08",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"typeVersion": 3.2,
"position": [
3120,
1760
]
},
{
"parameters": {
"method": "=POST",
"url": "={{ $('Info_Base').item.json[\"evolution_url\"] }}/message/sendMedia/{{ $('Info_Base').item.json[\"instance_name\"] }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json, text/plain, */*"
},
{
"name": "apikey",
"value": "={{ $('Info_Base').item.json.global_api_key }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"{{ $node['Edita Mensagem'].json.verificanum }}\",\n \"options\": {\n \"delay\": 3000,\n \"presence\": \"composing\"\n },\n \"mediaMessage\": {\n \"mediatype\": \"video\",\n \"media\": \"{{ $json[\"vid\"] }}\",\n \"caption\": \"{{ $json.mensagem }}\"\n }\n}",
"options": {}
},
"id": "42082f2b-78c0-4559-9984-88c0560dfce9",
"name": "Envia msg3",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
3260,
1760
],
"retryOnFail": false,
"maxTries": 2,
"waitBetweenTries": 2000,
"executeOnce": true,
"onError": "continueErrorOutput"
},
{
"parameters": {
"options": {}
},
"id": "03218fad-17ee-404a-89b6-cedfe477e991",
"name": "Loop Over Items1",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
-1900,
1040
]
},
{
"parameters": {},
"id": "3b3e3f08-bb24-4645-b7e8-b4fe17c5aa54",
"name": "Replace Me",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
-1200,
1120
]
},
{
"parameters": {
"content": "## Com Audio",
"height": 221.17684873191945,
"width": 313.99126283929667
},
"id": "b0634135-c05a-49dc-9f90-c9cf89369340",
"name": "Sticky Note16",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3080,
2000
]
},
{
"parameters": {
"fields": {
"values": [
{
"name": "audio",
"stringValue": "={{ $('Campanha').item.json.audio }}"
}
]
},
"options": {
"includeBinary": true
}
},
"id": "8549a739-0eb6-40ba-8b49-a45e1794632d",
"name": "Edit Fields3",
"type": "n8n-nodes-base.set",
"typeVersion": 3.2,
"position": [
3120,
2060
]
},
{
"parameters": {
"method": "=POST",
"url": "={{ $('Info_Base').item.json[\"evolution_url\"] }}/message/sendMedia/{{ $('Info_Base').item.json[\"instance_na
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
postgressmtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow automates the precise scheduling and execution of repetitive tasks, ensuring notifications and data updates occur at optimal times without manual oversight, saving hours of daily effort for busy teams. It suits operations managers or IT administrators handling time-sensitive processes like inventory checks or report generation, particularly those relying on PostgreSQL for data storage and HTTP requests for external API interactions. The key step involves an initial cron-based schedule trigger that branches via conditional checks to adjust for time zones and introduce random delays, preventing overload on downstream systems before feeding into a robust chain of 85 nodes for processing and email alerts.
Use this workflow for high-volume, scheduled automations requiring timezone adjustments and anti-throttling measures, such as daily database syncs across global teams. Avoid it for one-off tasks or simple alerts lacking data complexity, where a lighter setup suffices. Common variations include swapping PostgreSQL for MySQL queries or adding Slack integrations for instant team notifications instead of emails.
About this workflow
Disparador 1.8. Uses itemLists, postgres, emailSend, httpRequest. Scheduled trigger; 85 nodes.
Source: https://github.com/andermarcebr/ChatWoot-Disparador-de-Campanhas/blob/main/disparador.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n workflow runs daily to analyze active customer behavior, engineers relevant features from usage and transaction data, applies a machine learning or AI-based model to predict churn probability
This n8n workflow automates continuous compliance monitoring across IT, OT, and cloud environments by aggregating security controls, validating policies (ISO 27001, NIST, GDPR, SOC2), detecting anomal
Automates real-time market monitoring, technical analysis, AI-powered signal generation for cryptocurrencies (and stocks), filters high-confidence trades, and delivers actionable alerts via multiple c
Scheduled processes retrieve customer feedback from multiple channels. The system performs sentiment analysis to classify tone, then uses OpenAI models to extract themes, topics, and urgency indicator
Recordatorio de Citas - 24 horas antes. Uses postgres, emailSend, httpRequest. Scheduled trigger; 5 nodes.