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

# Triggers

> Choose how a Bolt schedule runs: on a cron schedule, when another schedule finishes, on merge, on pull request via Turbo CI, or on demand via the Paradime API.

export const Arcade = ({src, title}) => <div style={{
  position: 'relative',
  paddingBottom: 'calc(56.2225% + 41px)',
  height: 0,
  width: '100%'
}}>
    <iframe src={src} title={title} frameBorder="0" loading="lazy" allow="clipboard-write" allowFullScreen style={{
  position: 'absolute',
  top: 0,
  left: 0,
  width: '100%',
  height: '100%',
  colorScheme: 'light'
}} />
  </div>;

The **trigger** defines when a Bolt schedule runs. It is the first thing you configure when creating a schedule: pick a trigger type, then add [commands](/products/bolt/creating-schedules/command-settings/index), [schedule settings](/products/bolt/creating-schedules/schedule-settings), and [notifications](/products/bolt/creating-schedules/notification-settings).

## Trigger types

| Trigger type                                | When it runs                                               |
| ------------------------------------------- | ---------------------------------------------------------- |
| [**Scheduled**](#scheduled)                 | On a cron schedule                                         |
| [**On run completion**](#on-run-completion) | When another Bolt schedule finishes                        |
| [**On merge**](#on-merge)                   | When a pull request is merged to the branch                |
| [**Turbo CI**](#turbo-ci)                   | When a pull request is opened                              |
| **Incoming webhook** (coming soon)          | From external tools via a webhook URL                      |
| [**Off**](#off)                             | No automatic trigger. Run manually or via the Paradime API |

## Scheduled

Runs the schedule automatically on a cron schedule.

1. Select **Scheduled** as the trigger type.
2. Enter a **cron schedule** (for example, `0 0 * * *`). Use **Choose a preset** for common intervals, or **Cron help** to build your own.
3. Select a **timezone**. The default is UTC.

<Info>
  For help writing cron expressions, use the **Choose a preset** dropdown, or visit [crontab.guru](https://crontab.guru/).
</Info>

<Arcade src="https://demo.arcade.software/Ifh4qYFlt983z2I8WJNK?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true" title="Scheduled trigger" />

## On run completion

Runs the schedule after another Bolt schedule finishes, so you can chain dependent workflows, including across Paradime workspaces.

1. Select **On run completion** as the trigger type.
2. In the **Workspace Name** dropdown, select the [Paradime workspace](/guides/paradime-101/getting-started-with-your-paradime-workspace/creating-a-workspace) that contains the triggering schedule.
3. In the **Bolt Schedule Name** dropdown, select the schedule that acts as the trigger.
4. Choose which parent outcome starts this run:
   * **Passed** — only when the parent schedule completes successfully.
   * **Failed** — only when the parent schedule completes with errors.
   * **Passed & Failed** — whenever the parent schedule completes, regardless of outcome.

<Arcade src="https://demo.arcade.software/hsINqUh1ZN4S3goEy08B?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true" title="On run completion trigger" />

## On merge

Runs the schedule when a pull request is merged into the branch, for continuous deployment workflows.

<Warning>
  **Prerequisite: GitHub integration**

  Paradime must be connected to your GitHub repository with the [GitHub App](/products/bolt/ci-cd/turbo-ci/github) installed so it can detect merge events on the branch.

  **Using another Git provider?** Use the [CI/CD code templates](/products/bolt/ci-cd/continuous-deployment/index) to run on merge.
</Warning>

1. Select **On merge** as the trigger type.
2. Click **Deploy** to publish the schedule.

<Arcade src="https://demo.arcade.software/7yNOALXgrhary765RLxQ?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true" title="On merge trigger" />

## Turbo CI

Runs the schedule when a pull request is opened, building only the changed models so you can validate changes before they merge. See [Turbo CI](/products/bolt/ci-cd/turbo-ci/index) for the full setup, including per-provider configuration and schema cleanup.

## Incoming webhook

<Info>
  **Coming soon.** Trigger runs from external tools via a webhook URL.
</Info>

Until this is available, use the [**Off**](#off) trigger type to run a schedule from an external system through the [Bolt API](/products/bolt/bolt-api).

## Off

No automatic trigger. The schedule only runs when you start it manually or call it through the Paradime API. Use this for on-demand schedules and for [triggering Bolt from external systems](/products/bolt/bolt-api) such as Airflow, Dagster, or Prefect.

1. Select **Off** as the trigger type.
2. Run the schedule manually from the Bolt UI, or trigger it with the [Bolt API](/products/bolt/bolt-api).

***

Next, configure the [commands](/products/bolt/creating-schedules/command-settings/index) your schedule runs.

<Card title="Define this as code" icon="code" href="/products/bolt/creating-schedules/schedules-as-code/configuration-reference#execution-modes" horizontal>
  Set the trigger in YAML with `schedule`, `schedule_trigger`, `trigger_on_merge`, or `turbo_ci`.
</Card>


## Related topics

- [External Triggers](/products/bolt/external-triggers/index.md)
- [Trigger Zapier](/products/bolt/creating-schedules/command-settings/zapier.md)
- [Bolt Trigger Integrations](/products/bolt/creating-schedules/trigger-integrations/index.md)
- [Trigger Datadog Incidents](/products/bolt/creating-schedules/trigger-integrations/trigger-datadog-incidents.md)
- [Trigger Hightouch Syncs](/products/bolt/creating-schedules/templates/reverse-etl-templates/trigger-hightouch-syncs.md)
