Triggers and schedules
A trigger decides when an agent wakes up. An agent with no trigger only ever runs when you press Run.
Presets
Every preset is an ordinary cron expression underneath, so you can start with a preset and switch to a custom expression later without losing anything.
| Preset | Cron |
|---|---|
| Every 15 minutes | */15 * * * * |
| Every 30 minutes | */30 * * * * |
| Hourly | 0 * * * * |
| Every weekday 9am | 0 9 * * 1-5 |
| Daily 9am | 0 9 * * * |
| Weekly Monday 9am | 0 9 * * 1 |
Custom schedules and timezones
A custom schedule takes a standard five-field cron expression - minute, hour, day of month, month, day of week. Pick a timezone alongside it and the schedule follows local time, including daylight saving. “Daily 9am” in New York keeps happening at 9am in New York when the clocks change.
The minimum interval is five minutes. A single run can take a couple of minutes, so anything tighter would collide with itself.
Missed runs are skipped, not caught up
If the platform is down for six hours, an hourly agent does not fire six times when it comes back. It fires once, at the next scheduled moment. This is deliberate - an agent that suddenly replayed six hours of backlog would be far more disruptive than one that missed a few checks - but it means a schedule is a best effort, not a guarantee.
A run that overruns its next slot
If an agent is still working when its next scheduled time arrives, that slot is skipped entirely rather than starting a second copy. The agent picks up again at the following occurrence. Two copies of the same agent are never running at once, which is what stops a slow inbox agent from replying to everything twice.
Pausing
Turning a schedule off stops it immediately. Turning it back on starts counting forward from that moment, so a schedule paused over a weekend does not fire a burst of catch-up runs on Monday.
Running by hand
The Run button works whether or not a schedule exists, and is the normal way to check your work. It runs your draft rather than the published version - see Testing and publishing for why that distinction matters.
What has to be true for a schedule to fire
- The agent is published and not paused.
- The trigger is enabled.
- The agent is not already running.
- The background worker process is up.
If a scheduled run never happened and there is no failed run to look at, one of those four was false.
When a message arrives
Instead of a schedule, you can trigger an agent the moment an inbound message lands. Select On a message when creating the agent, or add a channel trigger from the agent's When it runs section after creation.
- Telegram Bot — the platform registers a webhook with Telegram automatically. Messages arrive within a second of being sent.
- Twilio (SMS) — configure the webhook URL shown on the connector card as the inbound message URL on your Twilio number.
- WhatsApp Business — set the webhook URL in Meta Business Manager. The same URL handles the verification handshake.
- Inbound Webhook — any system can POST a JSON payload to the connector URL. The agent receives the full body as its trigger message.
If the same connector is used by more than one agent, every matching agent fires independently on each message. Duplicate deliveries from the provider are collapsed automatically - the same message ID is never processed twice.
What has to be true for a message trigger to fire
- The agent is published and not paused.
- The channel trigger is enabled.
- The background worker is up.