WhatsApp + Google Sheets, bookings logged automatically
Booking requests land in WhatsApp, then get buried under new messages, voice notes, and “one quick question” follow-ups. You scroll. You guess. And sooner or later, you miss someone, or you write the appointment down twice.
Salon owners feel it first because it hits revenue. Front-desk staff deal with the chaos minute-to-minute. And for a marketing manager trying to run promos, a clean WhatsApp booking log is the difference between “busy” and “booked correctly.”
This workflow turns WhatsApp chats into structured bookings in Google Sheets, then replies to the customer automatically. You’ll see what it fixes, what you need to run it, and how the flow behaves in real life.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: WhatsApp + Google Sheets, bookings logged automatically
flowchart LR
subgraph sg0["Twilio Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Booking services", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "SuggestStylist", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "openingHour", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "salonservices", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "perticullerstylistsdetails", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Updatebooking", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Getbookingdetails", 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/twilio.svg' width='40' height='40' /></div><br/>Send an SMS/MMS/WhatsApp mes.."]
n11["<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/twilio.svg' width='40' height='40' /></div><br/>Twilio Trigger"]
n0 --> n10
n5 -.-> n0
n2 -.-> n0
n8 -.-> n0
n6 -.-> n0
n4 -.-> n0
n11 --> n0
n3 -.-> n0
n9 -.-> n0
n1 -.-> n0
n7 -.-> n0
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 n11 trigger
class n0 ai
class n1 aiModel
class n2 ai
class n3,n4,n5,n6,n7,n8,n9 database
classDef customIcon fill:none,stroke:none
class n10,n11 customIcon
The Challenge: WhatsApp Bookings Turn Into Guesswork
WhatsApp is where your customers actually message, so that’s where bookings happen. But WhatsApp is not a booking system. It doesn’t enforce date formats, it doesn’t stop overlaps, and it definitely doesn’t build a clean record you can trust when things get busy. One customer asks for “tomorrow afternoon,” another wants “same as last time,” and now your team is playing detective across old threads while someone else is waiting at reception. It’s exhausting, and honestly it’s avoidable.
It adds up fast. Here’s where it breaks down once you’re handling more than a few requests a day.
- Messages get missed because booking details are scattered across chat history and follow-ups.
- Staff rewrite the same information into notes, calendars, and spreadsheets, which invites typos.
- Double bookings happen when “availability” lives in someone’s head or in yesterday’s paper diary.
- Returning clients expect you to remember preferences, but those details are rarely captured consistently.
The Fix: WhatsApp Booking Requests Logged to Google Sheets Automatically
This n8n workflow connects your WhatsApp number (via Twilio) to an AI-powered booking assistant that understands messages, checks your salon data in Google Sheets, and writes confirmed bookings back into a single, reliable log. A customer texts “Can I book gel nails Friday at 3?” and the assistant pulls service options, opening hours, stylist profiles, and availability from your sheet. It then asks only for the missing pieces (name, stylist preference, contact details) and keeps context across the conversation so it doesn’t repeat itself. Once the booking is confirmed, the workflow appends the appointment to Google Sheets and sends a confirmation message right back on WhatsApp. Changes and cancellations are handled too, because the workflow can look up an existing booking by phone number and update the record.
The workflow starts when Twilio receives a WhatsApp message and triggers n8n. From there, the AI agent uses memory plus your Google Sheets “source of truth” to recommend, book, or modify appointments. Finally, Twilio sends the response to the customer so the whole experience stays inside WhatsApp.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you receive 15 booking-related WhatsApp messages in a day. Manually, it’s usually about 10 minutes each to clarify details, check services, confirm a time, and then log it into a sheet, so you lose roughly 2–3 hours daily. With this workflow, staff mainly steps in for edge cases: maybe 1 minute to glance at the Google Sheet log and spot-check anything unusual. The rest runs automatically, which means your “WhatsApp admin time” drops to something you barely notice.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Twilio to receive and send WhatsApp messages.
- Google Sheets to store services, staff, and bookings.
- OpenAI API key (get it from your OpenAI dashboard’s API keys page).
Skill level: Intermediate. You’ll connect Twilio webhooks, set up a Google Sheet structure, and paste API keys into n8n.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
WhatsApp message arrives via Twilio. When a customer messages your salon’s WhatsApp number, Twilio triggers the workflow through an incoming webhook.
Conversation stays consistent across sessions. A session memory buffer keeps context (like preferred stylist, typical service, or the fact they’re rescheduling) so the assistant doesn’t start from zero every time.
AI interprets the request and checks your Google Sheets data. The agent uses an OpenAI chat model to extract details, then looks up services, opening hours, stylist profiles, and booking records in the relevant Google Sheets tabs.
Bookings are written or updated, then the customer gets a clear reply. If it’s a new appointment, it appends a fresh row to your booking log. If it’s a change or cancellation, it finds the right record by phone number and modifies it. Either way, Twilio sends the confirmation or next question back through WhatsApp.
You can easily modify which fields get stored (for example, service duration or deposit status) to match how your salon runs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Webhook Trigger
Set up the inbound WhatsApp trigger so your workflow starts when Twilio receives a message.
- Add the Incoming Twilio Webhook node as the trigger for the workflow.
- Open Incoming Twilio Webhook and keep Updates set to
com.twilio.messaging.inbound-message.received. - Credential Required: Connect your twilioApi credentials in Incoming Twilio Webhook.
- Copy the Webhook URL from the node and paste it into your Twilio WhatsApp webhook configuration.
Tip: If Twilio doesn’t receive inbound messages, confirm the webhook URL matches the one generated by Incoming Twilio Webhook and that the Twilio WhatsApp sandbox or production number is properly configured.
Step 2: Connect Google Sheets Data Sources
These Google Sheets tools provide services, stylists, availability, and booking storage for the AI concierge.
- Open each Google Sheets tool node and set the correct Document and Sheet values for your salon data.
- In Append Booking Records, set Document to
[YOUR_ID]and Sheet toSheet1. Keep Operation set toappend. - In Modify Booking Entry, set Document to
[YOUR_ID], Sheet toOrder Booking, and keep Operation set toupdate. Ensure Matching Columns includesPhone. - In Lookup Booking Details, set the filter Lookup Column to
Phoneand Lookup Value to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}. - In Retrieve Salon Services, Fetch Opening Hours, Recommend Stylist Sheet, and Get Stylist Profiles, confirm the Sheet values match your workbook (e.g.,
Services,openingHour,SuggestStylist,PerticullerStylistsDetails). - Credential Required: Connect your googleSheetsOAuth2Api credentials to all Google Sheets tools. These credentials are configured on the tool nodes but are used by the AI agent when it calls them.
⚠️ Common Pitfall: Leaving Document as [YOUR_ID] will cause all Google Sheets calls to fail. Replace it with your real Google Sheets document ID in every Google Sheets tool node.
Step 3: Set Up the AI Agent and Memory
Configure the AI agent to orchestrate the conversation and connect the language model and memory.
- Open Conversational Orchestrator and review the prompt in Text. Keep the dynamic references such as
{{$now.day}},{{$now}},{{ $json.data.from }}, and{{ $json.data.body }}. - Open Session Memory Buffer and set Session Key to
{{ $json.data.from }}, Session ID Type tocustomKey, and Context Window Length to10. - Open OpenAI Dialogue Model and confirm the Model is set to
gpt-4.1-mini. - Credential Required: Connect your openAiApi credentials in OpenAI Dialogue Model.
- Ensure OpenAI Dialogue Model is connected as the language model to Conversational Orchestrator, and Session Memory Buffer is attached as memory. Add credentials to the parent model node, not the memory tool.
Tip: Because the Google Sheets tools are attached as AI tools to Conversational Orchestrator, the agent will call them automatically based on user intent. Keep the tool names unchanged so the prompt logic stays valid.
Step 4: Configure the WhatsApp Reply Output
Send the AI response back to the user through Twilio WhatsApp.
- Open Dispatch WhatsApp Reply and confirm To is set to
{{ $('Incoming Twilio Webhook').item.json.data.from.split("+")[1] }}. - Set From to
{{ $('Incoming Twilio Webhook').item.json.data.to.split("+")[1] }}so replies originate from your Twilio WhatsApp number. - Set Message to
{{ $json.output }}to send the AI response. - Enable To WhatsApp by keeping toWhatsapp set to
true. - Credential Required: Connect your twilioApi credentials in Dispatch WhatsApp Reply.
⚠️ Common Pitfall: If you get empty replies, verify the agent outputs data in the output property, which is used by Dispatch WhatsApp Reply in {{ $json.output }}.
Step 5: Test and Activate Your Workflow
Validate the end-to-end flow and then enable the workflow for live use.
- In n8n, click Execute Workflow and send a WhatsApp message to your Twilio number to trigger Incoming Twilio Webhook.
- Confirm Conversational Orchestrator runs and the response appears in Dispatch WhatsApp Reply.
- Verify that Google Sheets updates occur when booking or modifying appointments (e.g., new rows in the booking sheet or updates by phone).
- When the flow is correct, toggle the workflow to Active to run in production.
Watch Out For
- Twilio credentials and WhatsApp send permissions can be finicky. If replies stop sending, check your Twilio Console messaging logs and WhatsApp sender status first.
- If your Google Sheet columns change names or order, lookups and updates can silently write to the wrong place. Lock your header row and treat it like an API contract.
- Memory is powerful, but it can “remember” the wrong thing if your prompt is vague. Tighten the booking questions early, or you will be correcting appointments later.
Common Questions
If your Twilio WhatsApp number and Google Sheet are ready, you can usually get it running in about an hour.
Yes, but you will want one “techy” person for the Twilio webhook setup. Day-to-day usage is simple because it all happens in WhatsApp and Google Sheets.
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 usage (often a few dollars a month for many small salons) plus Twilio messaging costs.
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 adjust what the AI collects and what gets written to Google Sheets by updating the AI Agent instructions and the “Append Booking Records” mapping. Common tweaks include adding service duration, recording deposits, storing preferred staff member, and enforcing “no bookings outside opening hours” using the opening-hours sheet lookup.
Most of the time it’s an authentication or WhatsApp sender issue inside Twilio, not n8n. Check the Twilio Console logs for the specific error message, then confirm your webhook URL is reachable and your Twilio credentials in n8n match the account that owns the WhatsApp number. If messages come in but replies fail, it can also be a template or permission problem depending on your Twilio WhatsApp setup.
On n8n Cloud Starter, you can typically handle thousands of messages a month if the workflow is lightweight, and higher plans go further. If you self-host, there’s no execution cap, but you’re limited by your server and API rate limits. Practically, this workflow can handle many conversations at once because each chat is mostly text plus a few Google Sheets reads and writes. If you start getting spikes from campaigns, add queueing or throttle message processing to keep responses stable.
Often, yes. This flow relies on an AI agent plus session memory, and n8n handles that kind of logic without turning every “if this, then that” into a pricing problem. You also get a self-hosting option, which matters when message volume climbs. Zapier or Make can be fine for simple “WhatsApp to Sheets” logging, but they get awkward when you need context-aware conversations and booking modifications. If you’re unsure, Talk to an automation expert and describe your booking process as it exists today.
Once this is live, WhatsApp stays the same for your customers, but your team finally gets a booking log they can trust. Set it up, test it for a day, and you’ll wonder why you waited.
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.