- Multi-trigger support.
- Advanced variables.
- Copy and paste across workspaces.
- Retry, pause, and resume.
- Custom blocks built with the App SDK.
The new engine reprices everything. Keep Pricing changes open while you rebuild so a cheaper legacy step does not become an expensive one. For the full credit model, see Credits & pricing explained.
Migration order
Sequence the work so the highest-value migrations land first and the safe, low-value ones wait. Migrate in this order:- High-volume workflows where the cheaper new pricing matters now.
- Workflows that use legacy research blocks, which the Web agent replaces.
- Workflows with many logic, delay, and lookup steps, which run free in the new engine.
- Workflows that operators touch daily.
- Low-volume back-office workflows.
Inventory the legacy workflow
Document the legacy workflow before you change anything. Once you start over, the new builder will not show you what the old one did. Capture each of the following:- The trigger and its trigger conditions.
- Every block and every branch.
- The variables passed between blocks.
- The objects, lists, sequences, and apps the workflow touches.
- The credit-heavy sections.
- Whether the workflow writes to the same object or list that triggered it.
Rebuild and verify the new workflow
Ask Attio can recreate a legacy workflow in the new builder. Treat that draft as a starting point, not a guarantee. Rebuild with the assistant first. Then open the result and check every block against your inventory before you trust it.1
Generate a first draft with Ask Attio
Ask Attio to recreate the legacy workflow in the new builder. The new workflow is created disabled, which is what you want. Keep it disabled until testing passes.
2
Confirm the trigger mapped correctly
Open the new trigger and check it matches the legacy intent. Renamed triggers are a common trap. The legacy
Attribute changed trigger is now Attribute value changed, so confirm the right one was chosen.3
Check every variable's source
Walk each block and confirm its variables read from the block you expect. A variable carries data from one block to the next. A draft can wire a variable to a wrong source that still looks plausible. You often see this only as an empty value when the workflow runs.
4
Confirm filters preserve the same logic
Compare each condition against the legacy version. The legacy
If/else block is now If. A rebuilt branch can invert or drop a clause without an obvious error.5
Re-check formatting and renamed options
Slack messages use standard Markdown in the new engine, so a message that relied on legacy formatting may render differently. Verify any renamed picklist options still map to the branches that depend on them.
6
Grant workflow write access
Confirm the new workflow has the write permissions it needs. Missing access usually looks like a broken block, not a broken migration, so check it before you blame the build.
Test with real trigger data
Test the new workflow against real trigger data before it touches production. Use test records wherever you can. Open the Runs tab and inspect each run, as covered in Runs, debugging & publishing. Check the following:- The inputs and outputs for each block.
- The path the run actually took versus the path you expected.
- The credit usage.
- Any empty variables or yellow warnings.
- The loop iteration behavior, if the workflow processes many records.
Cut over safely
Cut over only once the new workflow matches the legacy output on real data. Switch the two deliberately rather than flipping them at once.1
Publish the new workflow
Publish the new workflow so its current version is the one that runs.
2
Disable the legacy workflow
Disable the legacy workflow so the two cannot fire on the same trigger.
3
Fire one production-safe test
Trigger one production-safe test, such as a record you can later clean up, and confirm the new workflow handles it end to end.
4
Watch the first week
Watch failure notifications and credit usage for the first week. I check this daily for the first few days, then weekly through the first month.
Common migration surprises
Several legacy names and behaviors changed in the new engine. Watch for these when your rebuilt workflow behaves differently from the original:- The
Attribute changedtrigger is now Attribute value changed. - The
If/elseblock is now If. - The
Research recordblock is now the Web agent. - Prompt-completion work now belongs in the Custom agent block.
- Slack messages use standard Markdown in the new engine.
- Logic, delays, lookups, and round robin run free in the new engine.
- AI blocks are now priced per token, not as fixed one- or ten-credit blocks. The Execute code block costs Variable (complexity-based).
- Workflow write access is still explicit. Missing access often looks like a broken block, not a broken migration.
See also
- Pricing changes
- Block changes reference
- Credits & pricing explained
- Runs, debugging & publishing
- What’s new in the 2026 Workflows engine