{"product_id":"vapi-voice-receptionist-booking-w-n8n-google-calendar-sheets","title":"Vapi Voice Receptionist Booking w\/ n8n Google Calendar \u0026 Sheets","description":"\u003ch3\u003eTurn Vapi phone calls into real Google Calendar bookings—automatically\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow connects a \u003cstrong\u003eVapi Voice Receptionist\u003c\/strong\u003e to your \u003cstrong\u003eGoogle Calendar\u003c\/strong\u003e and \u003cstrong\u003eGoogle Sheets\u003c\/strong\u003e. It handles availability checks, books appointments, captures phone messages, logs every outcome, and emails you the details—all triggered by Vapi tool calls via a production webhook.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReceives Vapi webhook events\u003c\/strong\u003e via POST and extracts the tool name, tool call ID, and arguments from the payload.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRoutes requests by tool name\u003c\/strong\u003e using a switch-style flow so each action (availability, booking, or message capture) is handled correctly.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003echeckAvailability:\u003c\/strong\u003e fetches upcoming events from Google Calendar, then computes the next available appointment slots using configurable business-hour rules.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReturns slot options to Vapi\u003c\/strong\u003e in a spoken-ready response that includes \u003cstrong\u003eISO timestamps\u003c\/strong\u003e for booking.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ebookAppointment:\u003c\/strong\u003e creates a new Google Calendar event at the requested \u003cstrong\u003estartTime\u003c\/strong\u003e, appends a booking record to \u003cstrong\u003eGoogle Sheets\u003c\/strong\u003e, and emails the owner a booking alert.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003etakeMessage:\u003c\/strong\u003e appends the caller’s message to Google Sheets, emails the owner the message details, and sends a confirmation back to Vapi.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNon-tool-call events:\u003c\/strong\u003e returns an empty acknowledgement to Vapi without taking action.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eA SaaS or services business using Vapi to answer calls can offer real-time scheduling and capture missed-call messages.\u003c\/li\u003e\n  \u003cli\u003eOperators can centralize appointment + message logging in Google Sheets while receiving email alerts for every booking or voicemail.\u003c\/li\u003e\n  \u003cli\u003eAutomation engineers can deploy a production-ready Vapi-to-calendar routing pattern for voice-driven scheduling workflows.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eIntegrations:\u003c\/strong\u003e Vapi (webhook), \u003cstrong\u003eGoogle Calendar\u003c\/strong\u003e, \u003cstrong\u003eGoogle Sheets\u003c\/strong\u003e, email notifications.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003en8n nodes\/approach:\u003c\/strong\u003e Webhook, Code, Switch, Google Calendar, Google Sheets, Email Send, plus a Sticky Note for documentation.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eVapi setup:\u003c\/strong\u003e create server tools for \u003cem\u003echeckAvailability\u003c\/em\u003e, \u003cem\u003ebookAppointment\u003c\/em\u003e, and \u003cem\u003etakeMessage\u003c\/em\u003e pointing to the workflow’s production webhook URL.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":46153981919411,"sku":"N8N-20302","price":70.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/Vm28fh-Zwva3NzNDO1vzY_0YUs4m5m.png?v=1790932321","url":"https:\/\/buyflowscripts.com\/products\/vapi-voice-receptionist-booking-w-n8n-google-calendar-sheets","provider":"N8N Commerce","version":"1.0","type":"link"}