---
title: "TidyCal Integration"
description: "Connect AI agents to TidyCal, the budget-friendly scheduling tool from AppSumo. Agents list available time slots, create and cancel bookings, and manage contacts so appointment scheduling runs without manual back-and-forth."
url: https://flowrunner.ai/integrations/tidycal
date_modified: 2026-08-12T15:40:33-07:00
---

# TidyCal

[Scheduling](https://flowrunner.ai/integrations/category/project-management-productivity)

Connect AI agents to TidyCal, the budget-friendly scheduling tool from AppSumo. Agents list available time slots, create and cancel bookings, and manage contacts so appointment scheduling runs without manual back-and-forth.

[Verified](https://flowrunner.ai/integrations/verified "What does verified mean?") · 8 actions · API key · available

[TidyCal website](https://tidycal.com/) · [Platform Documentation](https://tidycal.com) · Capability data verified 2026-08-12

1.  A form submission or a CRM stage change signals somebody is ready for a call
2.  List Booking Types resolves the meeting template and its duration
3.  List Available Time Slots returns the bookable slots for that type, in UTC
4.  List Contacts checks whether this email already exists in the contact list
5.  Create Booking commits the slot and TidyCal creates or reuses the contact
6.  The attendee receives the confirmation and the booking is logged to the CRM
7.  An operator resolves the identity when the email is shared or nearly matches an existing contact

## What This Integration Enables

TidyCal is the scheduling tool a lot of consultants, founders, and small teams reached for because it was inexpensive and it did the job. The API matches that character: eight operations, no ceremony, and a small object model that is easy to reason about. What is genuinely interesting about it is that the contact is a first-class object rather than a byproduct. Create Contact exists specifically to populate the list before anybody books, and when an email already exists the platform returns the existing contact instead of making a second one. So in TidyCal a person is not a name attached to a meeting. A person persists, accumulates bookings, and is identified by their email address.

Around that sit the pieces you would expect and they work cleanly. List Booking Types returns the meeting templates with duration, slug, and padding settings. List Available Time Slots is the operation worth building on, because it does not just read a calendar: it accounts for connected calendars, availability rules, and existing bookings, and returns slots in UTC that are genuinely bookable. Create Booking commits one of them, Get Booking and List Bookings read the schedule with cancellation status included, and Cancel Booking ends a meeting with a reason that reaches the attendee. TidyCal offers no webhooks, so flows here run on a schedule or on an event from another system rather than on a push from TidyCal. Agents handle the slots, the bookings, and the reporting on their own. Decisions about who a person is go to a human, which is the [human-in-the-loop](https://flowrunner.ai/concepts/human-in-the-loop) default FlowRunner builds around. Every operation is built and verified against the TidyCal API.

### Without FlowRunner

**Scheduling by email thread**: Agreeing a time takes several messages before anything reaches a calendar

**A contact list built by accident**: People appear on the list only after they book, spelled however they happened to type it

**Cancellations handled by hand**: Somebody opens the dashboard, finds the booking, cancels it, and writes the explanation twice

### With FlowRunner

**Slots offered from live availability**: List Available Time Slots accounts for connected calendars, availability rules, and existing bookings

**A contact list built on purpose**: Create Contact seeds known people ahead of any booking and returns the existing record on a matching email

**Cancellations handled inside the flow**: Cancel Booking runs with a reason that travels to the attendee in the notification

## Use Case Scenarios

### From Form Submission to Booked Call in One Reply

A prospect completes a qualification form in [Typeform](https://flowrunner.ai/integrations/typeform). The agent reads the answers, picks the right meeting template through List Booking Types, and runs List Available Time Slots for the next four business days. It replies through [Gmail](https://flowrunner.ai/integrations/gmail-service) with three specific times rather than a link and an invitation to browse. When the prospect picks one, the agent runs List Contacts against their email first, so it knows whether it is meeting a returning contact or a new one, then commits with Create Booking. The qualification answers are written to [HubSpot](https://flowrunner.ai/integrations/hubspot) alongside the meeting, so the call starts with context instead of introductions.

### Seeding the List Before Anyone Books

A team is about to run outreach to fifty accounts and wants their bookings to land on clean records rather than creating fifty half-formed ones. Ahead of the campaign, the agent runs List Contacts to see who TidyCal already knows, then Create Contact for each target that is missing, using the canonical email from the CRM rather than whatever address appears in a signature block. Because TidyCal returns the existing contact on a matching email, running it against people already on the list creates nothing new and costs nothing. When bookings arrive over the following weeks, they attach to records that already carry the right spelling and the right person.

### A Weekly Read on What Actually Happened

Every Friday the agent runs List Bookings across the week with canceled bookings included, paging through the results. It joins each booking to its contact and its booking type, and writes the week to [Google Sheets](https://flowrunner.ai/integrations/google-sheets) with the meeting type, the lead time between booking and meeting, and the cancellation status in adjacent columns. The team sees which meeting types get canceled most and how far ahead people book, which are the two questions that decide whether the availability rules are set sensibly. A short summary posts to [Slack](https://flowrunner.ai/integrations/slack) with the outliers named.

## Human-in-Loop Highlight

In TidyCal, an email address is not a field on a contact. It is the identity of the contact. Create Booking creates or reuses a contact from whatever email string it is given, and Create Contact returns the existing record when that string already exists. That works beautifully when the string is right and fails quietly when it is not. A booking made against a shared address, such as an info or accounts alias, attaches somebody's meeting history to a mailbox rather than to a person, and every future booking from that company piles onto the same phantom record. A booking made against an address that differs by one character from an existing contact forks a real person into two, splitting their history down the middle. Neither is repairable from here, because nothing in the eight operations edits a contact, merges two of them, or deletes one. It also has a downstream edge: Cancel Booking notifies the attendee, so a meeting attached to the wrong identity sends its cancellation to the wrong inbox. So when the email came from anywhere other than the person themselves, and it is either a role address or a near match for someone already on the list, the agent stops and asks: "Booking a 30 minute intro from a CRM record using accounts@northfield.co.uk. List Contacts already holds j.okafor@northfield.co.uk with two prior bookings. Book against the existing contact, book against the new address, or confirm the right address with them first?" Slots, bookings, cancellations with a reason, and the weekly reporting all run unsupervised. Deciding who somebody is, in a list with no undo, does not.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via email

Human decides

Agent resumes with decision

## Agent Capabilities

8 actions

### Booking Types

2

-   **List Booking Types** Lists the booking types configured on the account, meaning the meeting templates such as a thirty minute call or a discovery session, each with its title, duration, URL slug, and padding settings. Paginated through the Page parameter.
-   **List Available Time Slots** Returns the bookable time slots for a booking type within an optional date range, accounting for connected calendars, availability rules, and existing bookings. Slots come back with start and end timestamps in UTC, ready to feed into Create Booking.

### Bookings

4

-   **List Bookings** Lists bookings with their contact, booking type, start and end times, and cancellation status. Filter by a date range on the start time and choose whether canceled bookings are included, which is what makes cancellation reporting possible.
-   **Get Booking** Retrieves a single booking by numeric ID, including contact details, booking type, scheduled times, timezone, and cancellation status. The full read behind an ID returned by List Bookings.
-   **Create Booking** Books a meeting on a booking type for a contact, taking the start time, which must match an available slot, plus the attendee name, email, and timezone. TidyCal creates or reuses the contact from that email, which is why the address is worth confirming first.
-   **Cancel Booking** Cancels an existing booking by numeric ID, with an optional cancellation reason included in the notification TidyCal sends the attendee. The action cannot be undone.

### Contacts

2

-   **List Contacts** Lists the contacts stored on the account, meaning the people who have booked with you, with their name, email, and creation date. Paginated, and the right check before a booking creates a duplicate identity.
-   **Create Contact** Creates a contact from a name and email address, which is how a list gets populated ahead of any booking. When a contact with the same email already exists, TidyCal returns the existing contact rather than creating a second one.

## Frequently Asked Questions

### What can FlowRunner do with TidyCal?

FlowRunner agents can run List Booking Types, List Available Time Slots, and List Bookings in TidyCal, plus 5 more actions.

### Does connecting TidyCal to FlowRunner require OAuth?

No. TidyCal connects to FlowRunner with an API key, no OAuth flow required.

### Can TidyCal trigger a FlowRunner workflow automatically?

TidyCal doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

**Work at TidyCal?** This integration exposes TidyCal to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/tidycal. Site index: https://flowrunner.ai/llms.txt
