This workflow follows the HTTP Request → Supabase 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": "Automa\u00e7\u00e3o Master: Pedidos & Reservas (Web & App) - Evolution MultiTenant",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "0d65548d-5254-441e-ba4b-d5d699a99de0",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-1264,
816
],
"id": "df679d04-c697-4e30-9d53-611400fabb35",
"name": "Webhook Entregas"
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.body.order_type }}",
"value2": "local"
}
]
},
"options": {}
},
"id": "7bc8f956-27e7-48c1-8bf7-c479be04cfa1",
"name": "\u00c9 Pedido do Sal\u00e3o/Mesa?",
"type": "n8n-nodes-base.if",
"typeVersion": 2.1,
"position": [
-1008,
816
]
},
{
"parameters": {
"dataType": "string",
"value1": "={{ $json.body.status_novo }}",
"rules": {
"rules": [
{
"value2": "preparing"
},
{
"value2": "delivered"
}
]
}
},
"id": "093d2b62-7459-4586-b136-c4c1415d441e",
"name": "Status do Pedido Local",
"type": "n8n-nodes-base.switch",
"typeVersion": 2,
"position": [
-768,
672
]
},
{
"parameters": {
"method": "POST",
"url": "=https://evolution-api-production-9ac1.up.railway.app/message/sendText/{{$json.body.company_id}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "[REDACTED_SECRET]"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"55{{$json.body.customer_phone.replace(/\\D/g, '')}}\",\n \"textMessage\": {\n \"text\": \"Ol\u00e1 {{$json.body.cliente_nome}}! Seu pedido da comanda {{$json.body.comanda_numero}} est\u00e1 EM PREPARO e logo ir\u00e1 para a sua mesa/entrega! \ud83c\udf55\"\n }\n}",
"options": {}
},
"id": "bc60be15-54e1-4dc8-b03b-fca9f5765591",
"name": "WhatsApp Preparando (Local)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
-512,
560
]
},
{
"parameters": {
"method": "POST",
"url": "=https://evolution-api-production-9ac1.up.railway.app/message/sendText/{{$json.body.company_id}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "[REDACTED_SECRET]"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"55{{$json.body.customer_phone.replace(/\\D/g, '')}}\",\n \"textMessage\": {\n \"text\": \"Opa {{$json.body.cliente_nome}} \ud83c\udf89. Seu pedido da comanda {{$json.body.comanda_numero}} est\u00e1 PRONTO / FOI ENTREGUE! Bom apetite!\"\n }\n}",
"options": {}
},
"id": "4cccc261-ab36-4937-a6d1-db1f9b7904a5",
"name": "WhatsApp Entregue (Local)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
-512,
768
]
},
{
"parameters": {
"dataType": "string",
"value1": "={{ $json.body.status_novo }}",
"rules": {
"rules": [
{
"value2": "dispatched"
},
{
"value2": "delivered"
}
]
}
},
"id": "37d852db-28cc-4d56-bd81-dbece36c43e7",
"name": "Status do Pedido Delivery",
"type": "n8n-nodes-base.switch",
"typeVersion": 2,
"position": [
-768,
1072
]
},
{
"parameters": {
"method": "POST",
"url": "=https://evolution-api-production-9ac1.up.railway.app/message/sendText/{{$json.body.company_id}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "[REDACTED_SECRET]"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"55{{$json.body.customer_phone.replace(/\\D/g, '')}}\",\n \"textMessage\": {\n \"text\": \"Ol\u00e1 {{$json.body.cliente_nome}}! \ud83d\udef5 O motoboy acabou de sair com sua entrega na comanda {{$json.body.comanda_number}}!\\n\\nO valor total \u00e9 *R$ {{$json.body.total_amount}}*.\\nVoc\u00ea escolheu pagar via *{{$json.body.payment_method}}*.\\n\\nFique de olho no port\u00e3o! \ud83d\udc40\"\n }\n}",
"options": {}
},
"id": "a293b94f-b44a-44e3-ba35-a212db728458",
"name": "WhatsApp Dispatched (Delivery)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
-512,
960
]
},
{
"parameters": {
"operation": "insert"
},
"id": "a0c0e814-8c1c-4e0b-93e9-e96a04b0acb2",
"name": "Supabase - Inserir Pagamento Autom\u00e1tico",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
-512,
1168
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "supa-agendamentos",
"options": {}
},
"id": "252fd62b-40f9-4e3d-8cb7-b31b8351219d",
"name": "Webhook Supabase (Reservas)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
-1264,
1520
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.body.record.telefone_cliente }}",
"operation": "isNotEmpty"
}
]
}
},
"id": "673398be-8c84-4b69-a89c-293cfe9130ac",
"name": "Tem Telefone na Reserva?",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
-1008,
1520
]
},
{
"parameters": {
"dataType": "string",
"value1": "={{ $json.body.record.status }}",
"rules": {
"rules": [
{
"value2": "pendente"
},
{
"value2": "confirmada"
},
{
"value2": "cancelada"
}
]
}
},
"id": "42c0c8ca-8a47-423a-8797-d8cc7b8729b1",
"name": "Status da Reserva",
"type": "n8n-nodes-base.switch",
"typeVersion": 1,
"position": [
-768,
1488
]
},
{
"parameters": {
"method": "POST",
"url": "=https://evolution-api-production-9ac1.up.railway.app/message/sendText/{{$json.body.record.company_id}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "[REDACTED_SECRET]"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"55{{$json.body.record.telefone_cliente.replace(/\\D/g, '')}}\",\n \"textMessage\": {\n \"text\": \"Ol\u00e1 {{$json.body.record.nome_cliente}}! Restaurante informando: *Sua solicita\u00e7\u00e3o de mesa para {{$json.body.record.quantidade_pessoas}} pessoas est\u00e1 em an\u00e1lise.* Avisaremos assim que for confirmada! \ud83d\udd52\"\n }\n}",
"options": {}
},
"id": "nova-reserva-id-1234",
"name": "WhatsApp Reserva (Nova)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
-512,
1280
]
},
{
"parameters": {
"method": "POST",
"url": "=https://evolution-api-production-9ac1.up.railway.app/message/sendText/{{$json.body.record.company_id}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "[REDACTED_SECRET]"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"55{{$json.body.record.telefone_cliente.replace(/\\D/g, '')}}\",\n \"textMessage\": {\n \"text\": \"Ol\u00e1 {{$json.body.record.nome_cliente}}! \u2705 Sua mesa para {{$json.body.record.quantidade_pessoas}} pessoas no dia {{new Date($json.body.record.data_hora_reserva).toLocaleString('pt-BR')}} foi confirmada! Te esperamos.\"\n }\n}",
"options": {}
},
"id": "51e37a31-d059-4c39-9de4-7d09a4356d65",
"name": "WhatsApp Reserva (Confirmada)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
-512,
1450
]
},
{
"parameters": {
"method": "POST",
"url": "=https://evolution-api-production-9ac1.up.railway.app/message/sendText/{{$json.body.record.company_id}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "[REDACTED_SECRET]"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"55{{$json.body.record.telefone_cliente.replace(/\\D/g, '')}}\",\n \"textMessage\": {\n \"text\": \"Ol\u00e1 {{$json.body.record.nome_cliente}}, infelizmente sua reserva precisou ser cancelada. \ud83d\ude14 Entre em contato para mais detalhes.\"\n }\n}",
"options": {}
},
"id": "a80c1f5b-27f4-445a-9297-542adfaa2e1f",
"name": "WhatsApp Reserva (Cancelada)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
-512,
1620
]
}
],
"connections": {
"Webhook Entregas": {
"main": [
[
{
"node": "\u00c9 Pedido do Sal\u00e3o/Mesa?",
"type": "main",
"index": 0
}
]
]
},
"\u00c9 Pedido do Sal\u00e3o/Mesa?": {
"main": [
[
{
"node": "Status do Pedido Local",
"type": "main",
"index": 0
}
],
[
{
"node": "Status do Pedido Delivery",
"type": "main",
"index": 0
}
]
]
},
"Status do Pedido Local": {
"main": [
[
{
"node": "WhatsApp Preparando (Local)",
"type": "main",
"index": 0
}
],
[
{
"node": "WhatsApp Entregue (Local)",
"type": "main",
"index": 0
}
]
]
},
"Status do Pedido Delivery": {
"main": [
[
{
"node": "WhatsApp Dispatched (Delivery)",
"type": "main",
"index": 0
}
],
[
{
"node": "Supabase - Inserir Pagamento Autom\u00e1tico",
"type": "main",
"index": 0
}
]
]
},
"Webhook Supabase (Reservas)": {
"main": [
[
{
"node": "Tem Telefone na Reserva?",
"type": "main",
"index": 0
}
]
]
},
"Tem Telefone na Reserva?": {
"main": [
[
{
"node": "Status da Reserva",
"type": "main",
"index": 0
}
]
]
},
"Status da Reserva": {
"main": [
[
{
"node": "WhatsApp Reserva (Nova)",
"type": "main",
"index": 0
}
],
[
{
"node": "WhatsApp Reserva (Confirmada)",
"type": "main",
"index": 0
}
],
[
{
"node": "WhatsApp Reserva (Cancelada)",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automação Master: Pedidos & Reservas (Web & App) - Evolution MultiTenant. Uses httpRequest, supabase. Webhook trigger; 14 nodes.
Source: https://github.com/efcunha/restaurante-supabase/blob/b18f1df19e22cb89f6a151eb46e90f75b8846399/docs/recovered/n8n_agendamentos_reservas.recovered.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.
2. Refresh Pipedrive tokens. Uses stopAndError, stickyNote, supabase, httpRequest. Webhook trigger; 29 nodes.
This workflow provides an OAuth 2.0 auth token refresh process for better control. Developers can utilize it as an alternative to n8n's built-in OAuth flow to achieve improved control and visibility.
Buildnbloom - Typeform to Tier 1 Call. Uses supabase, airtable, httpRequest. Webhook trigger; 17 nodes.
Ai Assistant Workflow. Uses supabase, httpRequest, emailSend. Webhook trigger; 14 nodes.
Barbearia SaaS Pro. Uses supabase, httpRequest, chatwoot. Webhook trigger; 10 nodes.