FlowRunner
PricingContact
Theme
Start Free

TidyCal

Scheduling

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 8 actions API key available
TidyCal website ↗ Platform Documentation ↗ Capability data verified 2026-08-12
A form submission or a CRM stage change signals somebody is ready for a call
List Booking Types resolves the meeting template and its duration
List Available Time Slots returns the bookable slots for that type, in UTC
List Contacts checks whether this email already exists in the contact list
Create Booking commits the slot and TidyCal creates or reuses the contact
The attendee receives the confirmation and the booking is logged to the CRM
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 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. 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 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 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 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 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 [email protected]. List Contacts already holds [email protected] 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.

Start building with TidyCal

$100 in credits. No card required. Connect in minutes.