🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Cal.com + Google Sheets, triage bookings without duplicates

Lisa Granqvist Partner Workflow Automation Expert

You finally get your booking flow working… then the same person books twice, your team responds twice, and the calendar turns into a guessing game. It’s not just messy. It’s the kind of mess that creates real scheduling mistakes and awkward follow-ups.

Clinic managers feel it first, because they’re the ones calming people down when appointments collide. But ops leads and agency teams building intake systems run into the same pain. This Cal.com booking automation routes requests, logs them cleanly, and blocks duplicates before they turn into a problem.

Below, you’ll see how the workflow triages each request, decides the right destination, and creates the right event automatically (with a practical way to keep duplicates out).

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Cal.com + Google Sheets, triage bookings without duplicates

The Challenge: Booking intake gets duplicated and misrouted

Manual appointment intake breaks in boring, predictable ways. Someone submits a Cal.com request, then texts again, then a staff member re-creates it “just to be safe.” Meanwhile, you have to read symptoms or notes, decide which department should handle it, and pick the correct calendar. Do this a few times a day and you end up with double-bookings, missing context, and a sheet full of half-complete records. Honestly, the mental load is worse than the minutes you lose.

It adds up fast. Here’s where it breaks down in real life.

  • You waste time checking if the person already booked, because Cal.com submissions and “follow-up” messages don’t reconcile themselves.
  • Requests get routed to the wrong calendar, so the right team never sees them until it’s too late.
  • Your tracking sheet becomes unreliable, which means reporting and follow-ups turn into manual detective work.
  • Staff end up doing triage in their heads, and the “rules” change depending on who’s on shift.

The Fix: Auto-triage Cal.com requests and book the right calendar

This workflow takes a new visit request (from Cal.com or a webhook), pulls out the key details, and runs the symptom text through an AI triage step. Instead of a staff member reading everything and guessing, the workflow assigns a likely department (Ortho, Neuro, etc.) using an “AI agent” style router. Then it checks your Google Sheet to see if that person already has a visit logged. If it’s a duplicate, it stops before it creates calendar noise. If it’s new, it stores the visit in Google Sheets and creates a Google Calendar event in the correct department calendar, so the right team sees it immediately.

The workflow starts the moment Cal.com triggers a new request. After AI classification and basic formatting, it looks up existing visits in Google Sheets and filters for uniqueness. Finally, a department-to-calendar mapping decides where the Google Calendar event gets created, which keeps scheduling clean across teams.

What Changes: Before vs. After

Real-World Impact

Say you handle about 20 booking requests a week across 4 departments. Manually, you might spend roughly 10 minutes per request reading the notes, choosing the department, checking past entries in a sheet, then creating the right calendar event (that’s about 3 hours weekly). With this workflow, the “hands-on” time is closer to a quick glance for exceptions, maybe 10 minutes total per week, because the routing, logging, and event creation happen automatically. Duplicates get blocked before they create calendar clutter.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Cal.com for capturing new booking requests
  • Google Sheets to store and de-duplicate visit entries
  • Google Calendar to create department-specific events
  • OpenRouter API key (get it from your OpenRouter dashboard)

Skill level: Intermediate. You’ll connect accounts, map fields, and adjust one or two small logic checks.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

A new Cal.com request comes in. The workflow listens for new visit requests through the Cal.com trigger (or a webhook if you want to feed requests from another form later).

The visit gets time-stamped and cleaned up. Date & Time creates a consistent visit time, then the workflow formats the incoming text and extracts patient fields into a structured record you can actually use.

AI triage routes the request. The OpenRouter chat model reads the symptom text and the “Smart Doctor Routing” logic assigns the department so the right calendar can be used without guesswork.

Duplicates are filtered and the booking is created. Google Sheets is checked for existing visits (by name or contact), unique ones are stored, then the workflow maps the department to the correct Google Calendar and creates the event.

You can easily modify the “duplicate” rule (name, email, phone, or all three) to match how your intake data looks. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the calTrigger Trigger

This workflow begins when Monitor New Visit Requests detects a new visit request, then passes data into Fetch Visit Time.

  1. Add and open Monitor New Visit Requests.
  2. Configure the trigger settings to watch your appointment intake source.
  3. Confirm the connection from Monitor New Visit RequestsFetch Visit Time is in place.

Credential Required: Connect your Google Calendar credentials for Monitor New Visit Requests if it is monitoring a calendar source.

Step 2: Connect Google Sheets

Current visit records are loaded, filtered, and then new visits are stored back into Sheets via Retrieve Current Visits and Store New Visits.

  1. Open Retrieve Current Visits and choose the spreadsheet and sheet that contain existing visit records.
  2. Open Store New Visits and select the target spreadsheet/sheet for appending new visit records.
  3. Verify the path Derive Patient DetailsRetrieve Current VisitsFilter Unique VisitsStore New Visits is connected.

