Zencal
SchedulingConnect AI agents to Zencal, an online booking and meeting scheduling tool. Agents calculate available dates, schedule and confirm meetings, generate one-time scheduling links, and manage team members so booking operations run without manual steps.
What This Integration Enables
Zencal is a booking tool built around the meeting topic. A topic carries the duration, the availability rules, and crucially whether the session is free or paid, and everything the connector does routes through it. Calculate Available Dates works per host and per topic. Schedule Meeting books against a topic. Generate One-Time Scheduling Link issues a link for a host and a topic. That design suits people who sell their time in named formats, such as consultants, coaches, and advisors running a free intro alongside a paid working session, because the format itself is a first-class object rather than a label on a calendar entry.
There is one thing to understand about that design before building on it, and it shapes the rest of this page. Meeting topics are identified by UUIDs copied from the Zencal dashboard, and the API exposes no topic listing endpoint, so those UUIDs are entered directly and cannot be read back or searched. Around that constraint the surface is clean. Get Profile returns the account's username and available meeting places, List Meetings reads a host's schedule inside a date range with status and join links, and Confirm Meeting moves a pending meeting into the confirmed state. Team administration is real rather than decorative, with List Teams, Get Team Users, Create Team User, and a Delete Team User that cannot be undone. Create Quick Meeting produces an instant link through the connected Google or Outlook calendar for a call that needs to happen now. There are no triggers, so flows run on a schedule or on an event from another system. Access is deliberate on Zencal's side: the API key is issued by emailing the vendor from your account address with the secret service code from your dashboard, so this is not a key you self-serve in a settings tab. Agents handle availability, booking, confirmation, and reporting. Committing against a topic whose billing behavior nobody has verified goes to a person, which is the human-in-the-loop default FlowRunner builds around. Every operation here is built and verified against Zencal's official API.
Without FlowRunner
With FlowRunner
Use Case Scenarios
Replying With Times Instead of a Link
An inbound request lands in HubSpot and the routing rules assign it to a specific advisor. The agent runs Get Profile to resolve the account, then Calculate Available Dates for that advisor's intro topic with an offset that covers the coming week. It takes the three earliest slots that clear a two hour lead time and replies through Gmail with those exact times in the body. When the requester picks one, Schedule Meeting books it and the created meeting is written back to the HubSpot record. The requester made one decision and never opened a booking interface.
A Link That Cannot Be Forwarded Into a Mess
A client is entitled to one included strategy session as part of their package. Rather than sending a general booking page, the agent runs Generate One-Time Scheduling Link for the assigned host and the strategy topic, then sends that single-use link to the named client contact. Because the link books one meeting for one topic, it cannot become a standing invitation that circulates through a client team and produces four sessions where one was sold. The link and its recipient are logged to Google Sheets so entitlement is auditable later, and when the booking lands, Get Meeting confirms the status and the join link.
Onboarding an Advisor Into the Right Teams
A new advisor joins and needs to appear on the right team calendars from day one. The agent reads the approved role from the HR record, runs List Teams to resolve the target teams, and prepares Create Team User for each one with the advisor's first name, last name, and email, granting administrator privileges only where the role calls for it. It runs Get Team Users first so it can report exactly who is already in each team and avoid a duplicate entry. The proposed additions post to Slack for the operations lead to approve, because Delete Team User cannot be undone and a wrong grant is easier to prevent than to unwind.
Human-in-Loop Highlight
Schedule Meeting is one action with two different endings. Against a free topic it returns the created meetings. Against a paid topic it returns a payment URL and requires a payment gateway to be supplied. Which of those happens depends entirely on how the topic was configured in the Zencal dashboard, and the connector cannot look. There is no topic listing endpoint, so the UUID an agent holds is an opaque string that was copied by hand at configuration time and can never be resolved back into a name, a duration, or a price by the API itself. The agent finds out what kind of thing it just committed to by reading the response, which is after the fact. Two details sharpen this. Calculate Available Dates accepts the same UUID and will happily return a plausible looking schedule for the wrong topic, so a mistake produces a confident answer rather than an error. And Schedule Meeting takes an array of Dates, each pairing a UTC start time with a host username, so one call can book several slots across several hosts at once and a wrong topic is multiplied by the length of that array. So the first time a flow books against a topic UUID that nobody has verified, the agent stops. It asks in Slack: "About to book 3 slots for topic UUID ending 4f2a with hosts m.reyes and t.olsen for client Northfield. This topic has not been used by a flow before, and Zencal cannot tell me whether it is free or paid. Confirm the topic and whether payment is expected?" Availability, confirmation, one-time links, team reads, and the weekly reporting all run unsupervised. Committing money on a string nobody can read does not.
Agent Capabilities
13 actionsAccount
2- Get Profile Retrieves the profile of the account the API key belongs to, including email, username, name, phone, avatar, and the list of available meeting places. The username it returns is what the availability and scheduling operations expect, so most flows start here.
- Update Profile Updates the account profile with any combination of email, first name, last name, and phone. When a phone number is supplied a phone prefix, meaning the country calling code, is required alongside it.
Teams
4- List Teams Lists the teams the account belongs to with each team's UUID and name. The team UUID is what the member operations take, so this is the lookup before any team administration runs.
- Get Team Users Lists the members of a specific team with each person's UUID, username, name, email, phone, avatar, and tags. A member UUID from here is the host identifier used when listing meetings.
- Create Team User Adds a member to a team by first name, last name, and email, optionally granting administrator privileges. Returns the new member's UUID. Grant administrator sparingly, since the reversal is a delete rather than a downgrade.
- Delete Team User Removes a member from a team by their UUID and returns a confirmation message. This cannot be undone, so it belongs in a deliberate offboarding flow rather than in routine directory syncing.
Meetings
5- List Meetings Lists a host's meetings inside a date range, returning each meeting's UUID, start and end times, status, place, join link, topic, attendee, and host. The host is identified by user UUID and the from and to dates bound the window, which makes this the operation behind utilization and pipeline reporting.
- Get Meeting Retrieves one meeting in full by UUID, including start and end times, status, place, join link, topic, attendee, host, and payment information. The payment field is the reason to call it after a booking rather than trusting the request that created it.
- Confirm Meeting Confirms a pending meeting by its UUID and moves it into the confirmed state, returning a confirmation message and the updated meeting. Use it where a booking is held for review before it becomes a commitment on somebody's calendar.
- Create Quick Meeting Creates an instant meeting link for a given duration using the connected calendar provider, either Google or Outlook. It returns a ready to share URL without going through the booking flow, which suits a call that needs to happen in the next ten minutes.
- Generate One-Time Scheduling Link Generates a single-use scheduling link for a specific host and meeting topic, identified by its UUID from the Zencal dashboard. Send it to one person so they can book one meeting for that topic. This is how entitlement gets enforced by the link itself rather than by trust.
Scheduling
2- Calculate Available Dates Calculates the available booking slots for a host and meeting topic in a week-based window. The offset shifts the window forward in multiples of seven days from today, and an optional month and year narrow the result. Returns a schedule keyed by date with start and end times in the requested timezone.
- Schedule Meeting Books one or more meetings for a participant against a meeting topic. Each entry in Dates pairs a UTC start time with a host username, so several slots or several hosts can be booked in a single call. Free topics return the created meetings and paid topics return a payment URL, which requires a payment gateway to be supplied. Invoice and metadata fields are optional.
Frequently Asked Questions
What can FlowRunner do with Zencal?
FlowRunner agents can run Get Profile, Update Profile, and List Teams in Zencal, plus 10 more actions.
Does connecting Zencal to FlowRunner require OAuth?
No. Zencal connects to FlowRunner with an API key, no OAuth flow required.
Can Zencal trigger a FlowRunner workflow automatically?
Zencal doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with Zencal
$100 in credits. No card required. Connect in minutes.