Scheduled jobs
Run code on a schedule, in your time zone, with run history.
Built on Inngest
Plans: Every plan, including the free app
| Scheduled functions | Free app | Starter | Team | Business | Client business |
|---|---|---|---|---|---|
| Included | At most every 10 minutes | Any schedule | Any schedule | Any schedule | Any schedule |
What you get
- Any five-field cron schedule
- Schedules in your own time zone
- Run history with each step's timing
- Run a job now, by hand, to check it
- Retries when a step fails
- An alert when a job fails three times in a row
How it works
You list a job in the app's whisk.yaml with a schedule and a time zone. Whisk calls the app at each scheduled time. Nothing runs on a timer inside the app, so a sleeping app wakes for the run and goes back to sleep after it.
Every run is recorded with its steps, inputs, outputs and timing. A step that fails is retried on its own, without repeating the steps that worked. If a job fails three times in a row, the business's owners, admins and developers are told once.
Jobs run on Inngest, the open-source workflow engine, so the code is standard Inngest code your coding agent already knows. The same engine runs durable workflows and approval steps.
Example
An electrical wholesaler copies prices and stock levels from its ERP to its website every weekday at 6:00, before the trade counter opens. If the ERP is down for maintenance, the job retries that step and finishes once it is back, and the sales manager gets an email only if it still fails.
For your coding agent
functions:
- name: price-sync
cron: "0 6 * * 1-5"
tz: America/Chicago
graph: workflows/price-sync.graph.yamlCheck a new job without waiting for its schedule with whisk cron run price-sync, then follow it with whisk runs show <run id>. Every field is in the whisk.yaml reference.