Workflow never fires
A workflow that never fires is almost always a trigger mismatch, not a broken block. A trigger is the event that starts the workflow. Check these causes in order.- The trigger type is wrong for the event. A Record updated trigger never sees a value set during record creation. For that, use Record created.
- The change happened on a list entry, but Record updated watches object attributes. A list entry is a record’s membership in a list. Changes to list membership or to list-entry attributes fire List entry updated, not the record trigger.
- The workflow is still a draft. Nothing triggers until you click Publish.
- The trigger is scoped to the wrong object, list, or attribute. The event you expect falls outside that scope, so it never runs.
Variable output is empty
An empty variable means the output you referenced never produced a value on the path this run took. A variable is a piece of data passed from one block to another. The reference points at a real block. The block just had nothing to hand it.- The output you selected sits on a branch the run never executed. A Switch or If block sent the run down a different path, so the upstream block never produced its output.
- A Find records or Find list entries block returned zero matches, so its record output is empty.
- A workflow with more than one trigger is missing a data-source fallback. The input reads from a trigger that did not fire this run, so it comes back empty.
- An AI or agent output was expected to save itself. It does not. AI blocks return text into the run and nowhere else.
”Please provide a List Entry, not a Record”
This error means a block expecting a list entry received the parent record instead. A record and its list entry are different things in the engine. Typed inputs reject the wrong one outright.1
Confirm which type the block expects
Open the failing block in the run viewer and read its input. A block such as Update list entry requires a list entry, while Update record requires a record.
2
Look up the matching entry
Add a Find list entries block. Configure it to locate the entry for the triggering record on the target list. For example, find the
Inbound list entry for the company acme.com.3
Pass the entry output downstream
Wire the entry output from Find list entries into the block that raised the error, replacing the record reference. The error clears once the input type matches.
Sequence enrollment fails
Enroll in sequence is strict about who it enrolls and who sends. So an enrollment failure is usually a typed-input or permission problem, not a sequence bug.- The recipient is not a person record. The block takes a person record, not a company and not a list entry. Reach the person through a relationship attribute on the triggering record.
- The sender does not have delegated sending enabled, so Attio cannot send on their behalf.
- The workflow lacks sequence access under its permissions.
Re-enrolling someone who is already in the sequence does not fail the run, so a duplicate enrollment is never the cause. Look at the recipient type, the sender, and access first.
Formula validation fails
A Formula block fails outright when an input is missing or the wrong type. It returns no partial result, so the whole block errors.- A numeric variable is empty, so the formula has nothing to compute. This is the most common cause.
- An input carried unexpected text where a number was expected.
- The formula uses an invalid operator or function.
0 on every numeric variable that could be empty. This is the documented fix, and it belongs on essentially every formula you write. Then test the block against real run data in the run viewer. The test confirms that each input resolves to the type the formula expects.
Credit usage is higher than expected
Unexpected credit spend comes from volume, not from a single pricey block. The usual culprit is a workflow firing more often than you thought. The other is a paid block running on records it should have filtered out first.- An unscoped trigger fires on far more events than intended. Scope the trigger to a specific attribute where possible.
- A Loop wraps a 1-credit write, so the per-run cost scales with the number of items.
- An AI block runs before the Filter, so it processes records that a filter would have excluded.
- Two duplicate workflows are both active, doubling the writes.
Per-workflow credit caps were removed in the new engine, so there is no cap to set as a safety net. Control spend by scoping triggers, filtering before paid blocks, and limiting loops instead.
See also
- Production runbook
- Runs, debugging & publishing
- Variables & data passing
- Choosing the right trigger
- Credits & pricing explained
Source: Attio Help Center: Troubleshooting workflows. Last reviewed against the Attio Help Center, June 2026.