Google Calendar + Google Sheets for booked appointments
Booking appointments shouldn’t feel like playing inbox ping-pong. But when inquiries come in through chat, it’s easy to lose track, accidentally offer the same slot twice, or forget to log details somewhere you can actually use later.
appointment booking automation hits hardest when you’re the one answering messages between client work. A studio owner feels it at 9pm. A marketing manager feels it when leads go cold. And a consultant feels it when admin steals the morning.
This workflow turns chat conversations into confirmed bookings in Google Calendar, then logs every appointment neatly in Google Sheets. You’ll see how it works, what you need, and how to adapt it to your business rules.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Calendar + Google Sheets for booked appointments
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:memory", form: "rounded", label: "Conversation Memory", pos: "b", h: 48 }
n1@{ icon: "mdi:location-exit", form: "rounded", label: "Check Calendar Availability", pos: "b", h: 48 }
n2@{ icon: "mdi:location-exit", form: "rounded", label: "Book Calendar Appointment", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Save Appointment Record", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n5@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Get business details", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "AI Receptionist", pos: "b", h: 48 }
n6 -.-> n9
n7 -.-> n4
n0 -.-> n9
n8 --> n9
n3 -.-> n9
n4 -.-> n9
n2 -.-> n9
n5 --> n8
n1 -.-> n9
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 n5 trigger
class n4,n9 ai
class n6,n7 aiModel
class n0 ai
class n3,n8 database
class n4 disabled
Why This Matters: Booking Without the Back-and-Forth
Chat is great for getting inquiries, but it’s a messy place to run scheduling. Someone asks, “Do you have anything Thursday?” You check the calendar, suggest a time, they disappear, and meanwhile another person asks for the same slot. Or you book it, then realize you never captured their phone number, the service they wanted, or any notes your team needs. It’s not one big failure. It’s dozens of small ones that stack up into missed revenue and constant mental load.
It adds up fast. Here’s where it usually breaks down:
- You end up checking Google Calendar over and over because “availability” changes every time someone delays replying.
- Details get scattered across chat threads, which means you’re rebuilding context right before the appointment.
- One small typo in date, timezone, or service length creates a domino effect for the rest of the day.
- Your spreadsheet (if you have one) gets updated late, so reporting and follow-ups are always a step behind.
What You’ll Build: An AI Receptionist That Books and Logs
This workflow gives you a virtual receptionist that can chat naturally with customers, answer common questions, and book appointments without hand-holding. It starts when a customer sends a message (your “Incoming Chat Trigger”). The automation pulls your business info from Google Sheets (services, hours, policies, and even the AI’s personality), then uses an AI agent to run the conversation. When the customer asks for a time, it checks Google Calendar availability, confirms the details, creates the calendar event, and finally writes a clean record to Google Sheets. No copy-pasting. No “wait, what did they say their name was?” moments.
The workflow begins in chat, then uses Google Sheets as the single source of truth for business rules. After that, Google Calendar becomes the “final authority” for availability and bookings. Once the appointment is confirmed, the workflow logs it so you can track volume, services, and client details later.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you get 20 chat inquiries a week and about half turn into actual bookings. Manually, even a “quick” booking often takes 10 minutes of back-and-forth plus 5 minutes to log it properly, so 10 bookings can eat roughly 2–3 hours. With this appointment booking automation, the customer drives the conversation, the calendar check happens instantly, and logging is automatic. You still review edge cases, but most weeks you get a couple hours back without hiring extra help.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Calendar to check availability and create events.
- Google Sheets for business info and appointment logs.
- OpenAI API key (get it from your OpenAI account dashboard).
Skill level: Intermediate. You’ll connect accounts, paste an API key, and edit a few business-specific fields in a spreadsheet.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A customer message triggers the receptionist. The workflow starts as soon as someone says hi or asks a question in your chat entry point. That message is passed to the AI receptionist so it can respond like a real front desk would.
Your business rules get loaded from Google Sheets. The automation reads your Business Info Sheet, which includes services, prices, location, hours, timezone, and policies like cancellation windows and how far in advance someone can book.
The assistant checks availability before it promises anything. When a customer requests a time, the workflow verifies open slots in Google Calendar. If it’s available, it moves forward. If not, it suggests alternatives based on your working hours and booking rules.
Confirmed bookings get created and logged. Once the customer confirms, the workflow schedules the visit in Google Calendar and writes a matching record into your Appointments Sheet (client name, service, and event ID). Simple, and honestly much easier to audit later.
You can easily modify the services list and appointment policies to match how your business actually runs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Chat Trigger
The workflow starts when a chat message is received and passes the input to the business info lookup.
- Add and open Incoming Chat Trigger.
- Leave default settings in place unless you need custom chat options.
- Confirm the trigger connects to Retrieve Business Info as its next node.
Step 2: Connect Google Sheets
This step loads your business configuration and prepares the appointment logging destination.
- Open Retrieve Business Info and set Document to
[YOUR_ID]and Sheet toSheet1(gid0). - Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Business Info.
- Open Log Appointment Entry and set Operation to
append. - Set Document to
[YOUR_ID]and Sheet toSheet2. - Map the column values to the AI expressions exactly as shown (for example, set summary to
{{$fromAI('summary', `summary conversation`, 'string')}}). - Credential Required: Connect your googleSheetsOAuth2Api credentials in Log Appointment Entry.
patient name and patient number or your append will fail.Step 3: Set Up the Virtual Receptionist Agent
The agent orchestrates the conversation, uses memory, and calls calendar/sheets tools.
- Open Virtual Receptionist Agent and set Text to
{{ $('Incoming Chat Trigger').item.json.chatInput }}. - Verify Prompt Type is
defineand Has Output Parser is enabled. - Review the System Message for business and booking rules and update any placeholders (e.g., business name, timezone, and policies).
- Open Dialogue Memory Store and set Context Window Length to
15.
Step 4: Configure AI Models, Parsing, and Calendar Tools
This step connects OpenAI models and calendar tools that the agent uses during booking.
- Open Primary Chat Model and set Model to
gpt-4.1-mini. - Credential Required: Connect your openAiApi credentials in Primary Chat Model.
- Open Secondary Chat Model and set Model to
gpt-4.1-mini. - Credential Required: Connect your openAiApi credentials in Secondary Chat Model.
- Open Verify Calendar Slots and set Time Min to
{{$fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string')}}and Time Max to{{$fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string')}}. Set Calendar to[YOUR_EMAIL]. - Credential Required: Connect your googleCalendarOAuth2Api credentials in Verify Calendar Slots.
- Open Schedule Calendar Visit and set Start to
{{$fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string')}}and End to{{$fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string')}}. - Set Additional Fields → Summary to
{{$fromAI('event_title', `Event title with customer name and service`, 'string')}}and Description to{{$fromAI('event_description', `Detailed event description including: Business name, Service type, Duration, Customer name, Phone, Special notes`, 'string')}}. - Credential Required: Connect your googleCalendarOAuth2Api credentials in Schedule Calendar Visit.
- Open Structured Reply Parser, verify Auto Fix is enabled and JSON Schema Example contains the
ai_replyfield. Note: this node is currently disabled; enable it if you want structured AI replies parsed.
Step 5: Test and Activate Your Workflow
Run a full chat to validate data pull, calendar checks, booking, and logging.
- Click Test Workflow and send a chat message to Incoming Chat Trigger.
- Confirm Retrieve Business Info returns your business data and passes it to Virtual Receptionist Agent.
- Verify the agent checks availability via Verify Calendar Slots and books via Schedule Calendar Visit when appropriate.
- Confirm Log Appointment Entry appends a new row to
Sheet2with the AI-populated fields. - When satisfied, toggle the workflow to Active for production use.
Troubleshooting Tips
- Google Calendar credentials can expire or need specific permissions. If things break, check the connected Google account and scopes in your n8n credentials first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About an hour if your Google accounts are ready.
No. You will mostly connect accounts and edit your Google Sheet fields. The “hard part” is deciding your services and policies clearly.
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 (usually just a few dollars a month for typical appointment chat volume).
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.
Yes, and you should. Most customizations happen in “Retrieve Business Info” (your services, hours, policies) and in the “Virtual Receptionist Agent” instructions for tone and what it’s allowed to book. You can also adjust how availability is checked by changing the “Verify Calendar Slots” behavior (for example, buffer time between appointments). If you want to log extra fields, add columns in your Appointments Sheet and update “Log Appointment Entry” to match.
Usually it’s expired Google permissions or the wrong Google account connected. Reconnect the Google Calendar credential in n8n, then confirm you’re booking into the same calendar ID listed in your Business Info Sheet. If it fails only during busy times, you might also be hitting Google API rate limits, so spacing requests slightly can help.
A typical n8n Cloud plan can handle plenty for a small business, and if you self-host you’re mainly limited by your server and your API limits. Practically, most teams run dozens of conversations per day without thinking about it, because each chat only triggers a handful of calendar and sheet actions.
Sometimes, yes. This workflow relies on an AI agent with conversation memory, structured parsing, and branching logic around availability and booking rules, and that’s where n8n tends to be more flexible. It’s also easier to keep costs predictable when you have multi-step logic and lots of messages. Zapier or Make can still work if you only need something basic, like “form submission → create event,” without a real conversation layer. If you want help picking the right stack, Talk to an automation expert.
You set this up once, and the workflow does the repetitive scheduling work in the background. Then you get to focus on the service you actually sell.
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.