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

# Scheduling

> Choose when your integrations run

You set when an integration runs in the **General and Deployment** section when creating or editing it. Pick how often it should run and fill in the details, like the time of day, and you're done. No special expressions needed.

<CardGroup cols={2}>
  <Card title="Pick a frequency" icon="arrows-rotate" href="#picking-a-frequency">
    Choose how often the integration runs
  </Card>

  <Card title="Advanced expressions" icon="calendar" href="#advanced-expressions">
    Full control with rate and cron expressions
  </Card>
</CardGroup>

## Picking a frequency

Choose how often the integration should run. Depending on your choice, the form shows the matching options:

| Frequency | What you pick                     |
| --------- | --------------------------------- |
| Hourly    | How many hours between runs       |
| Daily     | The time of day                   |
| Weekly    | The day of the week and the time  |
| Monthly   | The day of the month and the time |

### The time field

Type the time as numbers and the field formats it for you:

* The colon is inserted automatically.
* Single-digit hours are zero-padded: typing `9` gives `09:`.
* Pasted values work with or without a separator (`0930` and `09:30` are both accepted).
* Digits that can't form a valid time are simply not accepted.

If a time or interval is invalid, an error message appears instead of the value silently changing back to what it was before.

### Switching between frequencies

Your choices are remembered while you edit. If you pick a time under Daily, switch to Hourly to compare, and then switch back to Daily, the time is still there. The same goes for selected days and intervals.

<Info>
  All schedules use the **UTC timezone**. Convert your local time to UTC when picking a time.
</Info>

## Advanced expressions

If the frequency options can't express the schedule you need, click **Show advanced** to type a schedule expression directly. Two formats are supported.

While you type, the field validates the expression and shows a clear error message when something is off. The most common mistake is even fixed automatically: `rate(1 days)` corrects itself to `rate(1 day)`, and `rate(5 day)` to `rate(5 days)`. The validation is there to help; it never blocks saving.

When you edit an integration whose schedule was written as an advanced expression, the advanced section opens automatically so the schedule is visible right away.

### Rate expressions

Rate expressions define how often an integration should run using simple time intervals, in the format `rate(value unit)`.

**Examples:**

* `rate(1 day)` - Run once per day
* `rate(7 days)` - Run once per week

### Cron expressions

Cron expressions provide precise control over when integrations run, allowing you to specify exact times, days of the week, or dates using the AWS EventBridge cron expression. The expression has six fields: minute, hour, day-of-month, month, day-of-week, and year.

**Format:**
`cron(minute hour day-of-month month day-of-week year)`

**Example:**
`cron(15 3 ? * * *)` runs every day at 3:15 AM.

For a complete guide to the syntax and differences between the normal cron expression and the AWS EventBridge cron expression, see the [AWS EventBridge cron documentation](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-scheduled-rule-pattern.html).

## Run now

Besides the schedule, you can trigger a run at any moment.

### From the edit page

Open the integration and click **Run now**, next to the **Save** button. A confirmation dialog always appears before anything runs. This works even if the integration is disabled, which is useful for testing without turning the schedule on.

* If you have unsaved changes, the dialog warns you and the action becomes **Save and run**: your changes are saved first, then the run starts. If saving fails, nothing runs.
* For webhook integrations, the dialog asks for the JSON payload the webhook would receive. It comes prefilled with the sample body from the preview (if you entered one) or with the last payload you used for that integration.
* On success you'll see a **Run started** message; if the run can't be started, the reason is shown inside the dialog.

### From the integration status page

In workspaces with the [integration status page](/en/features/monitoring-debug/monitoring#integration-status-page), the **Run now** button is also available there. Since that page is read-only, there is nothing to save. After you confirm, the run always starts directly.
