> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anyreach.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Timer trigger

> Run a workflow on a recurring schedule.

The Timer trigger fires a workflow at fixed intervals. It's backed by Temporal's durable timers, so executions are reliable and don't drift over time.

## Use cases

* Nightly reconciliation between two systems
* Hourly health check that alerts on failure
* Weekly summary report
* Daily cleanup of stale records
* Recurring outbound campaign batch

## Inspector

<Frame>
  <img src="https://mintcdn.com/anyreach/H7de0CJCTkbxSIQS/images/workflows/trigger-timer.png?fit=max&auto=format&n=H7de0CJCTkbxSIQS&q=85&s=9935fea4fdb0639214d01401cbc07075" alt="Conversation trigger types" width="3102" height="1928" data-path="images/workflows/trigger-timer.png" />
</Frame>

* The schedule is defined using a [CRON expression](#cron-syntax) that specifies exactly when the workflow should run (e.g., "every day at 9:00 am", "every 15 minutes").
* You can use the built-in AI assistant in the inspector to help you generate a valid CRON expression from plain English (e.g., “every Monday at 9am” → `0 9 * * 1`).

## Cron syntax

Standard 5-field cron:

```
* * * * *
│ │ │ │ │
│ │ │ │ └─ day of week (0-6, Sunday = 0)
│ │ │ └─── month (1-12)
│ │ └───── day of month (1-31)
│ └─────── hour (0-23)
└───────── minute (0-59)
```

Examples:

| Cron             | Fires                                |
| ---------------- | ------------------------------------ |
| `0 9 * * *`      | Every day at 9:00 am                 |
| `*/15 * * * *`   | Every 15 minutes                     |
| `0 * * * *`      | Every hour on the hour               |
| `0 0 * * 1`      | Every Monday at midnight             |
| `0 0 1 * *`      | First of every month at midnight     |
| `0 9-17 * * 1-5` | Every hour between 9 and 5, weekdays |

## Timezone behavior

The schedule's timezone determines when "9am" means locally. Across DST transitions:

* If your timezone observes DST, "9am" follows the local clock
* UTC schedules ignore DST entirely — useful for consistent system-to-system syncs

## What's in ctx

When the Timer trigger fires, the workflow context includes:

```json theme={null}
{
  "trigger": {
    "type": "timer",
    "scheduled_at": "2026-05-04T09:00:00Z"
  }
}
```

Use `{{ trigger.scheduled_at }}` for time-bucketed queries — for example, "fetch records modified since the last tick."

## Execution mode

Timer triggers run **asynchronously** — the workflow runs in the background and can include Wait steps or long-running operations.

## Considerations

* **Minimum interval: 1 minute.** For sub-minute frequency, use an external scheduler or a workflow with internal Wait steps.
* **Only one execution at a time.** If the previous run is still in progress when the next tick fires, the new tick is queued.
* **Deploy to activate.** The Timer trigger only fires on a deployed workflow. A draft workflow does not run on the schedule.
