Skip to main content
To use scheduled tasks you need to do two things:
  1. Define a task in your code using schedules.task().
  2. Attach a schedule to the task either using the dashboard or the SDK.
A task can have multiple schedules attached to it.
Like all tasks they don’t have timeouts, they should be placed inside a /trigger folder, and you can configure them.

Defining a scheduled task

You can see from the comments that the payload has several useful properties:
  • timestamp - the time the task was scheduled to run
  • lastTimestamp - the time the task was last run
  • scheduleId - the id of the schedule that triggered the task
  • externalId - the external id you (optionally) provided when creating the schedule
  • upcoming - the next 5 times the task is scheduled to run
This task will NOT get triggered on a schedule until you attach a schedule to it. Read on for how to do that.

Supported CRON syntax

“L” means the last. In the “day of week” field, 1L means the last Monday of the month. In the “day of month” field, L means the last day of the month. We do not support seconds in the CRON syntax.

When schedules won’t trigger

There are two situations when a scheduled task won’t trigger:
  • For Dev environments scheduled tasks will only trigger if you’re running the dev CLI.
  • For Staging/Production environments scheduled tasks will only trigger if the task is in the current deployment (latest version). We won’t trigger tasks from previous deployments.

Attaching schedules in the dashboard

You need to attach a schedule to a task before it will run on a schedule. You can attach static schedules in the dashboard:
1

Go to the Schedules page

In the sidebar select the “Schedules” page, then press the “New schedule” button. Or you can follow the onboarding and press the create in dashboard button. Blank schedules
page
2

Create your schedule

Fill in the form and press “Create schedule” when you’re done. Environment variables
pageThese are the options when creating a schedule:

Attaching schedules with the SDK

You call schedules.create() to create a schedule from your code. Here’s the simplest possible example:
The task id must be a task that you defined using schedules.task().
You can create many schedules with the same task, cron, and externalId but only one with the same deduplicationKey. This means you can have thousands of schedules attached to a single task, but only one schedule per deduplicationKey. Here’s an example with all the options:
See the SDK reference for full details.

Dynamic schedules (or multi-tenant schedules)

By using the externalId you can have schedules for your users. This is useful for things like reminders, where you want to have a schedule for each user. A reminder task:
/trigger/reminder.ts
Then in your backend code, you can create a schedule for each user:
Next.js API route
You can also retrieve, list, delete, deactivate and re-activate schedules using the SDK. More on that later.

Testing schedules

You can test a scheduled task in the dashboard. Note that the scheduleId will always come through as sched_1234 to the run.
1

Go to the Test page

In the sidebar select the “Test” page, then select a scheduled task from the list (they have a clock icon on them) Test page
2

Create your schedule

Fill in the form [1]. You can select from a recent run [2] to pre-populate the fields. Press “Run test” when you’re ready Schedule test form

Managing schedules with the SDK

Retrieving an existing schedule

See the SDK reference for full details.

Listing schedules

See the SDK reference for full details.

Updating a schedule

See the SDK reference for full details.

Deactivating a schedule

See the SDK reference for full details.

Activating a schedule

See the SDK reference for full details.

Deleting a schedule

See the SDK reference for full details.