Activation checks the saved version in a fixed order and stops at the first problem, naming it. Fix that one, press Activate again, and the next problem — if there is one — appears.
Search this page for the exact words you saw.
Nothing is wrong yet, but the button is greyed out
The Activate button gates on what your browser can see before the server is asked. Hover it for the reason.
| Tooltip | Fix |
|---|---|
| Save the workflow before activating | The workflow has never been saved. Press Save. |
| Save changes before activating | Activation runs against what is stored. Press Save. |
| Fix invalid nodes before activating | One or more steps are incomplete. The count is in the toolbar; hover it for their names. |
| Add at least one trigger before activating | Add a trigger, or save the workflow as a subflow. |
| Add at least one step before activating | A trigger alone is not a workflow. |
| Connect every step to the flow. Some have no incoming path | A step shows No parent step. Draw an arrow into it or delete it. |
| Some steps refer to a step that no longer reaches them | A name was left behind by a rename or a deleted arrow. The step names it on its card. |
| Some steps read a field off a step that returns a list of records | See A step reads a field off a list below. |
| Re-sample stale sources before activating | A source changed since it was last sampled. Use Re-sample in the banner. |
Data schema is stale
Data schema is stale. Resample sources and refresh mappings before activating this workflow.
A step's configuration changed after its output was last sampled, so the fields your mappings rely on may no longer be the fields it produces.
Fix: a banner on the canvas lists each drifted source with its own Re-sample button. Press it, check the mappings that used those fields, then save. See Configure and test a step.
A workflow must have at least one trigger
A workflow must have at least one trigger (or be saved as a subflow).
Nothing would ever start this workflow.
Fix: add a trigger from the wizard — select the canvas background and use the trigger wizard, or create the workflow again choosing a trigger. If the workflow is meant to be called by another workflow instead, make it a subflow: subflows are exempt from this check. See Choose a trigger.
A workflow must have at least one step
A workflow must have at least one step before it can be activated.
There is a trigger and nothing for it to run.
Fix: add a step from the palette. See Add and connect steps.
A step is not fully configured
The "Fetch rate" step is not fully configured: URL is required.
The named step is missing something its type requires. The text after the colon is the specific reason:
| Reason | Fix |
|---|---|
URL is required |
The HTTP Request step has no URL. |
HTTP method is required |
Pick GET, POST, PUT, PATCH, or DELETE. |
at least one branch is required |
A Conditional step has no branches. |
every branch needs a condition and a label |
One of its branches is missing its condition or its name. |
delay must be at least 1 second |
A Delay step is set to zero. |
filter condition is required |
A Filter List step has no condition. |
add at least one field mapping |
A Data Transform step has no mapped output field. Open it, press Edit mappings, and connect at least one field. |
pick a subflow workflow |
A Subflow step has no target workflow selected. |
per-item iteration needs an items_from path |
Run once per item is on but no list was chosen under For each item in. |
iteration mode must be "whole" or "per_item" |
The step's iteration mode was set to something unrecognised. Re-pick it in the Iteration section. |
item_concurrency must be a whole number between 1 and 25 |
Fix the concurrency value under Iteration → Advanced. |
item_delay_ms must be a whole number between 0 and 60000 |
Fix the per-item delay. The ceiling is 60 seconds. |
max_items must be a whole number of at least 1 |
Fix or clear the Max items ceiling. |
A step has no data mappings configured
The "Save order" step has no data mappings configured.
A Map to Data Model step has a data model but no fields mapped onto it.
Fix: select the step, press the Map to button, and map at least the required fields. See Persist workflow data.
The data model has no primary key field
The "Save order" step's data model has no primary key field. Add one before activating.
Records need something to group them by, and the target data model has no field marked as its primary key.
Fix: open Warehouse, pick the data model, and mark one string or
integer field as Primary Key. A model can have only one, and the
designation cannot be changed once the model holds data — so on a model with
records, create a new model instead. See Define a data
model.
A step is missing its primary key field
The "Save order" step is missing primary key field: order_id.
The data model's primary key exists but nothing maps to it.
Fix: open the mapping panel and map that field. It is the one row with a PK badge.
The steps must be connected to the trigger
The workflow's steps must be connected to its trigger.
There is a trigger, and no step is wired to it, so a firing trigger would have nothing to run.
Fix: draw an arrow from the trigger node to your first step.
The workflow has a circular dependency
The workflow has a circular dependency (Fetch → Enrich → Fetch). Steps can't wait on each other in a loop.
The named steps wait on each other, so none of them could ever start.
Fix: the message lists the cycle in order. Delete one arrow in that loop. The canvas also blocks drawing a cycle: while you drag a connection, every step that would create one outlines in red.
Every step must connect to the trigger or another step
Every step must connect to the trigger or another step. Disconnected: Notify ops.
The named steps are unreachable. Nothing leads to them, so they could never run.
Fix: draw an arrow into each named step, or delete it. On the canvas these show No parent step and count toward the toolbar's invalid nodes.
Disconnected legacy error handler definitions stay idle until connected. New fault paths are ordinary canvas steps and must be connected to their source.
A step reads a field off a list
The "Append row" step refers to discord_read_channel_messages.content, but discord_read_channel_messages returns a list of records — run this step once per item, or reference the whole list as discord_read_channel_messages.data.
The step above hands down a list of records, not one, so content is a
field of each record rather than of the step. Written flat it resolves to
nothing, every run, and the run still reports success — which is why this is
refused up front rather than left to be discovered later.
Fix: decide which of the two you meant.
- One record at a time — open the step, set Mode to Run once per
item, choose the list under For each item in, and change the reference
to
item.content. The step then runs once for every record. On the canvas it gains a per item badge. - The whole list — reference
discord_read_channel_messages.data, which is the list itself. Useful for a count, or for sending the lot in one request.
A step that hands down a list carries a list badge on the canvas, so which producers this applies to is visible without opening anything. See Use fields from an earlier step.
A step whose output has never been tested or bound is not checked at all, so this cannot refuse a workflow over something nobody has established.
Deprecated compensation connections
Remove or convert the deprecated compensation connections before running this workflow.
An existing draft still contains a legacy Compensate connection. These connections did not implement rollback, and cannot run as error handlers without an explicit change.
Fix: review each connection and convert it to On error or remove it. Choose Fail workflow after the cleanup step when the run must remain failed. See On error paths.
A fault path has a missing source
An On error connection names a source step that no longer exists.
Fix: reconnect to an existing source or remove the missing connection. Shared recovery steps, mixed normal and fault inputs, and rejoins into the main flow are all supported as long as the graph has no cycles.
A step uses error context outside a fault path
Error context is only available along an On error path.
No On error path can reach the named step, so it cannot receive a failure context.
Fix: connect the step to a fault path or use ordinary upstream step outputs. At a join reached by either a normal or fault path, error context is optional.
A step runs a subflow that is not active
The "Refund" step runs the "Issue refund" subflow, which is not active. Activate it first.
A workflow runs the active version of the subflow it points at, so a subflow nobody has activated has nothing for the step to run.
Fix: open the subflow and activate it, then activate this workflow. Once it is active it stays available: a subflow an active workflow runs cannot be deactivated, and no version of it can be deleted while anything points at it. Publishing a new version of a subflow and activating that swaps it into every workflow that runs it — no step has to be repointed.
A step runs a subflow that no longer exists
The "Refund" step runs a subflow that no longer exists. Pick another one.
The step points at a workflow that has since been deleted.
Fix: select the step and pick a subflow from the list. Only active subflows appear there.
Active workflows limit reached
Active workflows limit reached (3 of 3 in use). Contact support@hodoflow.com to raise your plan's limits.
Activation would exceed your plan's cap on simultaneously active workflows. Nothing is wrong with the workflow itself.
Fix: deactivate a workflow you are no longer using, or contact support to raise the limit. Current usage is on Settings → Organization.
Could not change activation state
The fallback message, shown when the refusal carried no more specific text. Reload the builder and try once more; if it repeats, the workflow may have been changed by someone else in the meantime.
Related
- Save, version, and activate
- Recover a failed run for failures after activation, which are a different thing entirely.