Calendar Trigger¶
Overview¶
The Calendar Trigger starts a workflow from your team’s calendars. Pick what it waits for:
| Option | Starts the workflow |
|---|---|
| A meeting is coming up | A set time before a meeting starts — e.g. 1 day, or 2 hours. |
| A meeting has ended | When a meeting ends, or a set time after. |
| A meeting is booked | When a new meeting appears on a calendar. |
| A meeting is moved | When a meeting’s start time changes. |
| A meeting is canceled | When an upcoming meeting is canceled. |
It works the same whether the meeting was made in BaseCloud, by a workflow, or directly in Outlook or Google Calendar.
When to use this trigger:
- Text customers a reminder the day before, to cut no-shows.
- Send a thank-you or a review request an hour after a meeting ends.
- Tell the rep when a customer declines or cancels.
- Send the new time when a meeting is moved.
flowchart LR
A[Meeting tomorrow] --> B[Calendar Trigger: coming up, 1 day]
B --> C{client_id}
C -->|set| D[SMS reminder with start_label and meeting_link]
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 |
|---|---|---|---|---|
| Start this workflow when | trigger_event |
select | starting_soon |
Options: A meeting is coming up · A meeting has ended · A meeting is booked · A meeting is moved · A meeting is canceled |
| How long before / after | offset_value |
number | 1 |
Only shown when trigger_event is starting_soon, ended |
| Unit | offset_unit |
select | days |
Options: Minutes · Hours · Days. Only shown when trigger_event is starting_soon, ended |
| Whose calendars | user_ids |
select | – | |
| Only meetings linked to a client | client_required |
checkbox | 0 |
|
| Only meetings whose title contains (optional) | title_contains |
text | – | |
| Also meetings booked by workflows | include_automation |
checkbox | 0 |
Only shown when trigger_event is created |
How it checks¶
The trigger checks every minute and picks up what became due since its last check. Each meeting starts the workflow once per trigger:
- A meeting several of your people attend is on each of their calendars, but it only starts the workflow once.
- A meeting that is moved gets a new reminder for its new time.
- A meeting is coming up fires when the lead time is reached. A meeting booked closer than the lead time (booked this afternoon, with a “1 day before” reminder) does not get that reminder — use A meeting is booked for confirmations.
- Each check looks up to 30 seconds behind the clock, so a change saved at the moment of a check is not missed.
- A missed minute is caught up on the next check. A trigger switched off and on again catches up at most the last hour, never more; a new trigger starts from the moment it is switched on.
Canceled repeating meetings¶
- One meeting of a series (just next Tuesday's session) starts the workflow for that meeting.
- The whole series starts it once, not once per meeting.
- “This and all following” starts it once, for the first meeting removed, and says how many went and which was the last.
- A whole series already under way starts it once. Its time is the next meeting that is no longer happening, and it says how many went and which was the last.
- Changing a series’ pattern (weekly to every two weeks, say) does not start it. BaseCloud replaces the old meetings with new ones, and that is not a cancellation.
What is left out¶
- All-day entries are never reminded about.
- Meetings the calendar’s owner declined.
- A meeting is booked ignores meetings booked by workflows, unless Also meetings booked by workflows is on — so a workflow that books meetings cannot keep starting itself. The other options do include them: a meeting a workflow booked still gets its reminder.
- A meeting is booked also ignores meetings copied in when someone first connects their calendar (more than 15 new meetings on one person’s calendar in a minute counts as that), past meetings, and meetings booked before the trigger was switched on. It fires a minute or two after the booking.
- A meeting is canceled waits five minutes before it counts, and does not fire when only one person’s copy goes (for example, a guest declines) while the meeting carries on.
- A meeting is moved looks at the start time only. Changing just the end time does not count.
- A meeting is canceled only covers upcoming meetings.
Output Fields¶
| Field | Description |
|---|---|
trigger_event, trigger_label |
What happened, e.g. starting_soon / “Meeting starting soon”. |
event_id |
The meeting’s ID — use it in a Calendar task to change or cancel it. |
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. |
all_day |
yes / no. |
time_zone |
The account’s time zone (General Settings). |
owner_user_id |
Whose calendar the meeting is on. |
organizer_name, organizer_email |
Who organized it. |
client_id, client_name |
The linked client, when there is one. |
meeting_link, web_link |
The Teams / Meet link, and the link to open the meeting. |
attendee_emails, attendee_names |
The guests (not the organizer), comma-separated. |
attendee_count, attendees |
How many guests, and the list with each guest’s answer so far. |
session_id |
A stable key per meeting — use it as an AI memory Session Key. |
old_start, old_start_label |
Moved only: the previous time. |
moved_count |
Moved only: how many meetings of a repeating series moved together (1 for a single meeting). |
part_of_series |
Canceled and moved: yes when the meeting is part of a repeating series. |
cancelled_count |
Canceled only: how many meetings were canceled together (1 unless “this and all following”). |
cancelled_from_label |
Canceled only: the first meeting removed, when more than one was. |
cancelled_through_label |
Canceled only: the last meeting removed, when more than one was. |
Testing¶
Create a test record from the trigger’s records panel without pasting anything, and BaseCloud fills it with your account’s nearest meeting, shaped exactly as a real run would be. If the calendar is empty it uses a sample meeting.