🔓 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 to Google Sheets, clean interview tracking

Lisa Granqvist Partner Workflow Automation Expert

Your interview tracker looks “fine” until it suddenly doesn’t. A booking lands in Cal.com, someone copies the time into Google Sheets, the timezone shifts, and now your dashboard says the candidate is interviewing tomorrow when it’s actually today.

This Cal.com Sheets sync hits recruiters first, but HR coordinators and agency ops folks feel it too. When the tracker lies, people miss interviews, hiring managers lose trust, and you spend your afternoon doing spreadsheet cleanup instead of moving candidates forward.

This workflow pulls bookings from Cal.com, updates the right row in Google Sheets using email matching, fixes the timezone formatting (Asia/Riyadh), and removes junk rows so your pipeline stays usable.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Cal.com to Google Sheets, clean interview tracking

The Challenge: Interview Trackers Drift Out of Sync

Interview tracking breaks in slow motion. Cal.com has the source-of-truth booking, but your hiring team lives in Google Sheets because it’s quick, shared, and works with everything. Then reality happens. Candidates reschedule. A teammate pastes the wrong time format. Someone sorts the sheet and the “Interview Date” column no longer lines up with the right person. Worst part, you often notice it only after a missed call or a “wait, I thought this was next week” message.

It adds up fast. Here’s where it breaks down in day-to-day hiring.

  • Manual copy-paste creates small errors that turn into scheduling chaos during busy weeks.
  • Timezone formatting gets inconsistent, so dashboards and filters stop being reliable.
  • Duplicate or irrelevant rows creep in, which makes the sheet feel “messy” and harder to trust.
  • Email mismatches mean updates hit the wrong candidate, or don’t happen at all.

The Fix: Cal.com Bookings Sync + Sheet Cleanup

This n8n workflow turns Cal.com booking data into clean, consistent rows in your Google Sheets interview tracker. It starts by pulling the latest booking details through an HTTP request to Cal.com, then extracts the candidate info you actually care about (name, email, interview time). Next, it converts the timestamp into a readable format and normalizes it to the Asia/Riyadh timezone, so your sheet stops flipping between formats. After that, it updates the correct candidate row by matching on email. Finally, it audits the sheet for missing or unmatched entries and removes rows that shouldn’t be there, keeping your tracker lean and decision-ready.

The workflow begins when you run it in n8n (manual trigger), pulls booking data from Cal.com, formats and maps it into your spreadsheet fields, then looks up emails in Google Sheets to update only valid candidates. If it detects blank or unmatched entries during iteration, it removes them so your tracker stays clean.

What Changes: Before vs. After

Real-World Impact

Say you’re running 20 interviews a week. Manually, each booking usually means opening Cal.com, copying name/email, converting the time, finding the candidate row, then double-checking it later, which is easily 10 minutes per interview. That’s about 3 hours a week just to keep the tracker accurate. With this workflow, you trigger one run, let it update timestamps and remove unmatched rows automatically, and you’re mostly just spot-checking. For a busy hiring month, that’s a lot of time back.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Cal.com for booking data pulled via API.
  • Google Sheets to store and update your interview tracker.
  • Cal.com API key (get it from your Cal.com settings/API page).

Skill level: Intermediate. You’ll connect accounts, add credentials, and confirm your Sheet column names match the workflow.

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

The Workflow Flow

A run starts on demand. This workflow uses a manual trigger, which is perfect if you want to test safely, or run it as part of a daily routine while you’re rolling it out.

Cal.com bookings are pulled via API. n8n makes HTTP requests to retrieve booking details, then selects the interview fields you care about instead of dumping raw payloads into your sheet.

The interview time gets standardized. A small code step formats the schedule time into a readable string (like “30 June, 09:00 AM”) and converts it to Asia/Riyadh so every row follows the same rule.

Google Sheets is updated and cleaned. The workflow maps candidate fields, updates the interview timestamp, looks up existing rows by email, then iterates through email batches to detect missing records. When it finds blanks or unmatched entries, it removes those rows to keep your tracker tight.

You can easily modify the timezone and the matching logic to fit your hiring process. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Start the workflow manually while you validate the Cal.com API and Google Sheets updates.

  1. Add the Manual Start Trigger node as the workflow trigger.
  2. Keep Flowpast Branding as a reference note (no configuration required).

Step 2: Connect Google Sheets

These nodes update and clean the “Accepted” sheet in the “Resumes” spreadsheet.

  1. Open Update Interview Timestamp and set Operation to appendOrUpdate.
  2. Set Spreadsheet to [YOUR_ID] and Sheet Name to Accepted in Update Interview Timestamp.
  3. Open Google Sheet Lookup and set the same Spreadsheet and Sheet Name values.
  4. In Google Sheet Lookup, confirm the Filters include lookupColumn set to SUMMARY .
  5. Open Remove Unmatched Rows and set Operation to delete.
  6. Set Start Index to {{ $json.row_number }} in Remove Unmatched Rows.
  7. Credential Required: Connect your Google Sheets credentials to Update Interview Timestamp, Google Sheet Lookup, and Remove Unmatched Rows.

