Triggers
Every workflow needs exactly one active trigger, the node that decides when a run starts. Flero has six built-in triggers, plus a trigger for each enterprise connector. This page is a quick reference; for in-depth per-trigger guides, see Section 05: Triggers.
All triggers have no input port and one output port.
Built-in triggers
Start (manual)
What: The default trigger added to every new workflow. Fires when you click Run in the editor or start the workflow through the API.


When to use: Testing, ad-hoc runs, workflows called by other systems through the API.
Configuration:
| Field | Notes |
|---|---|
mode |
simple (default), generator, validator or setup |
initialData |
An object the node emits as its output |
includeMetadata |
Add run metadata to the output. Default on. |
timestamp, generateId |
Add a timestamp and a generated id. Both default on. |
See Manual & test runs.
API/Webhook Trigger
What: Gives the workflow an HTTPS URL. A request to that URL starts a run while the workflow is active.


When to use: External services pushing events to you: Stripe, GitHub, Shopify, your own systems.
Configuration (all inside the webhook object):
| Field | Notes |
|---|---|
path |
The path after the /trigger/ prefix. Copy the full URL from the inspector. |
method |
GET, POST, PUT, PATCH or DELETE |
secret |
Optional. When set, each request must carry an HMAC-SHA256 signature of the body in the X-Hub-Signature-256 or X-Webhook-Secret header. |
responseMode |
immediate (default): reply at once. wait: reply when the run finishes. |
payloadType |
auto (default), json or graphql |
What downstream nodes read: the request body as {{ $trigger.payload.<field> }}, plus $trigger.headers (lower-case names), $trigger.query, $trigger.method and $trigger.path. The body is under payload, not body.
The signing secret is never copied into the node's output.
See Webhook trigger.
Scheduler
What: Starts a run on a timetable.


When to use: Hourly syncs, daily reports, polling external systems on a cadence.
Configuration:
| Field | Notes |
|---|---|
schedule.type |
interval, cron or once |
schedule.interval |
Milliseconds between runs, for interval |
schedule.cron |
Standard 5-field cron, for example 0 9 * * * for 9am daily |
schedule.datetime |
ISO 8601 date and time, for once |
schedule.timezone |
Time zone for the schedule |
enabled |
Default on |
maxExecutions |
Optional cap on the number of runs |
payload |
An object whose keys appear on $trigger in every run |
What downstream nodes read: $trigger.triggerTime, plus each key of payload, for example {{ $trigger.region }}.
See Schedule trigger.
Form Trigger
What: Publishes a public form with fields you define. Each submission starts a run.


When to use: Request intake, feedback collection, lead capture.
Configuration: title, description, fields (required), submitButtonText (default Submit), successMessage, allowMultipleSubmissions (default off).
What downstream nodes read: each field as {{ $trigger.payload.<field> }}, plus $trigger.formTitle. File fields arrive as file references.
See Form trigger.
Chat
What: A chat box on the canvas. Each message starts a run.


When to use: Multi-turn AI conversations, internal chatbots, support workflows.
Configuration: placeholder, multiline (default on), maxLength (default 1000), clearOnSend (default off), memoryKey (default default).
Output: message, timestamp, length, and conversationHistory once the conversation has earlier turns. An AI Agent placed after it uses that history automatically.
See Chat trigger.
MCP Trigger
What: Exposes the workflow as a named tool that Model Context Protocol (MCP) clients, such as AI assistants, can call.


When to use: Workflows that external AI agents should be able to run.
Configuration:
| Field | Notes |
|---|---|
toolName |
Required. The tool name clients see. |
description |
Required. Tells the client's model what the tool does. |
inputSchema |
JSON Schema for the tool's arguments |
responseMode |
wait (default): return the run's result. immediate: acknowledge at once. |
Output: The tool-call arguments.
Connector event triggers
Most enterprise connectors also have a trigger that fires on an event in the external service, such as a new Slack message or a new Granola note. Find each connector's triggers on its page in the Connector catalog.
A connector trigger is configured with the event to listen for and a credential, plus any options that event has. Triggers are delivered in one of two ways:
- Push: the service sends each event to Flero as it happens. Lowest latency.
- Polling: Flero checks the service on a schedule. Every enterprise connector supports polling.
Read a connector trigger's data from its node output, for example {{ $node["Slack Trigger"].output.<field> }}. Open the trigger's output after a test event to see its fields.
Platform triggers (admins)
Flero Event starts a run when a run in your Flero instance fails or completes. Flero Monitor watches a metric, such as failure rate or AI spend, and starts a run when it crosses a threshold. Both are admin-only. See Flero platform nodes.
Common patterns
- One trigger per workflow. Need to react to two different events? Build two workflows, and share the common steps through a Sub-Workflow.
- Manual, then scheduled. Keep the Start node while you build; replace it with a Scheduler when you set the workflow to active.
- Webhook and duplicates. External services occasionally re-send events. Check the event id with Cache Storage before doing the real work.
Related
- Section 05: Triggers, full per-trigger reference
- Referencing data →
$trigger
Found something out of date? This page lives in the Flero docs content set.