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

# Triggers

> How Foundry pipelines start — manual, scheduled, watch, or webhook.

Every pipeline has exactly one Trigger. It defines *when* the pipeline runs.

## Manual

The default. Pipeline runs only when you click **Run** in the canvas, or from the CLI:

```bash theme={null}
nora pipelines run <slug>
```

Good for ad-hoc backfills or testing. Not recommended for anything you want kept in sync.

## Scheduled

Runs on a cron. Choose:

* **Cron expression** — 5-field (`0 * * * *` = hourly). Common presets in the picker.
* **Timezone** — defaults to workspace timezone.
* **Skip if previous still running** — on by default. Prevents backlogs.

The next scheduled run is shown on the Trigger block so you always know.

## Watch

Watches an external location and runs whenever it changes:

* **Watch a folder** — Google Drive folder, S3 prefix, Notion database. Change detection is content-hash based, so you don't re-process unchanged items.
* **Watch a channel** — Slack channel, Discord channel. Runs per new message batch.

The polling interval defaults to 5 minutes. Real-time push subscriptions are used where the connector supports them (Google Drive, Slack).

## Webhook

Turns your pipeline into an HTTP endpoint. Any external system that can POST JSON can trigger a run.

* URL: `https://api.platform.nora.my/pipelines/{slug}/trigger`
* **Signing secret** — HMAC-SHA256 in `X-Nora-Signature`.
* **Payload** — passed to the Source stage as the run input.

Useful when you already have a webhook available from your CMS, ticketing system, or CI.

## Passing config to a run

All Trigger types accept an optional **run-time payload**. The payload becomes an input variable available in every stage of the pipeline as `{run.payload.KEY}`. Use it for:

* Manual runs targeting a single record: `{ "record_id": "abc123" }`
* Scheduled runs that need date parameters: `{ "since": "2026-07-01" }`
* Webhook payloads with source-of-change info.

## Pausing a pipeline

Toggle **Paused** on the pipeline. Scheduled and Watch triggers stop firing. In-flight runs finish. Publishing a paused pipeline unpublishes it from production Agents until you unpause.
