A trigger is the reason a run exists. Every workflow that is not a subflow needs at least one before it can be activated, and every run records which trigger started it.
Triggers are created through the wizard that opens with a new workflow, never from the step palette. To change one later, select the trigger node on the canvas and edit it in the inspector.
Outcome
Your workflow has the trigger that matches how its data actually arrives, and you know what that trigger needs before it will work.
Which one do I want?
| Choose | When | What it needs first |
|---|---|---|
| Scheduled | You go and fetch data on a rhythm — every 15 minutes, nightly, on the first of the month. | Nothing. |
| Webhook | Another system pushes data to you as it happens. | A service account holding the webhooks scope. |
| No trigger (subflow) | This workflow is a reusable piece other workflows call. | Nothing. It is invoked, not triggered. |
If you need to prepare a service account or connector first, see What you need before you build.
Scheduled triggers
Pick Scheduled in the wizard. Step 2 offers three tabs.
Interval is three boxes — Hours, Minutes, Seconds — under Run every. The minimum is one minute; anything shorter is refused with Interval must be at least 1 minute. For sub-minute frequency, use a webhook trigger and let the sender set the pace.
Cron expression takes the five-field form, minute hour day month dow. The
next fire time is shown beneath the box as you type, in your profile timezone,
so a typo is visible before you commit. An expression that does not parse shows
invalid and is refused.
Builder composes the same expression from plain choices: Frequency (hourly, daily, weekly, monthly), the Hour and Minute to run at, and days of the week or day of the month where those apply.
Afterwards, the trigger inspector shows the schedule in plain language with an Edit schedule button.
Deactivating the workflow cancels its scheduled jobs. Reactivating recreates them.
There is no Run now. A run exists because a trigger fired, which is what lets the run history stand as a record of what actually happened.
Webhook triggers
Pick Webhook in the wizard. Step 2 asks for a Service account, and it
is mandatory — Hodoflow does not accept unauthenticated ingestion. Only active
service accounts holding the webhooks scope are listed.
If the list is empty, the wizard says so and links you to create one in a new tab; come back and reopen the wizard afterwards.
Getting the URL, calling it, redeliveries, rate limits, and sender verification are all covered in Receive webhooks.
Subflows
Pick No trigger (subflow) for a workflow that exists to be called by others. It has no trigger, so it is exempt from the trigger requirement at activation, and it is invoked by a Subflow step in another workflow rather than by anything external.
A subflow still has to be activated before another workflow can use it: only active subflows appear in a Subflow step's list, and activating a workflow re-checks every subflow it runs. Once an active workflow runs it, it stays put — deactivating it is refused until those workflows are deactivated, and no version of it can be deleted while any workflow still points at it. Publishing a new version and activating that swaps it into every workflow that runs it, with no step to repoint.
Common problems
The wizard will not let me finish a webhook trigger. There is no active
service account with the webhooks scope. Create one at Settings → Service
Accounts, then reopen the wizard — see Service
accounts.
My interval was rejected. Intervals below one minute are refused. Set at
least 0 hours, 1 minute, 0 seconds.
My cron expression shows invalid. Hodoflow expects five fields, not six —
*/5 * * * *, not */5 * * * * *.
Nothing fires after I saved. Saving is not activating. See Save, version, and activate.
Next step
Add and connect steps, or Receive webhooks if you picked a webhook.