How-to
How to run AI agents automatically (schedules & webhooks)
There are three triggers: Manual, Scheduled and Webhook. The first two lines of this page are the easy part; the section at the bottom is the one that matters, because an unattended agent fails differently from one you are watching.
I built this scheduler and later found it had been running two-week-old code on my own production server, so that section is written from the inside.
Run on a schedule
- Open the Schedules page and add a schedule to the workflow.
- Enter a cron expression — `0 9 * * *` is every day at 9am.
- Save. It runs on that timetable and every run lands in Executions like any other.
Be deliberate about frequency. A five-minute schedule is about 288 runs a day and a fifteen-minute one about 96. At $0.0144 for a support-ticket-sized worked example, 288 of those is roughly $4 a day of usage — against a free allowance of $0.50. Source: two runs costed step by step.
Run on an event
- Add a Webhook trigger to the workflow on the Schedules page.
- Copy the generated URL. It holds an unguessable token, so treat it like a password.
- Have your system POST JSON to it — the body becomes the workflow input and the run starts immediately.
- Send one real request before you rely on it, and check the input arrived shaped the way you expected.
Anyone with that URL can start your workflow. If it leaks, delete the trigger and add a new one; the old token stops working.
The limits that apply when nobody is looking
| Limit | Value | What happens |
|---|---|---|
| Run time | about 61 minutes | The run is stopped |
| Stuck-run sweeper | 90 minutes | Anything still pending or running is marked TIMEOUT, so nothing stays “running” forever |
| Runs a day on our AI key | 100 Free / 1,000 Pro | The run fails with the limit message |
| Usage a day on our AI key | $0.50 Free / $2.00 Pro | Reached first if your runs are expensive — it stops the next one |
Those last two both apply and whichever is hit first wins. Your own LLM key removes both.
How an unattended agent actually fails
It runs perfectly and does nothing
The failure with no symptom. A condition that never matches skips its branch, the run reports COMPLETED, and no alert fires because nothing went wrong by the only definition the status knows. Source: a cleanup job of mine ran hourly for weeks logging “removed 0 expired results” and had never deleted anything.
It answers, and the answer is invented
An agent whose tool calls came back empty, or refused, can still write something plausible and finish successfully. Unattended, that reaches whoever it was addressed to before anyone reads the run.
The check to build instead
Do not alert on status. Have the run report how many items it processed and compare that against what the source says it handed over. A count of zero on a normally-busy slot is a signal; a green status is not.
Next
- Read a run that went wrong — see How to troubleshoot a failed run.
- Give the scheduled workflow real tools — see Give agents tools & integrations.