Skip to content

Calendar

Overview

The Calendar task works with your team’s calendars from inside a workflow. Pick one action per task:

Action What it does
Book a meeting Puts a meeting on one person’s calendar and invites the guests.
Change or move a meeting Changes the time, title, guests or anything else. Blank fields are left as they are.
Cancel a meeting Removes the meeting and, if you want, emails the guests a cancellation.
Find meetings Looks meetings up by person, client, dates and title.
Find open times Lists times one or more people are free, ready to offer a customer.

Meetings booked here behave exactly like meetings booked on the calendar screen. They go onto the person’s connected Outlook or Google calendar, guests get a normal calendar invitation, a Teams or Google Meet link is added if you ask for one, and a meeting linked to a client shows on that client’s record.

When to use this task:

  • Book a consultation as soon as a website form comes in.
  • Offer a customer three open times by SMS or WhatsApp, then book the one they choose.
  • Let an AI Prompt chat agent check free times while it talks to a customer.
  • Move or cancel a meeting when a deal changes.
  • Check whether a client already has a meeting booked before sending a reminder.

Configuration

Builder fields

The Field column is the label as it appears in the task builder; Key is the name the value is stored under and referenced by.

Field Key Type Default Notes
Action action select create_event Options: Book a meeting · Change or move a meeting · Cancel a meeting · Find meetings · Find open times
Let the AI see meeting titles ai_show_titles checkbox 0
Longest meeting the AI may book (minutes) ai_max_minutes number 60
Whose calendar owner_user_id select – Only shown when action is create_event
Meeting event_id text – Only shown when action is update_event, cancel_event
Title title text – Only shown when action is create_event, update_event
Starts start text – Only shown when action is create_event, update_event
Length (minutes) duration_minutes number 30 Only shown when action is create_event
New length (minutes, optional) update_duration_minutes number – Only shown when action is update_event
Ends (optional) end text – Only shown when action is create_event, update_event
All-day all_day checkbox 0 Only shown when action is create_event
All-day update_all_day select __keep__ Options: — Leave unchanged — · Make it all-day · Give it a start and end time. Only shown when action is update_event
Location (optional) location text – Only shown when action is create_event, update_event
Add an online meeting link online_meeting checkbox 0 Only shown when action is create_event
Online meeting link update_online_meeting select __keep__ Options: — Leave unchanged — · Add a link · Remove the link. Only shown when action is update_event
Guests (optional) attendees textarea – Only shown when action is create_event, update_event
Client (optional) client_id text – Only shown when action is create_event, update_event, find_events
Notes (optional) description textarea – Only shown when action is create_event, update_event
Only book if the time is still free only_if_free checkbox 0 Only shown when action is create_event
Treat all-day entries as busy all_day_busy checkbox 1
Don’t book the same meeting twice skip_duplicate checkbox 1 Only shown when action is create_event
Email guests that it is canceled notify_attendees checkbox 1 Only shown when action is cancel_event
Whose calendars user_ids select – Only shown when action is find_events, find_free_time
From from text – Only shown when action is find_events, find_free_time
To to text – Only shown when action is find_events, find_free_time
Title contains (optional) title_contains text – Only shown when action is find_events
Include canceled meetings include_cancelled checkbox 0 Only shown when action is find_events
Return return select all Options: All matching meetings · The first meeting only · Just how many there are. Only shown when action is find_events
Meeting length (minutes) length_minutes number 30 Only shown when action is find_free_time
Working days working_days select 1,2,3,4,5 Options: Monday · Tuesday · Wednesday · Thursday · Friday · Saturday · Sunday. Only shown when action is find_free_time
Day starts work_start time 08:00 Only shown when action is find_free_time
Day ends work_end time 17:00 Only shown when action is find_free_time
Gap around other meetings (minutes) buffer_minutes number 0 Only shown when action is find_free_time
Earliest booking from now (minutes) min_notice_minutes number 60 Only shown when action is find_free_time
Meetings can start step_minutes select 30 Options: On the hour · Every 30 minutes · Every 15 minutes. Only shown when action is find_free_time
Most times per day max_per_day number 3 Only shown when action is find_free_time
Most times in total max_slots number 10 Only shown when action is find_free_time

Dates and times

