Concept

Scheduled backend jobs

Run one of your backend functions on a timer, such as a nightly digest or an hourly sync. How often each plan allows, the limits, and how usage is counted.

Last updated Open in ClaudeOpen in ChatGPT
On this page

A scheduled backend job runs one of your backend functions on a timer: re-checking saved prices every hour, sending a digest every morning, syncing stock, tidying up expired rows. It runs inside your own backend, with nobody at the keyboard.

It is for your site's own code. For Willo's business work on a schedule (research, writing, outreach), use the Growth Engine or an Agent Program instead.

How a job is set up

  1. Willo writes the function to do one bounded piece of work per run, such as the next batch of rows, picking up where the last run left off.
  2. It deploys the function. If you're drafting, you publish first: jobs only ever run against your live backend, never the draft.
  3. It schedules the job. The approval card shows how often it runs and the backend usage it is expected to use each month. Approving the card is your go-ahead.

Ask in chat: "every morning at 7, email me yesterday's bookings" or "check the supplier's prices every hour and flag changes".

How often

Times are in UTC. Willo converts your local time for you, and tells you the UTC time it set.

Your plan sets the shortest gap between runs:

PlanMost often
Free, Starter, BuilderEvery hour
Growth, ScaleEvery 30 minutes

Most recurring work (price checks, digests, syncs, clean-up) is fine hourly or less often.

Limits

LimitValue
Jobs per business10
Time per run60 seconds

A job that needs longer should process work in chunks across several runs. Re-using a job's name replaces it, so "make it every six hours instead" is one change. Stopping a job needs no confirmation.

How usage is counted

Each run counts toward your plan's included backend usage; it isn't a separate charge. A daily job uses very little. An hourly job uses a noticeable share of the month, and the approval card shows the estimate before you approve.

On smaller plans, Willo refuses a schedule that would use more than your included allowance, and names the most frequent schedule that fits, typically every six hours or daily. Upgrading your plan, or adding a Backend Boost on a paid plan, makes room for more.

Did it run?

Ask Willo: "did the price check run last night?" It reports each job's next run and last dispatch: whether the timer sent the request to the function, and when. Dispatched doesn't mean the work succeeded. For that, Willo reads the function's logs, and a job that ran but did nothing useful is a problem in the function, not the schedule.

If your backend is paused because it used its monthly allowance, jobs pause with it and run again once it is resumed.

Related: Run a job on a schedule, Backend functions.