How does everyone handle "what changed?" in n8n workflows?

Since saving overwrites the previous version, I’ve never found a clean way to see what changed in a workflow week-to-week. Curious what the community does manual JSON exports? git? something else? Especially for those running n8n for clients. Trying to figure out the best practice here.

1 Like

The approach I use is a scheduled workflow that calls the n8n API to export all workflows as JSON and commits them to a GitHub repo - runs every night, so you always have a diff-able history without touching the editor.

For the git backup pattern: use the n8n API GET /workflows/{id} to pull each workflow’s JSON, then push to GitHub via the GitHub node or an HTTP Request to the GitHub Contents API. Once it’s in git, git diff gives you a clean node-by-node comparison between any two dates.

For client work specifically, I pair this with a simple naming convention in the workflow notes field to tag the client and version. Not built-in versioning, but it works reliably without any extra tooling.

Since you mentioned client workflows, split this into two needs: internal rollback history, and a client-facing change trail. The client-facing one is paid work: read-only exports, a diff the client can understand, and a short approve/dispute note before anything changes live.

Is this for one self-hosted instance, or several client workspaces?