Anywhere the task asks for a date or time you can type:

  • a date and time, like 2026-10-05 14:00 — read in the account’s time zone;
  • a date, like 2026-10-05;
  • now, today, tomorrow, or +2 hours, +3 days, +1 week;
  • a time from an earlier step, like {{task_5_first_slot_start}} — these carry their own zone and are used exactly.

Typed times are read, and times are written back, in the account’s time zone from General Settings. If none is set, the task uses America/Chicago and says so in its result.

Book a meeting

Whose calendar takes one person. To book whoever Find open times picked, switch the field to Variable and drag in first_slot_user_id from that step.

Only book if the time is still free checks the person’s calendar first (not for all-day meetings, which are always booked). If the time has been taken since it was offered, nothing is booked, booked is no and slot_taken is yes, so an If step can offer new times.

Don’t book the same meeting twice is on by default. If the workflow runs again (a retry, or the same customer submitting twice) for the same person, time and client, the task reuses the meeting it already booked and says so.

Change or move a meeting

Set Meeting to the event_id from an earlier Calendar step or a Calendar Trigger. Only the fields you fill in change:

  • Setting just a new Starts keeps the meeting’s length; New length changes it on its own.
  • All-day and Online meeting link start at — Leave unchanged —. Turning a timed meeting into an all-day one keeps its day; giving an all-day meeting times needs a new Starts.
  • Leaving Guests blank keeps the current guests and their replies.
  • A client, when set, must be one of this account’s clients.

A repeating meeting can only be changed one meeting at a time; the task will not change a whole series.

Find open times

Whose calendars takes one or more people. With several, a time counts as open if any of them is free, and it goes to whoever has the fewest meetings that week, so bookings are spread evenly. Ties go to the first person in the list. Every slot also lists everyone who was free (free_user_ids).

Open times never overlap each other. Most times per day spreads the times across each day rather than taking the first few, so a customer is offered a morning, a midday and an afternoon.

All-day entries count as busy for the whole day in the account’s time zone — so nobody is booked while on leave. BaseCloud cannot yet tell a day off from an all-day note such as a public holiday or “working from home”, so if your team keeps notes like that, turn off Treat all-day entries as busy. The same setting applies to Only book if the time is still free. All-day entries do not count as meetings when spreading bookings evenly. Meetings the person declined never count as busy.

Output Fields

Book, change or find meetings

Field Description
event_id The meeting’s ID. Use it in a later Change or Cancel step.
title, description, location The meeting details.
start, end Exact times (ISO, UTC); the date for all-day meetings, with end the last day.
start_local, end_local 2026-10-05 14:00 in the account’s time zone. All-day meetings give the date only.
start_label, end_label Readable, e.g. Mon, Oct 5, 2:00 PM — ready for an SMS or email.
all_day yes / no.
owner_user_id, owner_name Whose calendar the meeting is on.
client_id, client_name The linked client, when there is one.
meeting_link The Teams or Meet link, when one was added.
web_link Opens the meeting in Outlook or Google Calendar.
attendee_emails The guests, comma-separated.
booked Book only: yes / no.
slot_taken Book only: yes when Only book if the time is still free stopped the booking.
already_booked Book only: yes when an earlier run’s meeting was reused.
synced Book only: yes when the meeting reached Outlook or Google.
cancelled yes once a meeting is canceled; on other actions, whether the meeting is canceled.
updated Change only: yes / no.
time_zone The zone used for this run.

Find meetings adds count, found (yes/no), events (the list, up to 200) and truncated (yes when there were more), events_text (one meeting per line) and the first meeting’s fields with a first_ prefix, such as first_event_id and first_start_label.

Find open times

Field Description
count, found How many times were found.
slots The list. Each has start, end, start_local, label, user_id, user_name and free_user_ids.
slots_text One time per line, e.g. Tue, Oct 6, 9:00 AM (with the person’s name when several were checked).
free_ranges_text Every free stretch per day, e.g. Mon, Oct 5: free 8:00 AM–10:30 AM, 11:00 AM–5:00 PM, no free time, or not a working day.
free_ranges The same as a list: each day’s date, label, user_id, user_name, working_day and ranges (start, end, label).
working_hours The hours searched, e.g. Mon–Fri, 8:00 AM–5:00 PM (America/Chicago).
first_slot_start, first_slot_end, first_slot_label The earliest time.
first_slot_user_id, first_slot_user_name Who that time goes to.
now The current date and time in the task’s zone, so an AI can work out “next Wednesday”.
searched_from, searched_to, length_minutes What was searched.

