WhatsApp + Google Calendar: bookings handled for you
Your customers message “Can I book a grooming slot?” and you see it… 40 minutes later. By then, they’ve either booked elsewhere or you’re digging through chats trying to remember what you promised.
This is the kind of mess that quietly drains pet shop owners, front-desk staff, and service teams juggling WhatsApp all day. With WhatsApp booking automation, you turn chats into confirmed appointments, answered questions, and even payment links without living inside your phone.
This workflow shows how a friendly AI agent can handle the back-and-forth, check availability in Google Calendar, confirm details, and store customer history so you stop re-asking the same questions.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: WhatsApp + Google Calendar: bookings handled for you
flowchart LR
subgraph sg0["TranscAudio Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Variaveis", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Data&Hora"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Converter Img", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Maps", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Maps1", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Maps2", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "TranscAudio", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "MsgType", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Aguarda", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "CalculoTime", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>JSONhistorico1"]
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prompt", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Converte PDF", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Extract PDF", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Maps5", pos: "b", h: 48 }
n15@{ icon: "mdi:wrench", form: "rounded", label: "Calculator", pos: "b", h: 48 }
n16@{ icon: "mdi:brain", form: "rounded", label: "Modelo IA", pos: "b", h: 48 }
n17@{ icon: "mdi:brain", form: "rounded", label: "OpenAI2", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Segmentos", pos: "b", h: 48 }
n19@{ icon: "mdi:cog", form: "rounded", label: "1,2s", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "no.op2", pos: "b", h: 48 }
n22@{ icon: "mdi:robot", form: "rounded", label: "OutputParser", pos: "b", h: 48 }
n23["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>JSONhistorico"]
n24@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filtro Reset", pos: "b", h: 48 }
n25["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>JSONhistorico2"]
n26@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Interferencia", pos: "b", h: 48 }
n27@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Desbloqueia IA", pos: "b", h: 48 }
n28["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Bloquear IA"]
n29["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Desbloquear IA"]
n30["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>SalvaHistorico1"]
n31["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Add Timeout"]
n32["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Busca Timeout"]
n33["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>SalvaHistorico"]
n34@{ icon: "mdi:memory", form: "rounded", label: "Postgres Memory", pos: "b", h: 48 }
n37@{ icon: "mdi:swap-vertical", form: "rounded", label: "get_consumer", pos: "b", h: 48 }
n38@{ icon: "mdi:swap-vertical", form: "rounded", label: "up_consumer", pos: "b", h: 48 }
n47@{ icon: "mdi:wrench", form: "rounded", label: "checar_cpf", pos: "b", h: 48 }
n48["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>START"]
n49@{ icon: "mdi:swap-vertical", form: "rounded", label: "up_dados", pos: "b", h: 48 }
n50@{ icon: "mdi:robot", form: "rounded", label: "Img Instagram", pos: "b", h: 48 }
n51@{ icon: "mdi:robot", form: "rounded", label: "Img WhatsApp", pos: "b", h: 48 }
n52@{ icon: "mdi:swap-vertical", form: "rounded", label: "Maps6", pos: "b", h: 48 }
n53@{ icon: "mdi:cog", form: "rounded", label: "Convert File Wp", pos: "b", h: 48 }
n54@{ icon: "mdi:cog", form: "rounded", label: "Add Response", pos: "b", h: 48 }
n55@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter WhatsApp", pos: "b", h: 48 }
n56@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Reply Message Insta", pos: "b", h: 48 }
n57@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Reply Message Wp", pos: "b", h: 48 }
n58@{ icon: "mdi:swap-vertical", form: "rounded", label: "Fixed Credentials", pos: "b", h: 48 }
n59["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Reply Insta"]
n60@{ icon: "mdi:swap-vertical", form: "rounded", label: "Message Markup Wp", pos: "b", h: 48 }
n61@{ icon: "mdi:swap-vertical", form: "rounded", label: "No Marking", pos: "b", h: 48 }
n62@{ icon: "mdi:swap-vertical", form: "rounded", label: "Message Markup Insta", pos: "b", h: 48 }
n63@{ icon: "mdi:cog", form: "rounded", label: "Response Refined", pos: "b", h: 48 }
n64@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Insta&Face", pos: "b", h: 48 }
n65["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Reply Facebook"]
n66@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Channel", pos: "b", h: 48 }
n67@{ icon: "mdi:swap-vertical", form: "rounded", label: "Message Markup Face", pos: "b", h: 48 }
n68@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Block IA", pos: "b", h: 48 }
n69@{ icon: "mdi:swap-vertical", form: "rounded", label: "MapTextHuman", pos: "b", h: 48 }
n70["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Lead Search"]
n71@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Lead Found", pos: "b", h: 48 }
n72@{ icon: "mdi:cog", form: "rounded", label: "Waiting", pos: "b", h: 48 }
n73["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Register New Lead"]
n74@{ icon: "mdi:robot", form: "rounded", label: "Text Wrap", pos: "b", h: 48 }
n75["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Instagram"]
n76["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Facebook"]
n77["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Audio WpAPI"]
n78["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Evolution"]
n79["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send WhatsApp"]
n80@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Bloqueio de IA", pos: "b", h: 48 }
n81@{ icon: "mdi:robot", form: "rounded", label: "Best Agent AI", pos: "b", h: 48 }
n82@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via Evolution", pos: "b", h: 48 }
n83@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via Instagram", pos: "b", h: 48 }
n84@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via Face", pos: "b", h: 48 }
n85@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via WAAPI", pos: "b", h: 48 }
n86@{ icon: "mdi:wrench", form: "rounded", label: "reagir_waapi", pos: "b", h: 48 }
n87["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>origem"]
n88@{ icon: "mdi:swap-horizontal", form: "rounded", label: "FromMe WhatsApp", pos: "b", h: 48 }
n89@{ icon: "mdi:swap-horizontal", form: "rounded", label: "FromMe Insta&Face&Wp", pos: "b", h: 48 }
n90@{ icon: "mdi:swap-horizontal", form: "rounded", label: "FromMe Insta&Face", pos: "b", h: 48 }
n91@{ icon: "mdi:wrench", form: "rounded", label: "reagir_evo", pos: "b", h: 48 }
n92@{ icon: "mdi:swap-vertical", form: "rounded", label: "update_name", pos: "b", h: 48 }
n93@{ icon: "mdi:wrench", form: "rounded", label: "create_payment", pos: "b", h: 48 }
n98["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Down Audio WpAPI"]
n99["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Down Audio Insta&Face"]
n100@{ icon: "mdi:swap-vertical", form: "rounded", label: "MapAudioEvo", pos: "b", h: 48 }
n101["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Down Img Insta&Face"]
n111@{ icon: "mdi:wrench", form: "rounded", label: "CalculateDelivery", pos: "b", h: 48 }
n115@{ icon: "mdi:wrench", form: "rounded", label: "checar_cep", pos: "b", h: 48 }
n116@{ icon: "mdi:wrench", form: "rounded", label: "send_img_wp", pos: "b", h: 48 }
n117@{ icon: "mdi:wrench", form: "rounded", label: "send_img_evo", pos: "b", h: 48 }
n168@{ icon: "mdi:wrench", form: "rounded", label: "n8n_chat_histories", pos: "b", h: 48 }
n169@{ icon: "mdi:wrench", form: "rounded", label: "instrucoes", pos: "b", h: 48 }
n170@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase instrucoes", pos: "b", h: 48 }
n171@{ icon: "mdi:brain", form: "rounded", label: "ModelB2", pos: "b", h: 48 }
n172@{ icon: "mdi:brain", form: "rounded", label: "ModelB3", pos: "b", h: 48 }
n173@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embed02", pos: "b", h: 48 }
n174@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embed03", pos: "b", h: 48 }
n175@{ icon: "mdi:cube-outline", form: "rounded", label: "SB n8n_chat_histories", pos: "b", h: 48 }
n208@{ icon: "mdi:wrench", form: "rounded", label: "calendarAgent", pos: "b", h: 48 }
n210@{ icon: "mdi:wrench", form: "rounded", label: "stock_query", pos: "b", h: 48 }
n19 --> n21
n3 --> n54
n4 --> n54
n5 --> n54
n14 --> n54
n52 --> n54
n48 --> n87
n11 --> n81
n21 --> n20
n87 --> n58
n8 --> n32
n66 --> n59
n66 --> n65
n173 -.-> n170
n174 -.-> n175
n171 -.-> n169
n172 -.-> n168
n7 --> n3
n7 --> n2
n7 --> n101
n7 --> n99
n7 --> n77
n7 --> n100
n7 --> n12
n17 -.-> n74
n72 --> n70
n68 --> n28
n68 --> n27
n49 -.-> n81
n1 --> n7
n16 -.-> n81
n18 --> n20
n74 --> n18
n74 --> n24
n0 --> n70
n15 -.-> n81
n71 --> n90
n71 --> n89
n71 --> n88
n71 --> n73
n61 --> n63
n115 -.-> n81
n47 -.-> n81
n169 -.-> n81
n91 -.-> n81
n31 --> n8
n9 --> n26
n13 --> n14
n70 --> n71
n100 --> n53
n6 --> n4
n116 -.-> n81
n210 -.-> n81
n38 -.-> n81
n92 -.-> n81
n54 --> n64
n54 --> n55
n12 --> n13
n24 --> n23
n51 --> n5
n69 --> n10
n22 -.-> n74
n37 -.-> n81
n86 -.-> n81
n117 -.-> n81
n81 --> n74
n32 --> n9
n2 --> n51
n50 --> n52
n26 --> n11
n23 --> n33
n76 --> n19
n79 --> n19
n84 --> n76
n208 -.-> n81
n80 --> n25
n27 --> n29
n27 --> n69
n10 --> n30
n25 --> n31
n78 --> n19
n75 --> n19
n85 --> n79
n93 -.-> n81
n53 --> n6
n55 --> n57
n88 --> n80
n77 --> n98
n59 --> n62
n34 -.-> n81
n98 --> n6
n20 --> n82
n20 --> n83
n20 --> n84
n20 --> n85
n57 --> n61
n57 --> n60
n63 --> n0
n111 -.-> n81
n64 --> n56
n58 --> n1
n90 --> n80
n60 --> n63
n73 --> n72
n65 --> n67
n82 --> n78
n83 --> n75
n168 -.-> n81
n101 --> n50
n67 --> n63
n56 --> n66
n56 --> n61
n170 -.-> n169
n89 --> n68
n62 --> n63
n99 --> n6
n175 -.-> n168
end
subgraph sg1["Start Time Flow"]
direction LR
n146@{ icon: "mdi:swap-vertical", form: "rounded", label: "Mensagem", pos: "b", h: 48 }
n147@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
n148@{ icon: "mdi:brain", form: "rounded", label: "Model", pos: "b", h: 48 }
n149@{ icon: "mdi:play-circle", form: "rounded", label: "Start Time", pos: "b", h: 48 }
n150["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Data&Hora1"]
n151["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>JSONhistorico3"]
n152@{ icon: "mdi:swap-horizontal", form: "rounded", label: "FollowUP Eu", pos: "b", h: 48 }
n153@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop", pos: "b", h: 48 }
n154["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>SalvaHistorico2"]
n155@{ icon: "mdi:swap-horizontal", form: "rounded", label: "24 Horas", pos: "b", h: 48 }
n156@{ icon: "mdi:swap-horizontal", form: "rounded", label: "10 Min", pos: "b", h: 48 }
n176["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Follow Up Search"]
n177["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Individual Followup"]
n178@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map FollowUP", pos: "b", h: 48 }
n179["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Calculate Time"]
n180@{ icon: "mdi:swap-horizontal", form: "rounded", label: "2 Horas", pos: "b", h: 48 }
n181@{ icon: "mdi:wrench", form: "rounded", label: "Calc201", pos: "b", h: 48 }
n182@{ icon: "mdi:memory", form: "rounded", label: "Memory50", pos: "b", h: 48 }
n183@{ icon: "mdi:swap-vertical", form: "rounded", label: "Fixed Credentials1", pos: "b", h: 48 }
n184["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Instagram1"]
n185["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Facebook1"]
n186["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Evolution1"]
n187["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send WhatsApp1"]
n188@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via Evolution1", pos: "b", h: 48 }
n189@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via Instagram1", pos: "b", h: 48 }
n190@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via Face1", pos: "b", h: 48 }
n191@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Send via WAAPI1", pos: "b", h: 48 }
n192@{ icon: "mdi:swap-horizontal", form: "rounded", label: "72 Horas", pos: "b", h: 48 }
n193@{ icon: "mdi:swap-vertical", form: "rounded", label: "SB Historico", pos: "b", h: 48 }
n194@{ icon: "mdi:robot", form: "rounded", label: "AI Agent FollowUP", pos: "b", h: 48 }
n195["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>QntFollowUP"]
n196@{ icon: "mdi:cog", form: "rounded", label: "NoOperation", pos: "b", h: 48 }
n197@{ icon: "mdi:cog", form: "rounded", label: "NoOperation1", pos: "b", h: 48 }
n153 --> n197
n153 --> n177
n148 -.-> n194
n156 --> n194
n147 --> n146
n180 --> n194
n181 -.-> n194
n155 --> n194
n192 --> n194
n182 -.-> n194
n146 --> n195
n146 --> n183
n150 --> n178
n149 --> n176
n152 --> n150
n152 --> n153
n195 --> n151
n178 --> n179
n193 -.-> n194
n179 --> n156
n179 --> n155
n179 --> n180
n151 --> n154
n185 --> n196
n187 --> n196
n190 --> n185
n186 --> n196
n184 --> n196
n191 --> n187
n176 --> n153
n194 --> n147
n183 --> n189
n183 --> n190
n183 --> n191
n183 --> n188
n177 --> n152
n188 --> n186
n189 --> n184
end
subgraph sg2["File Updated Flow"]
direction LR
n136["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Delete Old Doc Rows"]
n137@{ icon: "mdi:cog", form: "rounded", label: "Download File", pos: "b", h: 48 }
n138@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n139@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n140@{ icon: "mdi:cog", form: "rounded", label: "Summarize", pos: "b", h: 48 }
n141@{ icon: "mdi:cog", form: "rounded", label: "Delete File1", pos: "b", h: 48 }
n142@{ icon: "mdi:play-circle", form: "rounded", label: "File Updated", pos: "b", h: 48 }
n143@{ icon: "mdi:cog", form: "rounded", label: "Limit", pos: "b", h: 48 }
n144@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n145@{ icon: "mdi:swap-vertical", form: "rounded", label: "Definir ID", pos: "b", h: 48 }
n157@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch Type", pos: "b", h: 48 }
n158@{ icon: "mdi:cog", form: "rounded", label: "Extract PDF Text", pos: "b", h: 48 }
n159@{ icon: "mdi:cog", form: "rounded", label: "Extract from Text File", pos: "b", h: 48 }
n160@{ icon: "mdi:cog", form: "rounded", label: "Extract from Excel", pos: "b", h: 48 }
n161["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Convert to Google Doc"]
n162@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embed AI", pos: "b", h: 48 }
n163@{ icon: "mdi:robot", form: "rounded", label: "Recursive Character", pos: "b", h: 48 }
n164@{ icon: "mdi:cube-outline", form: "rounded", label: "Update Data RAG", pos: "b", h: 48 }
n165@{ icon: "mdi:robot", form: "rounded", label: "Enhanced Default", pos: "b", h: 48 }
n166@{ icon: "mdi:robot", form: "rounded", label: "Set File Version", pos: "b", h: 48 }
n167@{ icon: "mdi:wrench", form: "rounded", label: "Calc6301", pos: "b", h: 48 }
n138 --> n136
n143 --> n166
n167 -.-> n166
n162 -.-> n164
n139 --> n140
n140 --> n164
n145 --> n138
n157 --> n158
n157 --> n159
n157 --> n160
n157 --> n161
n142 --> n145
n137 --> n144
n144 --> n157
n144 --> n137
n165 -.-> n164
n158 --> n164
n166 --> n144
n160 --> n139
n136 --> n143
n163 -.-> n165
n161 --> n141
n159 --> n164
end
subgraph sg3["CalendarAgentAI1 Flow"]
direction LR
n198@{ icon: "mdi:location-exit", form: "rounded", label: "Create Event with Attendee", pos: "b", h: 48 }
n199@{ icon: "mdi:location-exit", form: "rounded", label: "Create Event", pos: "b", h: 48 }
n200@{ icon: "mdi:location-exit", form: "rounded", label: "Get Events", pos: "b", h: 48 }
n201@{ icon: "mdi:location-exit", form: "rounded", label: "Delete Event", pos: "b", h: 48 }
n202@{ icon: "mdi:location-exit", form: "rounded", label: "Update Event", pos: "b", h: 48 }
n203@{ icon: "mdi:brain", form: "rounded", label: "ChatModel9", pos: "b", h: 48 }
n204["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Agendado"]
n205["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>TryAgain"]
n206["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>CalendarAgentAI"]
n207@{ icon: "mdi:swap-vertical", form: "rounded", label: "update_meet_link", pos: "b", h: 48 }
n212@{ icon: "mdi:robot", form: "rounded", label: "CalendarAgentAI1", pos: "b", h: 48 }
n203 -.-> n212
n200 -.-> n212
n199 -.-> n212
n201 -.-> n212
n202 -.-> n212
n206 --> n212
n212 --> n204
n212 --> n205
n207 -.-> n212
n198 -.-> n212
end
subgraph sg4["Flow 5"]
direction LR
n35["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>WH Asaas"]
n36["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Response Asaas"]
n39["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Criar Cliente"]
n40["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Criar Cobrança"]
n41["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Add Link"]
n42@{ icon: "mdi:cog", form: "rounded", label: "PhoneID", pos: "b", h: 48 }
n43@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Sem Dados", pos: "b", h: 48 }
n44["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Asaas Erro"]
n45["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Asaas Erro1"]
n46["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Asaas Erro2"]
n42 --> n39
n41 --> n36
n35 --> n43
n43 --> n42
n43 --> n44
n39 --> n40
n39 --> n45
n40 --> n41
n40 --> n46
end
subgraph sg5["Flow 6"]
direction LR
n102["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code4"]
n103["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code Resposta"]
n104@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Se Erro", pos: "b", h: 48 }
n105["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Response Address Sucess"]
n106["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Response Address Error"]
n107["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Mapbox Cliente"]
n108["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Mapbox Distancia"]
n109@{ icon: "mdi:swap-vertical", form: "rounded", label: "Apontamentos", pos: "b", h: 48 }
n110["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>TriggerMapbox"]
n102 --> n108
n104 --> n106
n104 --> n105
n109 --> n107
n103 --> n104
n110 --> n109
n107 --> n102
n108 --> n103
end
subgraph sg6["Flow 7"]
direction LR
n112@{ icon: "mdi:swap-horizontal", form: "rounded", label: "CPF exist", pos: "b", h: 48 }
n113["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>RespondCPF2"]
n114["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>RespondCPF3"]
n128["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>CPF"]
n132@{ icon: "mdi:code-braces", form: "rounded", label: "Validate CPF", pos: "b", h: 48 }
n133@{ icon: "mdi:swap-horizontal", form: "rounded", label: "CPF Válido", pos: "b", h: 48 }
n128 --> n112
n112 --> n132
n112 --> n114
n133 --> n113
n133 --> n114
n132 --> n133
end
subgraph sg7["Flow 8"]
direction LR
n118["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Send Images"]
n119@{ icon: "mdi:web", form: "rounded", label: "Evolution Imagem", pos: "b", h: 48 }
n120@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Field Evo", pos: "b", h: 48 }
n121["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Response Img"]
n122["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Response Img Erro"]
n123@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n123 --> n121
n118 --> n120
n120 --> n119
n119 --> n123
n119 --> n122
end
subgraph sg8["Flow 9"]
direction LR
n127@{ icon: "mdi:code-braces", form: "rounded", label: "Checa CEP", pos: "b", h: 48 }
n129["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>CEP"]
n130["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>RespondCEP"]
n131@{ icon: "mdi:swap-horizontal", form: "rounded", label: "CEP exist", pos: "b", h: 48 }
n134["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>RespondCEP Erro"]
n135@{ icon: "mdi:swap-horizontal", form: "rounded", label: "CEP Válido", pos: "b", h: 48 }
n129 --> n131
n131 --> n127
n131 --> n134
n127 --> n135
n135 --> n130
n135 --> n134
end
subgraph sg9["AI Agent Products Flow"]
direction LR
n124@{ icon: "mdi:robot", form: "rounded", label: "AI Agent Products", pos: "b", h: 48 }
n125@{ icon: "mdi:brain", form: "rounded", label: "Model20", pos: "b", h: 48 }
n126@{ icon: "mdi:wrench", form: "rounded", label: "Calculator1", pos: "b", h: 48 }
n209["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Check Stock"]
n211["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond stock"]
n125 -.-> n124
n126 -.-> n124
n209 --> n124
n124 --> n211
end
subgraph sg10["Start Deletion Flow"]
direction LR
n94["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/n8n.svg' width='40' height='40' /></div><br/>n8n"]
n95["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/n8n.svg' width='40' height='40' /></div><br/>n8n1"]
n96@{ icon: "mdi:cog", form: "rounded", label: "No Operation1", pos: "b", h: 48 }
n97@{ icon: "mdi:play-circle", form: "rounded", label: "Start Deletion", pos: "b", h: 48 }
n94 --> n95
n95 --> n96
n97 --> n94
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n149,n142,n97 trigger
class n6,n22,n50,n51,n74,n81,n194,n163,n165,n166,n212,n124 ai
class n16,n17,n171,n172,n148,n203,n125 aiModel
class n15,n47,n86,n91,n93,n111,n115,n116,n117,n168,n169,n208,n210,n181,n167,n126 ai
class n34,n182 ai
class n170,n175,n164 ai
class n173,n174,n162 ai
class n7,n24,n26,n27,n55,n56,n57,n64,n66,n68,n71,n80,n82,n83,n84,n85,n88,n89,n90,n147,n152,n155,n156,n180,n188,n189,n190,n191,n192,n138,n157,n43,n104,n112,n133,n131,n135 decision
class n48,n59,n65,n75,n76,n77,n78,n79,n98,n99,n101,n184,n185,n186,n187,n161,n204,n205,n206,n35,n36,n39,n40,n44,n45,n46,n105,n106,n107,n108,n110,n113,n114,n128,n118,n119,n121,n122,n129,n130,n134,n209,n211 api
class n1,n10,n23,n25,n87,n150,n151,n179,n195,n102,n103,n132,n127 code
classDef customIcon fill:none,stroke:none
class n1,n10,n23,n25,n28,n29,n30,n31,n32,n33,n48,n59,n65,n70,n73,n75,n76,n77,n78,n79,n87,n98,n99,n101,n150,n151,n154,n176,n177,n179,n184,n185,n186,n187,n195,n136,n161,n204,n205,n206,n35,n36,n39,n40,n41,n44,n45,n46,n102,n103,n105,n106,n107,n108,n110,n113,n114,n128,n118,n121,n122,n129,n130,n134,n209,n211,n94,n95 customIcon
The Challenge: Booking Requests Get Lost in Chat
Chat is a terrible place to run scheduling from. Customers ask about prices, services, timing, and availability in the same thread, often with voice notes, photos, or “hey” messages that come in during rush hours. You answer when you can, then you still have to open Google Calendar, check slots, suggest times, confirm the pet’s details, and maybe send a payment link. One missed message turns into a no-show. One rushed reply turns into double-booking. And honestly, the mental load is the worst part.
It adds up fast. Here’s where it breaks down in real life.
- You end up copying the same FAQ answers all day, which still doesn’t feel “personal” to the customer.
- Availability checks happen too late, so the best slots get taken while you’re replying.
- Booking details live in chat, not in a system, so staff shift changes create confusion.
- Payments are handled “later,” and later becomes never, especially when the customer goes quiet.
The Fix: An AI Receptionist That Books in Google Calendar
This workflow turns incoming messages into a guided, friendly conversation that actually completes the job. A customer reaches out on WhatsApp (or Instagram/Messenger via the same flow), and the AI agent greets them, figures out what they need, and keeps context as the conversation continues. If the request is a service booking (bath, grooming, check-up), it checks your Google Calendar in real time, suggests available times, and confirms the appointment once the customer picks one. If they ask about products, it can check inventory stored in Supabase and reply with a clear yes/no (and details you decide). When payment is required, the workflow generates an Asaas payment link via API and sends it right in the chat, then stores the customer history so next time feels effortless.
The conversation starts in chat, but it doesn’t stay “just chat.” Google Calendar becomes the source of truth, Supabase stores the relationship, and Asaas closes the loop with payment. You stop chasing confirmations.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Let’s say you handle 12 booking-related chats a day. Manually, each one usually takes about 10 minutes of back-and-forth plus another 5 minutes to check Google Calendar and confirm details, so you’re burning roughly 3 hours daily. With this workflow, the customer gets the menu and time options instantly, and you only jump in for edge cases. In practice, many shops drop to about 1 minute of supervision per booking, which means you get around 2 hours back on a normal day.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- WhatsApp API provider to receive and send messages.
- Google Calendar for real-time availability and booking creation.
- OpenAI API key (get it from the OpenAI dashboard).
- Asaas account to generate payment links by API.
- Supabase project to store customer history and inventory.
Skill level: Intermediate. You’ll connect accounts, paste API keys, and tweak prompts and business rules.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A customer message triggers the workflow. The chat comes in from WhatsApp (and can be extended to Instagram/Messenger), then n8n routes it based on intent like “book,” “reschedule,” “price,” or “product availability.”
The AI agent reads and remembers context. Using an OpenAI Chat Model plus memory, the assistant keeps track of the customer, what pet they’re talking about, and what they already asked, so replies don’t feel like a reset every time.
Scheduling and checks happen automatically. For appointments, the workflow checks Google Calendar availability, suggests valid slots (respecting opening hours and holiday rules), then confirms and creates or updates the booking. For product questions, it can query Supabase inventory and respond immediately.
Payment and recordkeeping close the loop. If the service needs prepayment, an HTTP Request node calls the Asaas API to generate a link or invoice and sends it back in chat. Customer details, conversation history, and booking data are saved in Supabase, and optional logging can go to Google Sheets or Telegram for quick oversight.
You can easily modify the services menu and business-hour rules to match your shop’s reality. See the full implementation guide below for customization options.
Watch Out For
- Google Calendar permissions matter more than people expect. If booking creation fails, check the connected Google account’s calendar access and the credential status inside n8n first.
- If you’re relying on waiting for external responses (payment status, media processing, or webhook delivery), timing can drift. Increase wait time if downstream nodes run before the data is actually ready.
- The default AI tone is polite but generic. Customize the system prompt early with your greeting, policies, and “what we never do,” or you will keep editing responses forever.
Common Questions
Usually in about an hour once your accounts and API keys are ready.
Yes, but you’ll want someone comfortable with copying API keys and testing a few sample chats. No coding is required, though you may tweak prompts and business-hour settings.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs and any WhatsApp/Asaas provider fees.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can swap the inventory source or the payment provider without changing the whole idea of the flow. For example, replace the Supabase HTTP Request with Google Sheets lookups if your stock list lives there, or adjust the AI Agent prompt so it follows your policies on late arrivals and deposits. Common customizations include changing the services menu, adding staff-specific calendars, and tightening business hours so it never offers times you can’t actually fulfill.
Usually it’s expired credentials or the wrong webhook URL configured at your WhatsApp provider. Recheck your API token, confirm the provider is pointing to the correct n8n webhook, and look at the execution log to see the first node that fails. If it works for a while and then stops, rate limits or IP restrictions can also be the culprit.
On n8n Cloud, capacity depends on your plan’s monthly executions, and on self-hosted it mostly depends on your server.
Often, yes, because this workflow needs branching logic, memory, and multi-step checks that get awkward (and pricey) in simpler tools. n8n also gives you more control over how the AI behaves, which matters when you’re booking real appointments and handling payments. If you self-host, you’re not paying per task in the same way, so high chat volume is less stressful. That said, if you only want “message → create event” and nothing else, Zapier or Make can be faster to set up. Talk to an automation expert if you’re not sure which fits.
Once this is running, bookings stop depending on who noticed the message first. The workflow takes the repetitive weight off your team so you can focus on the customers standing right in front of you.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.