Schedule and confirm property viewings with Calendly, Gemini, Gmail and Sheets
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
Nodes used (11)
- Webhook
n8n-nodes-base.webhook - Code
n8n-nodes-base.code - Edit Fields (Set)
n8n-nodes-base.set - Switch
n8n-nodes-base.switch - Google Gemini
@n8n/n8n-nodes-langchain.googleGemini - OpenAI
@n8n/n8n-nodes-langchain.openAi - HTTP Request
n8n-nodes-base.httpRequest - Gmail
n8n-nodes-base.gmail - Google Sheets
n8n-nodes-base.googleSheets - Wait
n8n-nodes-base.wait - Google Sheets Trigger
n8n-nodes-base.googleSheetsTrigger
What it does
Quick overview This workflow receives property viewing requests via webhook, uses Google Gemini/OpenAI/Anthropic to draft a proposed schedule with a Calendly link, sends the proposal via Gmail, and logs it to Google Sheets; when Calendly confirms a booking, it creates a Google Calendar event, emails confirmations, and sends 24-hour reminders. How it works 1. Receives a viewing request via an HTTP webhook (or an optional Google Sheets row-added trigger) and normalizes the lead and property details. 2. Builds up to three proposed viewing slots from your configured weekly availability, duration, and days-ahead window, and generates a Calendly booking URL. 3. Uses the selected AI engine (Google Gemini, OpenAI, or Anthropic Claude) to draft a personalized email subject/body and a short SMS-style message. 4. Sends the viewing proposal email to the lead via Gmail and appends the request, proposed slots, and status to a Google Sheets log. 5. Receives a Calendly booking webhook, extracts invitee and event timing details, and calculates the reminder time 24 hours before the viewing. 6. Creates a Google Calendar event with the lead and agent as attendees, sends booking confirmation emails to both via Gmail, and updates the Google Sheets row to Status = Booked. 7. Waits until 24 hours before the scheduled start time, then emails reminders to the lead and agent and marks the reminder as sent in Google Sheets. Setup 1. Add credentials for Gmail, Google Sheets, and Google Calendar, and select the correct spreadsheet/document ID and sheet for the append/update actions. 2. Configure Calendly to send an invitee.created webhook to the workflow’s “calendly-booking-received” production webhook URL. 3. Choose and configure your AI provider (Google Gemini API credentials, or enable OpenAI and add an OpenAI API key, or set an Anthropic API key in the configuration) and set AIENGINE accordingly. 4. Update both agent configuration sections with your agent details, Calendly username/event slug, property address/URL, and your weekly availability hours, slot duration, and days-ahead settings. Requirements - Calendly setup: Create a free Calendly account and an event type named Property Viewing (or any name). Your booking URL will be calendly.com/YOURUSERNAME/YOUREVENTSLUG. Register the Phase 2 webhook URL in Calendly → Integrations → Webhooks → subscribe to invitee.created. The Phase 2 webhook URL requires a permanent public n8n URL — not localhost. For local testing, use a Cloudflare tunnel. - Google Sheets setup: Create a sheet named Viewing Requests with these columns: Record ID, Timestamp, Lead Name, Email, Phone, Property, Slot 1, Slot 2, Slot 3, AI Engine Used, Email Sent, Status, Calendly Event URL, Viewing Start, Viewing End, Reminder Sent. - Only one AI credential is required. Connect the engine you prefer and set AIENGINE in the Configuration node to match. Customization - Change AIENGINE in the Configuration node to Gemini, ChatGPT, or Claude — all three nodes are on canvas, only the selected one fires. - Adjust SLOTDAYSAHEAD to look further ahead for available slots — default is 7 days. - Adjust VIEWINGDURATION to match your standard viewing length — default is 30 minutes. - Edit availability hours per day in the Configuration node — set empty string for days the agent is unavailable. - Chain from any previous QualMatic template — send an HTTP POST request to the Phase 1 webhook URL with lead details to trigger the viewing proposal automatically when a Hot lead is identified. Additional info Two-phase architecture. This template contains two independent execution phases in one workflow. Phase 1 fires when a viewing request arrives. Phase 2 fires when Calendly sends a booking webhook. Both phases have their own Configuration node — this is intentional because each phase starts a fresh execution context. Keep both Config nodes updated with the same values. Wait node behavior. The Wait node pauses workflow execution until exactly 24 hours before