- The schedule’s inputs are the conversation’s variables, with
channelset toschedule. They must give every required input of the procedure, since nobody is there to ask. - A procedure with steps without AI runs on its steps straight away, with no lookup and no model. Otherwise the agent’s model follows the procedure to its end and says what it did and found.
- Anything the procedure does happens as it would in any live conversation: its browser and desktop tasks, its escalations (a hand-off, a failed procedure), and approvals only your team can give. A run waiting on your team shows as
waitinguntil it’s decided. - It runs the agent’s published version, and is charged like any conversation. Its
cost_centsis what its replies and tasks came to.
When it runs
cron has five fields: minute, hour, day of the month, month and day of the week. Each takes *, numbers, ranges (1-5), steps (*/15) and lists (1,15), and months and days by name (JAN, MON). @hourly, @daily, @weekly, @monthly and @yearly work too. Times are read in the schedule’s time_zone, through daylight saving changes: a time the clock skips doesn’t run that day, and a time that comes twice runs the first time.
GET /v1/schedules/preview?cron=…&time_zone=… says an expression in words and lists its next runs.
Runs
Every run is recorded, with when it was due, how it ended (completed, failed, stopped), what the agent said last (result), its conversation and how many escalations it raised. A slot that didn’t run is recorded too:
skipped: the schedule’s last run was still going, or your org already had 5 scheduled runs going.missed: Eager wasn’t running when it was due (a restart) and it would have been over an hour late. A run up to an hour late still runs.
POST …/schedules/{id}/run) runs it at once, paused or not. Pausing stops its runs until you resume it; a resumed schedule counts its next run from then.
Who hears
Your org’s webhook getsschedule.run_completed or schedule.run_failed (failed, stopped, skipped or missed) with the schedule and the run. Each schedule can also email org members and post in the Slack or Teams channel your linked workspaces take escalations in (notify): on every run, only when one fails (the default) or never.