Scheduling a model call is easy; making a recurring agent safe requires event identity, timezone rules, overlap control and an explicit decision on whether to notify.
Evidence check: 25 October 2026. Product details reflect the referenced documentation observed at this cutoff; exact plans, prices, regional eligibility and unverified release dates are not claimed. This is an editorial guide, not a hands-on test.
Match the trigger to the user goal
Use webhooks for events a system already emits, such as a document arriving or a status changing. Use a schedule for periodic work, such as a daily reconciliation or weekly digest. Use conditional polling only when no push event exists, and rate-limit it to avoid unnecessary requests. A conversation request is a fourth trigger: it should carry the initiating user’s identity and permitted scope through the whole run.
State is not the scheduler
A cron expression determines when to wake up, not whether a task already ran successfully. Track last processed event IDs, retry state, approval deadlines and the version of the workflow that processed each record. Duplicate or out-of-order webhooks are normal integration concerns. Apply deduplication and make handlers idempotent.
Calendars and timezones
A daily run at 09:00 in a named region is not the same as a fixed UTC interval when daylight-saving rules change. Store a timezone and a clear scheduling policy; decide what to do when a local time repeats or does not exist. For financial or compliance reports, record the effective date range independently from the trigger time.
Concurrency and user notice
A slow overnight run may still be active when the next scheduled run starts. Decide to queue, skip or supersede according to the workflow’s semantics. Do not report “no changes” simply because one branch timed out. Notify only after confirming a meaningful event if the user’s intent is a condition watch, and include the evidence and timestamp.
Example architecture
Cloudflare Agents documents schedules stored in SQLite and waking through Durable Object alarms; it also separates agent-local schedules from heavyweight Workflows. Make AI Agents documents triggers from chats, forms, email and webhooks. These implementation choices may differ, but the policy is portable: trigger → dedupe → authorize → work → verify → optional approval → notify.
Failure budget
Define maximum poll duration, retries, spend per run, cost per month and acceptable delay. Add alerts for repeatedly skipped or delayed runs. A self-described “always-on” agent may simply sleep between scheduled activations; do not confuse a durable identity with a continuously running process.
Make the trigger deterministic
For a daily compliance summary, an external scheduler should emit a run identifier, requested interval and timezone. A worker retrieves just the records eligible for that interval, excludes already-processed event IDs and writes a draft summary. Separate the schedule that determines when a run begins from an agent that decides what the report should say. When daylight-saving time changes, explicitly choose whether the run follows local wall-clock time or fixed elapsed hours.
Avoid accidental notification storms
A recurring agent should be allowed to conclude “no meaningful change” without sending a message. Deduplicate updates across overlapping runs and specify a cooldown for identical findings. Rate-limit external sources to avoid being throttled, retain a bounded retry queue and provide an operations dashboard showing last successful run, last attempted run and next eligible retry. For webhook consumers, verify signatures and original event timestamps; a malicious webhook body must not choose its own permission level or arbitrary callback URL.
Sources and Further Reading
- Cloudflare — Schedule tasks (accessed 2026-10-25)
- Cloudflare — Long-running agents (accessed 2026-10-25)
- Make — Make AI Agent (New) documentation (accessed 2026-10-25)