Google Sheets + Google Calendar, more booked calls
Your website chat is busy, but your calendar isn’t. Leads ask questions, disappear, come back three days later, and you’re left scrolling transcripts and retyping notes into a spreadsheet. It’s messy. And honestly, it’s avoidable with booked calls automation.
This hits marketing managers first because they pay for the traffic. But consultants doing sales calls and agency owners juggling multiple pipelines feel it just as much. The outcome is simple: more qualified meetings booked, with clean summaries waiting for you.
This guide breaks down the workflow, what you need to run it, and what to expect once it’s live.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Sheets + Google Calendar, more booked calls
flowchart LR
subgraph sg0["Incoming Chat Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Incoming Chat Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:location-exit", form: "rounded", label: "Primary Calendar Create", pos: "b", h: 48 }
n2@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Gmail Notice", pos: "b", h: 48 }
n3@{ icon: "mdi:memory", form: "rounded", label: "Booking Context Memory", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Fetch Docs Reference", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "Update Sheet Record", pos: "b", h: 48 }
n6@{ icon: "mdi:location-exit", form: "rounded", label: "Retrieve Calendar Slots", pos: "b", h: 48 }
n7@{ icon: "mdi:wrench", form: "rounded", label: "Schedule Meeting Agent", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "Calendar LLM Router", pos: "b", h: 48 }
n9["<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/>Response Extractor"]
n10@{ icon: "mdi:database", form: "rounded", label: "Lookup Prior History", pos: "b", h: 48 }
n11@{ icon: "mdi:memory", form: "rounded", label: "Conversation Memory", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "Lead LLM Router", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Qualification Agent", pos: "b", h: 48 }
n13 --> n9
n11 -.-> n13
n3 -.-> n7
n10 -.-> n13
n1 -.-> n7
n12 -.-> n13
n8 -.-> n7
n2 -.-> n7
n0 --> n13
n4 -.-> n13
n7 -.-> n13
n6 -.-> n7
n5 -.-> n13
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 n0 trigger
class n13 ai
class n8,n12 aiModel
class n7 ai
class n3,n11 ai
class n5,n10 database
class n9 code
classDef customIcon fill:none,stroke:none
class n9 customIcon
Why This Matters: Website Chats That Don’t Turn Into Meetings
If you rely on website chat to capture demand, you already know the pattern. A visitor asks a few questions, you answer (or your team does), then the conversation stalls because scheduling is awkward. Somebody has to collect an email, offer times, check a calendar, send a confirmation, and remember to log what was said. Miss one step and the lead goes cold. Do this all week and you end up with “busy” chat activity that never becomes revenue.
It adds up fast. Here’s where it usually breaks down in real life.
- Leads get qualified inconsistently because different people ask different questions, and the important details never show up in the notes.
- You lose time to calendar back-and-forth, especially when someone requests “next week” and you still have to manually check availability.
- Manual copy-paste into Google Sheets creates duplicates, missing fields, and follow-ups that slip through the cracks.
- When a lead returns later, you don’t have context, so the conversation restarts from zero and the experience feels less “premium.”
What You’ll Build: An AI Chat Qualifier That Books Calls for You
This workflow turns your website chat into a sales assistant that can qualify leads, book meetings, and keep your records clean in the background. When a visitor sends a message, the automation engages them as a friendly rep (“Hassan”) and asks smart questions to figure out intent, fit, and urgency. If the lead is qualified, it checks your Google Calendar availability in real time and offers bookable options that avoid conflicts. Once a time is confirmed, it creates the calendar event, adds the attendee properly, and sends a professional confirmation email through Gmail. Finally, it writes a clear conversation summary back to Google Sheets so you (or your team) can prepare for the call without reading a long transcript.
The workflow starts with an incoming chat webhook, then uses AI plus short-term memory to keep the conversation coherent. In the middle, it looks up prior history in Google Sheets and checks calendar slots before proposing a meeting. At the end, you get a booked calendar event, an email confirmation, and a neat summary row in your sheet.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you get 10 meaningful website chats a week and you normally spend about 20 minutes each doing the same things: qualify, collect contact info, check Google Calendar, propose times, then log notes into Google Sheets. That’s roughly 3 hours of admin work, plus the “I’ll get back to you” delay that kills momentum. With this workflow, the human time is closer to zero until a meeting is actually booked. The automation handles the conversation, creates the event, emails the details, and writes the summary while you stay focused elsewhere.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for the lead database and summaries
- Google Calendar to check availability and create meetings
- Gmail to send confirmation emails automatically
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Advanced. You won’t write “code from scratch,” but you will configure OAuth connections, prompts, and a few moving parts carefully.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A website chat message triggers everything. Your chat tool posts the visitor’s message to an n8n webhook, which kicks off the conversation flow immediately. No inbox triage. No waiting for someone to notice.
The AI qualifies the lead and keeps context. An AI Agent runs the conversation using your qualification approach, while a memory component keeps recent messages “in mind” so the replies stay consistent across a longer exchange.
History and knowledge get pulled in when useful. The workflow can look up prior interactions in Google Sheets to avoid repeating questions, and it can fetch reference info from a doc so the assistant answers pricing and service questions more accurately.
Qualified leads are offered real availability, then booked. The automation checks Google Calendar for open slots, proposes options, and when the lead confirms, it creates the event and sends a Gmail confirmation with the details.
You can easily modify the qualification criteria to match your ideal customer profile based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Chat Trigger
Set up the incoming chat entry point so conversations can flow into the qualification agent.
- Add or open Incoming Chat Trigger and confirm Public is set to
true. - Copy the webhook URL from Incoming Chat Trigger and connect it to your chat widget or front-end chat client.
- Ensure Incoming Chat Trigger connects directly to Qualification Agent.
Step 2: Connect Google Docs and Google Sheets
Provide the knowledge base and CRM-style logging to support qualification and summary updates.
- Open Fetch Docs Reference and set Operation to
get. - Set Document URL to
[YOUR_ID]in Fetch Docs Reference. - Credential Required: Connect your
googleDocsOAuth2Apicredentials in Fetch Docs Reference. - Open Update Sheet Record and confirm Operation is
appendOrUpdate. - Set Document ID to
[YOUR_ID]and Sheet Name toSheet1in Update Sheet Record. - Verify the column mappings in Update Sheet Record, including
{{$now.format('yyyy-MM-dd HH:mm:ss')}}for the date. - Credential Required: Connect your
googleSheetsOAuth2Apicredentials in Update Sheet Record and Lookup Prior History.
Email and the sheet headers match your schema.Step 3: Set Up the AI Qualification Layer
Configure the LLM routing, memory, and agent prompts that drive lead qualification.
- Open Lead LLM Router and set Model to
openai/gpt-4.1. - Credential Required: Connect your
openRouterApicredentials in Lead LLM Router. - Open Conversation Memory and set Session Key to
{{$json.sessionId}}with Session ID Type set tocustomKeyand Context Window Length to10. - Open Qualification Agent and keep Text set to
{{$json.chatInput}}{{$json.message}}. - Confirm Qualification Agent uses the provided system prompt under Prompt Type set to
define.
Step 4: Configure Scheduling and Calendar Actions
Set up the booking assistant, calendar availability, and event creation flow.
- Open Calendar LLM Router and set Model to
anthropic/claude-sonnet-4. - Credential Required: Connect your
openRouterApicredentials in Calendar LLM Router. - Open Schedule Meeting Agent and confirm Text is set to
{{$fromAI('Prompt__User_Message_', ``, 'string')}}. - Review the system message inside Schedule Meeting Agent to ensure your company name and timezone are correct.
- Open Retrieve Calendar Slots and confirm Operation is
getAlland Limit is10. - Set Time Min to
{{$fromAI("afterDate")}}and Time Max to{{$fromAI("beforeDate")}}in Retrieve Calendar Slots. - Open Primary Calendar Create and verify Start is
{{$fromAI("startDate")}}and End is{{$fromAI("endDate")}}. - In Primary Calendar Create, confirm Summary is
{{$fromAI("meetingSummary")}}and attendees include{{$fromAI("userEmailAddress")}}plus your internal email. - Credential Required: Connect your
googleCalendarOAuth2Apicredentials in Retrieve Calendar Slots and Primary Calendar Create.
Step 5: Configure Email Confirmation and Response Parsing
Send meeting confirmation emails and normalize the AI response before returning it to chat.
- Open Dispatch Gmail Notice and confirm Send To is
{{$fromAI('To', ``, 'string')}}. - Review the HTML in Message and replace placeholders like
[YOUR_COMPANY]and links with your live branding. - Set Subject to
{{$fromAI('Subject', ``, 'string')}}in Dispatch Gmail Notice. - Credential Required: Connect your
gmailOAuth2credentials in Dispatch Gmail Notice. - Open Response Extractor and leave the JavaScript as-is to extract
chatResponseandthreadId. - Confirm execution flow: Incoming Chat Trigger → Qualification Agent → Response Extractor.
Step 6: Test and Activate Your Workflow
Run a controlled test to confirm qualification, scheduling, and logging behaviors before going live.
- Click Execute Workflow and send a test message through the chat interface connected to Incoming Chat Trigger.
- Verify Qualification Agent responds with a qualification question and that Response Extractor outputs
chatResponse. - Provide a name and email to ensure Update Sheet Record appends or updates in your Google Sheet.
- Request a meeting time and confirm Retrieve Calendar Slots and Primary Calendar Create execute successfully.
- Check your inbox to confirm Dispatch Gmail Notice sends the confirmation email.
- 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 your Google OAuth connection inside n8n’s Credentials menu 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
Plan for about 3-4 hours, mostly for credentials, prompts, and testing.
No. You’ll mainly connect Google and OpenAI accounts, then tweak prompts and field mappings inside n8n.
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 (often around a few cents per conversation, depending on length).
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 probably should. You can adjust the Qualification Agent prompts to match your offer (agency services, coaching, SaaS demos), then change what gets written into Google Sheets (extra columns like budget, timeline, or use case). If you prefer a different email sender, swap the Gmail node for another mail provider. You can also tighten or loosen the “book a meeting” rule by editing the logic that decides when to check Google Calendar availability.
Usually it’s expired OAuth access or the wrong Google account connected. Reconnect Google Calendar in n8n Credentials, then confirm the calendar you’re booking on is the same one the availability check is reading. If you’re testing with lots of rapid messages, Google can also throttle requests, so slow down tests and try again.
A lot, as long as your AI and Google API limits can keep up. On n8n Cloud, the practical limit is your monthly execution quota (Starter is fine for small sites; bigger teams typically move up). If you self-host, there’s no execution cap, but your server resources become the bottleneck. In day-to-day use, most teams run one execution per chat message plus a few more for booking and logging, so high traffic can add up.
Often, yes, because this is not a simple “if chat message then create row” automation. You need memory, branching logic, and richer control over AI prompts and responses, and n8n handles that without making every extra path feel expensive. Zapier or Make can still work if you reduce the scope to a basic lead capture and a manual booking link, but you’ll lose the automated qualification layer that drives higher-quality meetings. The other consideration is hosting: n8n can be self-hosted for unlimited executions, which changes the cost math once chat volume rises. If you want a second opinion on the tradeoffs for your stack, Talk to an automation expert.
Once this is running, your chat stops being a “message box” and starts acting like a booking channel. The workflow handles the repetitive parts, so your team shows up to calls prepared.
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.