This workflow follows the Google Calendar → 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 →
{
"active": false,
"activeVersion": null,
"activeVersionId": null,
"connections": {
"Ordena do mais antigo para o mais recente em cada ano1": {
"main": [
[
{
"node": "Une os dados com a autentica\u00e7\u00e3o2",
"type": "main",
"index": 1
}
]
]
},
"Envia erro por Slack2": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Une os dados com a autentica\u00e7\u00e3o2": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items1": {
"main": [
[
{
"node": "No Operation, do nothing1",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger1": {
"main": [
[
{
"node": "Pausas Match Di\u00e1rio",
"type": "main",
"index": 0
}
]
]
},
"Chama o endpoint /find-volunteer1": {
"main": [
[
{
"node": "Une os dados do support_request e da volunt\u00e1ria1",
"type": "main",
"index": 1
}
],
[
{
"node": "Envia erro por Slack2",
"type": "main",
"index": 0
}
]
]
},
"Busca support_requests que est\u00e3o na fila1": {
"main": [
[
{
"node": "Ordena do mais antigo para o mais recente em cada ano1",
"type": "main",
"index": 0
}
]
]
},
"Faz autentica\u00e7\u00e3o na lambda-pedido-acolhimento1": {
"main": [
[
{
"node": "Une os dados com a autentica\u00e7\u00e3o2",
"type": "main",
"index": 0
}
]
]
},
"Faz autentica\u00e7\u00e3o na lambda-confirmacao-disponibilidade1": {
"main": [
[
{
"node": "Une os dados com a autentica\u00e7\u00e3o3",
"type": "main",
"index": 0
}
]
]
},
"Une os dados com a autentica\u00e7\u00e3o3": {
"main": [
[
{
"node": "Chama o endpoint /create-confirmation1",
"type": "main",
"index": 0
}
]
]
},
"Chama o endpoint /create-confirmation1": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
],
[
{
"node": "Envia erro por Slack3",
"type": "main",
"index": 0
}
]
]
},
"Une os dados do support_request e da volunt\u00e1ria1": {
"main": [
[
{
"node": "Prepara os dados1",
"type": "main",
"index": 0
}
]
]
},
"Prepara os dados1": {
"main": [
[
{
"node": "Encontrou volunt\u00e1ria?1",
"type": "main",
"index": 0
}
]
]
},
"Envia erro por Slack3": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Encontrou volunt\u00e1ria?1": {
"main": [
[
{
"node": "Une os dados com a autentica\u00e7\u00e3o3",
"type": "main",
"index": 1
}
],
[
{
"node": "Busca zendesk_ticket_id1",
"type": "main",
"index": 0
}
]
]
},
"Busca zendesk_ticket_id1": {
"main": [
[
{
"node": "Adiciona coment\u00e1rio interno no ticket1",
"type": "main",
"index": 0
}
]
]
},
"Adiciona coment\u00e1rio interno no ticket1": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Chama o endpoint /find-volunteer1",
"type": "main",
"index": 0
},
{
"node": "Une os dados do support_request e da volunt\u00e1ria1",
"type": "main",
"index": 0
},
{
"node": "Faz autentica\u00e7\u00e3o na lambda-confirmacao-disponibilidade1",
"type": "main",
"index": 0
}
]
]
},
"Pausas Match Di\u00e1rio": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
],
[
{
"node": "Send a message1",
"type": "main",
"index": 0
}
]
]
}
},
"createdAt": "2026-05-11T14:00:33.716Z",
"description": null,
"id": "ed6a37stm5XDiofE",
"isArchived": false,
"meta": {
"templateCredsSetupCompleted": true
},
"name": "[STG] Match Di\u00e1rio",
"nodes": [
{
"parameters": {
"sortFieldsUi": {
"sortField": [
{
"fieldName": "ano",
"order": "descending"
},
{
"fieldName": "created_at"
}
]
},
"options": {}
},
"id": "4c213bd2-9bdf-4cc3-9ea8-598d99989ce9",
"name": "Ordena do mais antigo para o mais recente em cada ano1",
"type": "n8n-nodes-base.sort",
"typeVersion": 1,
"position": [
432,
80
]
},
{
"parameters": {
"authentication": "oAuth2",
"select": "channel",
"channelId": {
"__rl": true,
"value": "C06H7GA52A1",
"mode": "list",
"cachedResultName": "monitoramento-erros"
},
"text": "=ERROR: N\u00e3o foi poss\u00edvel encontrar uma volunt\u00e1ria para esse `support_request` '{{ $json.support_request_id }}', por conta desse erro: {{ $json.error.message }} \n\n- Workflow: {{ $workflow.name }} ID: {{ $workflow.id }}",
"otherOptions": {}
},
"id": "e71c5d17-a6ff-4f7e-8f01-1dd81921bf5d",
"name": "Envia erro por Slack2",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.1,
"position": [
1984,
336
],
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "combine",
"combinationMode": "multiplex",
"options": {}
},
"id": "183d0aa7-fb9b-4dbf-b04c-e95bc9399d28",
"name": "Une os dados com a autentica\u00e7\u00e3o2",
"type": "n8n-nodes-base.merge",
"typeVersion": 2.1,
"position": [
864,
48
]
},
{
"parameters": {
"options": {}
},
"id": "fcd81862-dd11-433e-806f-810d32d2c3da",
"name": "Loop Over Items1",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1232,
48
]
},
{
"parameters": {},
"id": "5b32c61d-fb16-49a2-9994-abff8d35c868",
"name": "No Operation, do nothing1",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
1488,
-224
]
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 13 * * 1-5"
}
]
}
},
"id": "a53ec20f-6ae6-4ed7-9b6d-a745ab49a9cb",
"name": "Schedule Trigger1",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-688,
48
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $vars.PROD_MATCH_LAMBDA_URL }}/find-volunteer",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={ \n \"supportRequestId\": {{ $json.support_request_id }}\n}",
"options": {
"batching": {
"batch": {
"batchSize": 1
}
}
}
},
"id": "8475916b-9081-4b7e-abcc-2b02dd729061",
"name": "Chama o endpoint /find-volunteer1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1680,
208
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT \n support_request_id,\n created_at,\n DATE_PART('year', created_at) AS ano\nFROM match.support_requests\nWHERE status = 'waiting_for_match'",
"options": {}
},
"id": "69423db7-45fe-49b0-920c-932e58f17568",
"name": "Busca support_requests que est\u00e3o na fila1",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
192,
80
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "={{ $vars.PROD_MATCH_LAMBDA_URL }}/sign",
"options": {}
},
"id": "fd1468de-eaf1-431c-97a3-afa8800ab428",
"name": "Faz autentica\u00e7\u00e3o na lambda-pedido-acolhimento1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
448,
-128
]
},
{
"parameters": {
"url": "={{ $vars.PROD_CONFIRMACAO_LAMBDA_URL }}/sign",
"options": {}
},
"id": "6ca2f49a-4c73-42e7-b2a4-22a245c1749a",
"name": "Faz autentica\u00e7\u00e3o na lambda-confirmacao-disponibilidade1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
2000,
-144
]
},
{
"parameters": {
"mode": "combine",
"combinationMode": "multiplex",
"options": {}
},
"id": "551c6a81-1595-4f63-8b95-685267113c2d",
"name": "Une os dados com a autentica\u00e7\u00e3o3",
"type": "n8n-nodes-base.merge",
"typeVersion": 2.1,
"position": [
2960,
48
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $vars.PROD_CONFIRMACAO_LAMBDA_URL }}/create-confirmation",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={ \n \"supportRequestId\": {{ $json.support_request_id }},\n \"volunteerId\": {{ $json.volunteer_id }},\n \"matchType\": \"daily\",\n \"matchStage\": \"{{ $json.match_stage }}\"\n}",
"options": {
"batching": {
"batch": {
"batchSize": 1
}
}
}
},
"id": "0a92d499-d0f7-45ec-9af8-1d56847ef91a",
"name": "Chama o endpoint /create-confirmation1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3472,
480
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"mode": "combine",
"combinationMode": "multiplex",
"options": {}
},
"id": "84025629-b865-436a-a74e-6ede100c2ab5",
"name": "Une os dados do support_request e da volunt\u00e1ria1",
"type": "n8n-nodes-base.merge",
"typeVersion": 2.1,
"position": [
2288,
96
]
},
{
"parameters": {
"jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nconst output = []\nfor (const item of $input.all()) {\n const supportRequestId = item.json.support_request_id;\n const data = JSON.parse(item.json.data);\n let volunteerId;\n let matchStage\n if (data.message != \"No volunteers available\") {\n volunteerId = data.message.volunteer.volunteer_id;\n matchStage = data.message.matchStage;\n }\n \n\n output.push({\n support_request_id: supportRequestId,\n volunteer_id: volunteerId,\n match_stage: matchStage\n })\n}\n\nreturn output;"
},
"id": "3f07d9ad-4e7b-4043-9a8e-97d3777c6587",
"name": "Prepara os dados1",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2464,
96
]
},
{
"parameters": {
"authentication": "oAuth2",
"select": "channel",
"channelId": {
"__rl": true,
"value": "C06H7GA52A1",
"mode": "list",
"cachedResultName": "monitoramento-erros"
},
"text": "=ERROR: N\u00e3o foi poss\u00edvel criar uma confirma\u00e7\u00e3o de match para esse `support_request` '{{ $json.support_request_id }}', por conta desse erro: {{ $json.error.message }} \n\n- Workflow: {{ $workflow.name }} ID: {{ $workflow.id }}",
"otherOptions": {}
},
"id": "1539ccfd-6a10-4a16-91a8-a9ab9906402c",
"name": "Envia erro por Slack3",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.1,
"position": [
3680,
560
],
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose",
"version": 1
},
"conditions": [
{
"id": "899bf339-c26f-4d4f-af3a-67560a71496e",
"leftValue": "={{ $json.volunteer_id }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {
"looseTypeValidation": true
}
},
"id": "49d13551-88a0-46f8-846b-08709d0e8b00",
"name": "Encontrou volunt\u00e1ria?1",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2672,
96
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT\n zendesk_ticket_id\nFROM match.support_requests\nWHERE support_request_id = {{ $json.support_request_id }}",
"options": {}
},
"id": "fd476260-2300-4f97-8a3c-33952fc2387a",
"name": "Busca zendesk_ticket_id1",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.5,
"position": [
2864,
288
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "update",
"id": "={{ $json.zendesk_ticket_id }}",
"updateFields": {
"internalNote": "<strong>Match Di\u00e1rio:</strong> </br></br>N\u00e3o encontramos uma volunt\u00e1ria dispon\u00edvel. O pedido de acolhimento permanece na fila."
}
},
"id": "5a017763-6dfa-4594-8796-bda3a75757ad",
"name": "Adiciona coment\u00e1rio interno no ticket1",
"type": "n8n-nodes-base.zendesk",
"typeVersion": 1,
"position": [
3104,
400
],
"credentials": {
"zendeskApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"amount": 0.5
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
1440,
64
],
"id": "5ff721fb-7d83-4c18-9fd8-5699debcbb4e",
"name": "Wait1"
},
{
"parameters": {
"content": "## Fluxo Teste\n",
"height": 80
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-128,
-272
],
"id": "f4a383ec-4188-4247-b596-0a73b77fce3b",
"name": "Sticky Note"
},
{
"parameters": {
"operation": "getAll",
"calendar": {
"__rl": true,
"value": "c_6fd9f21b9c46fa9371a7daea0e981ae4fab88b4c193274b848e79d7e46365b94@group.calendar.google.com",
"mode": "list",
"cachedResultName": "Match Di\u00e1rio - Feriados e Pausas"
},
"returnAll": true,
"timeMin": "={{ $now.startOf('day').toISO() }}",
"timeMax": "={{ $now.endOf('day').toISO() }}",
"options": {}
},
"type": "n8n-nodes-base.googleCalendar",
"typeVersion": 1.3,
"position": [
-464,
48
],
"id": "86bafe0a-43a9-4962-bdaf-e9449e82961a",
"name": "Pausas Match Di\u00e1rio",
"alwaysOutputData": true,
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "5abe4ad4-bcc3-4405-a81a-54a9821a0a80",
"leftValue": "={{ $json.summary }}",
"rightValue": "=^(IMERS\u00c3O|FERIADO|Imers\u00e3o|Feriado)",
"operator": {
"type": "string",
"operation": "regex"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
-240,
48
],
"id": "bfca77cb-6734-4701-9c49-57a2ba484fbd",
"name": "If"
},
{
"parameters": {
"authentication": "oAuth2",
"select": "user",
"user": {
"__rl": true,
"value": "@Jana\u00edna",
"mode": "username"
},
"text": "=Identifiquei o evento: \"{{ $json.summary }}\". O fluxo de automa\u00e7\u00e3o n\u00e3o ser\u00e1 executado hoje.",
"otherOptions": {}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.4,
"position": [
0,
-48
],
"id": "45f78b66-abf8-4ba6-b113-a21debd2828a",
"name": "Send a message",
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"authentication": "oAuth2",
"select": "user",
"user": {
"__rl": true,
"value": "@Jana\u00edna",
"mode": "username"
},
"text": "=N\u00e3o foram encontrados eventos de bloqueio no calend\u00e1rio. O fluxo rodaria normalmente agora.",
"otherOptions": {}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.4,
"position": [
0,
160
],
"id": "0a2f490e-36e8-4687-b501-3421d05d93de",
"name": "Send a message1",
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
}
}
],
"settings": {
"executionOrder": "v1"
},
"shared": [
{
"updatedAt": "2026-05-11T14:00:33.719Z",
"createdAt": "2026-05-11T14:00:33.719Z",
"role": "workflow:owner",
"workflowId": "ed6a37stm5XDiofE",
"projectId": "rfgBK87HsySgxYKT",
"project": {
"updatedAt": "2024-11-15T08:07:36.637Z",
"createdAt": "2024-11-15T08:07:36.637Z",
"id": "rfgBK87HsySgxYKT",
"name": "Desenvolvimento Mapa <dev@mapa.org.br>",
"type": "personal",
"icon": null,
"description": null,
"projectRelations": [
{
"updatedAt": "2024-11-15T08:07:36.637Z",
"createdAt": "2024-11-15T08:07:36.637Z",
"userId": "6e437c36-d4e0-42f4-bbc3-d9b5ac96e474",
"projectId": "rfgBK87HsySgxYKT",
"user": {
"updatedAt": "2026-05-24T23:13:30.000Z",
"createdAt": "2024-01-09T22:21:28.810Z",
"id": "6e437c36-d4e0-42f4-bbc3-d9b5ac96e474",
"email": "dev@mapa.org.br",
"firstName": "Desenvolvimento",
"lastName": "Mapa",
"personalizationAnswers": null,
"settings": {
"userActivated": true,
"firstSuccessfulWorkflowId": "sMoToF9HauyKvsFJ",
"isOnboarded": true,
"userActivatedAt": 1731658062996,
"npsSurvey": {
"responded": true,
"lastShownAt": 1766005013760
},
"easyAIWorkflowOnboarded": true
},
"disabled": false,
"mfaEnabled": false,
"lastActiveAt": "2026-05-24",
"isPending": false
}
}
]
}
}
],
"staticData": null,
"tags": [],
"triggerCount": 0,
"updatedAt": "2026-05-11T16:55:01.102Z",
"versionCounter": 4,
"versionId": "ab464664-d4e3-4333-acb2-65c67c930546"
}
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.
googleCalendarOAuth2ApihttpHeaderAuthpostgresslackOAuth2ApizendeskApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
[STG] Match Diário. Uses slack, httpRequest, postgres, zendesk. Scheduled trigger; 24 nodes.
Source: https://github.com/mapadoacolhimento/n8n-workflows/blob/28039bf3faf1c42a9bcdc93c69dc48040f04617d/[STG]_Match_Diario — 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.
[STG] Match Diário. Uses slack, httpRequest, postgres, zendesk. Scheduled trigger; 24 nodes.
This template helps you create an interactive InfraNodus knowledge graph for your ZenDesk tickets using any search criteria (e.g. after a certain date, specific status, sender, keyword) that will auto
How it works This AI Customer Success Risk Prediction workflow revolutionizes customer retention by predicting churn risk 30-90 days before it happens. Here's the high-level flow: Daily Data Collectio
This workflow automates the prioritization and escalation of customer support tickets. It acts as an intelligent triage system that identifies high-value customers and potential churn risks in HubSpot
Analyze_Crowdstrike_Detections__search_for_IOCs_in_VirusTotal__create_a_ticket_in_Jira_and_post_a_message_in_Slack. Uses scheduleTrigger, itemLists, httpRequest, splitInBatches. Scheduled trigger; 18