Skip to main content
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:
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.