> ## 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.

# Trigger block

> How Flows start — chat, webhook, schedule, or event.

A **Trigger block** is a Flow's entry point. It defines *how* a run begins and *what payload* enters the first Agent.

Every Flow needs at least one Trigger. You can have several — the same Flow can serve a chat UI, a webhook, and a nightly schedule at once.

## Trigger types

### Chat trigger

The default — surfaces your Flow as a chat interface in the Nora dashboard, in shared workspace chat links, or via embed. Each turn creates a new run inside the same session.

Configure:

* **Public link** — on/off. When on, generates a shareable URL (auth-gated to your workspace).
* **Anonymous access** — on/off. Off by default. When off, requires sign-in.
* **Session memory** — turns of context to keep. Defaults to 20.

### Webhook trigger

Turns your Flow into an HTTP endpoint. Anything that can POST JSON can invoke it.

You get:

* A URL: `https://api.platform.nora.my/flows/{slug}/trigger`
* A signing secret. Include it as `X-Nora-Signature` on every request.

The POST body becomes the Trigger's output payload — the first Agent receives it as input.

### Schedule trigger

Runs the Flow on a cron schedule.

* **Cron expression** — standard 5-field, with a `@daily` / `@hourly` shorthand.
* **Timezone** — defaults to your workspace timezone.
* **Payload template** — a static JSON payload sent to the first Agent (useful for parameterizing scheduled runs).

Schedules are paused automatically when a Flow is unpublished.

### Event trigger

Fires on a Nora internal event: new document ingested, feedback added, signal opened, approval decided. Useful for meta-Flows that react to system activity.

## Signing (webhook)

Rotate the signing secret at any time from the Trigger's Inspector. Old signatures are accepted for a 60-minute grace period so you can update callers without downtime.

Verify in your caller:

```python theme={null}
import hmac, hashlib
signature = hmac.new(secret.encode(), request.body, hashlib.sha256).hexdigest()
assert signature == request.headers["X-Nora-Signature"]
```

## Rate limits

Per-Trigger rate limits (RPS + concurrent runs). Requests over the limit get a `429`. Adjustable in Inspector → **Limits**.

## Multiple Triggers

Wire each Trigger into a different starting Agent, or converge them into a single one. The Agent's input schema needs to handle every payload shape it can receive — a `type` discriminator on the payload is the common pattern.
