

Author
If an n8n workflow still runs an old version after you edit it, first check whether the changes have been published, rather than assuming they were not saved. n8n saves edits automatically, typically within one to five seconds, without a manual Save button. Production executions, however, use the published version, not your latest edits. The canvas can therefore show the latest draft while a real trigger still runs the previously published version.
Consider a hypothetical example: a node originally outputs sales-old, and you change it to output sales-new. A manual test shows sales-new, but a new production execution still produces sales-old. Before changing the code again, check the publishing status. SHMLANG recommends starting with that distinction.
Check the following in order:
Distinguish a partial publication from a failed publication. With a partial publication, the new version has been published, but at least one trigger failed to activate; the workflow continues to run the triggers that did activate. With a failed publication, none of the triggers activated, so the workflow is not running. In either case, inspect the interface message and check whether the trigger you depend on is active before deciding whether to publish again.
Continue with the hypothetical example. Prepare controlled test data containing no real customer information, with an event identifier such as eventId=version-check-001. Run a manual test and look for sales-new. This proves only that the value observed in that test is new. Manual runs can use pinned data, so that observation does not prove the entire draft logic is correct, let alone that production has been updated.
After publishing, wait for the interface to confirm completion, then send an identifiable controlled event to the trigger entry point for that published workflow, such as eventId=version-check-002. Use controlled test data and controlled downstream targets only; do not operate on real customers or live business targets. Open the workflow’s Executions tab, find the production execution by its time, verify eventId in the input data, and inspect the output of the node you changed.
If that record contains sales-new, this production execution has used the new change. If it still contains sales-old, continue checking rather than jumping to a conclusion. Production executions do not display their execution flow directly on the editor canvas as manual runs do. Inspect the Executions tab instead; whether records are available also depends on the workflow’s execution-saving settings.
First confirm that you are looking at the correct execution. Check three things: whether the execution belongs to the workflow and instance you actually edited, whether its time is after publishing completed, and whether its event identifier matches the event you just sent.
Two kinds of history are easy to confuse. Workflow history contains saved workflow configurations, allowing you to view and restore earlier versions. Execution history records workflow runs and the results of those runs. A historical configuration tells you which nodes and parameters were saved; an execution record tells you what a particular run actually output. Neither being old is sufficient to conclude that the output was sales-old. Workflow history is not execution output, and an entry in the executions list is not proof that a particular version is live.
Not automatically. Restoring a version replaces the current workflow with the selected version so you can edit or compare it. Production executions still use the currently published version. To make the restored configuration live, review it and publish it again.
Yes. In a manual execution, you can pin a node’s output. Later manual runs substitute that saved output instead of executing the pinned node. Production executions ignore all pinned data. If a manual test always looks correct, check whether it uses pinned data: the saved output may conceal how the node actually behaves when executed.
You do not need to identify every possible cause at once. Start with publishing status, then use a new, identifiable event to check the changed node’s output. If the old value remains, verify the actual workflow, instance, and execution time.
No comments yet. Be the first!