Credential Required: Connect your Google Sheets credentials for Retrieve Current Visits and Store New Visits.

Step 3: Set Up the AI Routing and Parsing

The AI portion classifies the visit and prepares structured data using Smart Doctor Routing, AI Clinical Assessment, and Format Parsed Output.

  1. Open Smart Doctor Routing and confirm it is connected to the language model.
  2. Open AI Clinical Assessment and set your OpenRouter model and parameters as needed.
  3. Ensure Fetch Visit Time flows into Smart Doctor Routing, then into Format Parsed Output, and then Derive Patient Details.

OpenRouter credentials are added on AI Clinical Assessment, which is connected as the language model for Smart Doctor Routing.

Credential Required: Connect your OpenRouter credentials in AI Clinical Assessment.

Step 4: Configure Output and Calendar Scheduling

After new visits are stored, the workflow maps the department and creates a calendar event in the appropriate calendar using Map Departments to Calendars and Create Department Calendar Event.

  1. Open Map Departments to Calendars and define your department-to-calendar mapping logic.
  2. Open Create Department Calendar Event and set the calendar ID and event fields to use mapped values.
  3. Confirm the flow Store New VisitsMap Departments to CalendarsCreate Department Calendar Event.

Credential Required: Connect your Google Calendar credentials for Create Department Calendar Event.

Step 5: Test and Activate Your Workflow

Run a manual test to validate routing, de-duplication, storage, and calendar creation before enabling the workflow.

  1. Click Execute Workflow and submit a sample visit request to Monitor New Visit Requests.
  2. Verify that Filter Unique Visits removes duplicates and that Store New Visits writes a new row.
  3. Confirm Create Department Calendar Event creates a calendar entry in the correct department calendar.
  4. When successful, toggle the workflow to Active to run in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Google Sheets permissions can be surprisingly strict. If “Retrieve Current Visits” returns nothing, check the connected Google account and sheet sharing settings first.
  • If you’re relying on external AI (OpenRouter), response times vary. When outputs arrive late, downstream parsing can fail, so you may need to add a short wait or improve the “Format Parsed Output” fallback handling.
  • Department naming must match your mapping rules. If the AI returns “orthopedics” but your mapping expects “Ortho,” you’ll create events in the wrong place (or not at all) until you normalize the labels.

Common Questions

How quickly can I implement this Cal.com booking automation?

About an hour if your accounts and calendars already exist.

Can non-technical teams implement this booking triage automation?

Yes, but someone needs to be comfortable with mapping fields and testing edge cases. No coding is required unless you want to change the duplicate-check logic.

Is n8n free to use for this Cal.com booking automation workflow?

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 OpenRouter usage costs, which depend on the model you pick and how long your symptom text is.

Where can I host n8n to run this automation?

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.

How do I adapt this Cal.com booking automation solution to my specific challenges?

You can swap the intake source by replacing “Monitor New Visit Requests” (Cal.com) with a generic Webhook trigger, then keep the rest of the routing intact. Most teams also customize the “Filter Unique Visits” logic to match their real identifiers (email or phone usually beats name), and they adjust “Map Departments to Calendars” so department labels match internal terms. If you want the AI output to sound like your process, edit the prompt used in “AI Clinical Assessment” and keep a few example symptom-to-department mappings inside it.

Why is my Cal.com connection failing in this workflow?

Usually it’s the trigger not receiving events because the Cal.com integration permissions changed or the event type was modified. Reconnect Cal.com in n8n, then confirm the specific booking/event type is still the one your trigger listens to. Also check that your workflow is activated and that test bookings are being created in the same Cal.com environment (teams sometimes mix up personal vs. team pages). If you’re using a webhook instead, the issue is often a changed payload shape, so the “Derive Patient Details” field mapping no longer matches.

What’s the capacity of this Cal.com booking automation solution?

On n8n Cloud, capacity depends on your plan’s monthly executions, and this workflow typically uses one execution per booking. If you self-host, there’s no fixed execution cap; it’s mostly about server resources and how fast your Google Sheets and AI calls respond. For many small teams, handling dozens of bookings a day is realistic. If you push higher volume, move de-duplication from Google Sheets to a database and keep Sheets as a reporting layer.

Is this Cal.com booking automation better than using Zapier or Make?

Often, yes, because this workflow relies on more nuanced logic: AI routing, custom duplicate checks, and conditional branching that can get awkward (and expensive) in simpler tools. n8n also gives you the self-hosted path, which is useful when you need more control. Zapier or Make can still be fine if your routing is simple and you just need “Cal.com → Google Calendar” with a single calendar. The moment you have multiple departments, a shared tracking sheet, and duplicates to block, n8n tends to fit better. If you want a quick sanity check on which platform matches your constraints, Talk to an automation expert.

Once this is running, your intake stops being a daily cleanup task and starts behaving like a system. The workflow handles routing, logging, and duplicate prevention so your team can focus on the actual work.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal