> For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.n8n.io/build/understand-workflows/save-and-publish-workflows.md).

# Save and publish workflows

n8n auto saves your workflow while you're editing. When you're ready to put the workflow into production, publish your workflow. This approach prevents accidental production changes while enabling safe iteration and review.

## How saving works <a href="#how-saving-works" id="how-saving-works"></a>

Changes save automatically as you edit, typically within 1 to 5 seconds. No manual save button is required. All edits remain in draft until you publish.

## How publishing works <a href="#how-publishing-works" id="how-publishing-works"></a>

Publishing makes your workflow live and locks it to a specific version. Production executions will use this published version, not your latest edits. When you publish, your workflow will enable the following:

* Webhook and form triggers will use their production URLs
* Schedules will run at the times you've defined
* Events from connected apps will trigger this workflow

**Initial state** When you open a workflow with no publishable changes, the Publish button is disabled.

![](/files/2iPb5MOrYuKGLAfdOA6f)

**Ready to publish** When the workflow is not yet published but has changes, the button becomes active.

![](/files/LJb5HBebtIQtr75nVppm)

**Published, up to date** The workflow is currently published and there are no new changes since the last publish.

![](/files/IAxTykAlM000LopghkpW)

**Published, has changes** The workflow is published, but you've made changes since the last publish that haven't gone live yet.

![](/files/XZFfU57lKuEvf1xgiITl)

**Published, invalid changes** The workflow is published, but it's not in a state to be republished (no trigger requires publishing).

![](/files/oQi0Nvx1YpNEWZJoc9Ja)

**Published, error** The workflow is published, but there are errors in your recent changes that need to be fixed before you can publish again.

![](/files/SlM5Vi7cYWyAG0dzZxZW)

## How collaboration works <a href="#how-collaboration-works" id="how-collaboration-works"></a>

Only one person can edit a workflow at a time. If someone else is currently editing:

* You see the workflow in read-only mode
* The edit lock releases when they stop editing or become inactive
* You can then take over editing with the latest changes

## Checking publishing status <a href="#checking-publishing-status" id="checking-publishing-status"></a>

On the **Workflows** page, if a workflow is published an indicator will be displayed on the card.

![](/files/C1Dispx8kf7C71BBvMkA)

## Publishing a workflow <a href="#publishing-a-workflow" id="publishing-a-workflow"></a>

The **Publish** button in the canvas header is enabled whenever there are unpublished changes.

Each time you make a change to a workflow, n8n autosaves those changes to a new version of the workflow. These saved versions go live in production only when you publish the workflow after the changes.

1. Click the **Publish** button (or use hotkey `Shift` + `p`) to open the publishing modal
2. The version name defaults to a UUID. Customize the name if you'd like and add a description of the version.
3. Click **Publish** to make your changes live in production. Production executions always point to the currently published version.

   If you only update workflow settings, n8n will re-publish the version without requiring you to take any action.

![](/files/IkR3X6YPaHTSS81Ja7HI)

## Naming versions <a href="#naming-versions" id="naming-versions"></a>

{% hint style="info" %}
**Feature availability**

Named versions are available on Pro and Enterprise Cloud plans, and Enterprise self-hosted plans.
{% endhint %}

Named versions let you give a meaningful name and description to any workflow version. This helps you identify important milestones in your workflow's development. Named versions are also protected from automatic [version history pruning](/build/manage-workflows/view-change-history.md), so they persist indefinitely.

To name a version from the canvas header:

1. Select the dropdown arrow next to the **Publish** button (or use hotkey `Cmd/Ctrl` + `s`).
2. Select **Name version**.
3. Enter a name and optional description.
4. Select **Save**.

![](/files/AcXcgz4qK18UrPTudZcU)

To name a version from the version history page:

1. Open the version history by selecting the history icon in the header.
2. On the version you want to name, select **Options** <img src="/files/u571i29h1qOyVdUCmDJP" alt="Options icon" data-size="line">.
3. Select **Name version**.
4. Enter a name and optional description.
5. Select **Save**.

## Managing version history <a href="#managing-version-history" id="managing-version-history"></a>

View and manage version history by clicking the history icon in the header. In the version history view, you can perform these actions:

* Unpublish the workflow to remove it from production
* Restore a previous version. Restoring lets you work on a version without affecting the production execution.
* Publish another version of the workflow
* Name a version to protect it from pruning

## How to unpublish a workflow <a href="#how-to-unpublish-a-workflow" id="how-to-unpublish-a-workflow"></a>

Unpublish a workflow from either:

* The dropdown arrow next to the **Publish** button in the canvas header (or use hotkey `Cmd/Ctrl` + `u`).
* In the workflow list
* The version history page (unpublish action on published versions)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.n8n.io/build/understand-workflows/save-and-publish-workflows.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