Testing

Running the task by hand does exactly what a live run does: Book a meeting books it (and sends the invitations), Change changes it, Cancel cancels it. Test with your own calendar and your own email as the guest. Don’t book the same meeting twice also applies, so running Book again for the same person and time returns the meeting it already booked.

Using it with AI Prompt

Attach a Calendar task to an AI Prompt task’s tools port and pick whose calendars the AI can use. The task’s own action is not used while it is attached — under What the AI may do you choose what the AI can do with it instead:

What the AI may do On to begin with What it does
Check the calendar Yes Sees when those people are busy, for any dates it needs — up to 31 days at a time, up to 12 months ahead.
Find a guest's booking Yes Finds the upcoming meeting it booked for a guest, so “can we make it 10 instead?” in a later message knows which meeting that is. Looked up by the client this workflow is about, or else by an email the customer gave — and then it sees only when the meeting is, not what it is about.
Book a meeting No — tick it Books a meeting on one of those calendars.

The AI decides when to check and when to book, while it works on its reply. What it sees when it checks:

Tue, Oct 6: busy 8:00 AM–9:00 AM, 1:30 PM–2:00 PM
Thu, Oct 8: busy all day, 10:00 AM–11:00 AM
Sat, Oct 10: nothing booked

Meetings people declined don’t count as busy; all-day entries are listed as “all day”.

Put your rules in the prompt — the hours and days you take meetings, how long they usually are, how far ahead to offer, and whether to confirm before booking. For example:

The customer may want a meeting. We meet 7 AM–5 PM, Monday to Saturday, never Sunday, for an hour unless they ask otherwise. Check the calendar before offering times, and offer at most three. Only book once they have said yes to a time and given their name and email.

What the AI can never do, whatever it is asked:

  • book on anyone else’s calendar than the people you picked;
  • book a time that is no longer free (checked again at the moment of booking);
  • book longer than Longest meeting the AI may book (60 minutes to begin with);
  • book a second upcoming meeting for a guest it can identify (by their email, or the client this workflow is about) — it gets their existing one back instead;
  • book more than 5 meetings in one reply;
  • change or cancel a meeting.

The AI writes the meeting itself. It takes the title, the place and whether to add an online link from the conversation — “Quote for bathroom — Jane Smith”, “12 Oak Street” — so you don’t have to set them. The task’s Title, Location and Online meeting settings are only used when the AI leaves one out, and Link to client is always the task’s.

Meeting titles are hidden from the AI unless you turn on Let the AI see meeting titles — keep it off for any chat with customers, or it could read out what someone’s meetings are about.

Meetings the AI books are marked as made by an automation, so the Calendar Trigger’s “A meeting is booked” does not start a workflow for them.

Examples

Offer three times by SMS

  1. Find open times — your sales team, +1 day to +7 days, 30 minutes, Most times per day 1, Most times in total 3.
  2. SMS — Hi {{first_name}}, we can call you at:\n{{task_1_slots_text}}\nReply 1, 2 or 3.

Book straight from a form

  1. Find open times — Whose calendars: the sales team, Most times in total 1.
  2. Calendar: Book a meeting — Whose calendar: {{task_1_first_slot_user_id}}, Starts: {{task_1_first_slot_start}}, Guests: {{email}}, Client: {{client_id}}, Add an online meeting link on.
  3. Email — confirm {{task_2_start_label}} and {{task_2_meeting_link}}.

Troubleshooting

What you see Why
“is not a user on this account” The person picked, or the ID passed in, belongs to someone outside this account.
“is not a start time BaseCloud can read” Use a format from Dates and times.
“is a repeating meeting” Change or cancel one meeting of the series instead.
The meeting is “in BaseCloud only” The person has no connected Outlook or Google calendar, or it could not be reached.
“No time zone is set for this account” Set the time zone in General Settings.
“organized by someone outside this account” Only the organizer can change or cancel that meeting; the step reports updated / cancelled as no.