---
title: Schedules and triggers
description: Run a worker manually, on a cron schedule in your time zone, or at a fixed interval — and how scheduled runs are made exactly once.
---

Every worker has a **trigger**: manual, or a schedule.

## Manual

The worker runs only when someone presses **Run now** (or a run is requested
through the API). Good for on-demand jobs and for testing before you schedule.

## Scheduled

A schedule is **one** of:

| Type | Example | Notes |
|---|---|---|
| **Cron + time zone** | `30 8 * * 1-5` in `Europe/Paris` — weekdays at 08:30 Paris time | Times follow the time zone you choose, including daylight saving. |
| **Interval** | Every 10 minutes | From one minute up to one year. |

### Cron quick reference

```text
┌ minute (0–59)
│ ┌ hour (0–23)
│ │ ┌ day of month (1–31)
│ │ │ ┌ month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
│ │ │ │ │
30 8 * * 1-5     weekdays at 08:30
0 */4 * * *      every four hours, on the hour
0 9 1 * *        the first of every month at 09:00
```

## Exactly once

Each scheduled occurrence is recorded with its own key, so a run is created once
even if several schedulers are running. The worker's next run time is advanced
in the same step that creates the run.

## Pausing

Pausing a worker stops new scheduled runs; resuming picks up from the next
occurrence. Runs aren't back-filled for the time it was paused.