Step 3: Set Up Booking Data Retrieval

These nodes pull attendees and booking details from Cal.com to build the interview schedule.

  1. In Retrieve Booking Details, set URL to https://api.cal.com/v1/attendees and enable Send Query.
  2. Add a query parameter in Retrieve Booking Details with name apiKey and value [CONFIGURE_YOUR_API_KEY].
  3. In Booking API Request, set URL to https://api.cal.com/v1/bookings and enable Send Query.
  4. Add a query parameter in Booking API Request with name apiKey and value [CONFIGURE_YOUR_API_KEY].
  5. Add the booking ID parameter in Booking API Request with name id and value {{ $json.attendees[0].bookingId }}.

⚠️ Common Pitfall: Replace [CONFIGURE_YOUR_API_KEY] with your real Cal.com API key in both HTTP request nodes or the workflow will return empty results.

Step 4: Set Up Data Processing

This step formats the schedule time and maps fields to the Google Sheet column names.

  1. Open Format Schedule Time and keep the provided JavaScript Code to format startTime into a readable string.
  2. In Map Candidate Fields, set Include to selected and enable Include Other Fields.
  3. Set the Email field in Map Candidate Fields to {{ $json.email.toLowerCase() }}.
  4. Set the Interview Schedule field in Map Candidate Fields to {{ $json.startFormatted }}.

Step 5: Configure Output and Cleanup Logic

Update the sheet, then iterate through email rows and remove records without a summary.

  1. Confirm the execution flow: Map Candidate FieldsUpdate Interview TimestampGoogle Sheet LookupSplit Email ListIterate Email BatchesValidate Missing EmailsRemove Unmatched Rows.
  2. In Split Email List, set Field to Split Out to Email and Include to allOtherFields.
  3. Keep Iterate Email Batches as the loop controller for the email list.
  4. In Validate Missing Emails, ensure the condition checks leftValue {{ $json['SUMMARY '] }} equals rightValue =.

⚠️ Common Pitfall: The Validate Missing Emails condition expects the SUMMARY column (note the trailing space). If your sheet column name differs, the delete loop may never run.

Step 6: Test and Activate Your Workflow

Validate end-to-end execution and then enable the workflow for ongoing use.

  1. Click Execute Workflow to run from Manual Start Trigger.
  2. Verify Retrieve Booking Details and Booking API Request return booking data.
  3. Check that Update Interview Timestamp appends or updates rows in the Accepted sheet.
  4. Confirm Remove Unmatched Rows deletes rows where SUMMARY is =.
  5. When results are correct, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Cal.com credentials can expire or need specific permissions. If things break, check your Cal.com API key status and scopes in Cal.com settings 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.

Common Questions

How quickly can I implement this Cal.com Sheets sync automation?

About 30 minutes if your Cal.com API key and Sheet are ready.

Can non-technical teams implement this Cal.com Sheets sync?

Yes, but you will need someone comfortable connecting accounts and matching spreadsheet columns. No coding is required unless you want to change the date formatting logic.

Is n8n free to use for this Cal.com Sheets sync 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 Cal.com API access (typically included with your Cal.com plan).

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 Sheets sync solution to my specific challenges?

You can change the timezone and output format in the “Format Schedule Time” step, then adjust the mapped columns in “Map Candidate Fields.” If your sheet uses a different unique identifier than email, swap the lookup to match on candidate ID instead. Common tweaks include adding a “Stage” update after booking, writing a “Last Updated” timestamp, or sending a Gmail confirmation to internal interviewers.

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

Most of the time it’s an expired or incorrect Cal.com API key. Regenerate the key, update it in the two HTTP Request nodes, and confirm the endpoint you’re calling is still valid for your Cal.com account. Also check for rate limits if you’re pulling a lot of bookings at once. If only some bookings fail, it can be missing fields in the payload, so the mapping step ends up empty.

What’s the capacity of this Cal.com Sheets sync solution?

Plenty for most small teams. On n8n Cloud Starter, you can run thousands of executions per month, and if you self-host there’s no execution cap beyond your server. In practice, this workflow processes bookings in batches, so you can cleanly handle weeks of interviews in one run.

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

Often, yes, because you’re doing more than “send booking to sheet.” This workflow includes lookup logic, looping through email batches, and cleanup actions (deleting unmatched rows), and those get awkward or expensive in tools that price by task. n8n also lets you self-host, which is helpful if your hiring volume spikes. Zapier or Make can still be fine for a simple one-way append into Sheets, especially if you never need deduping or validation. If you’re unsure, Talk to an automation expert and we’ll map the simplest option for your process.

Once your tracker updates itself and cleans itself, hiring feels calmer. Honestly, that reliability is what lets you move faster without adding more tools.

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

💬
Launch login modal Launch register modal