How should workflow ownership be transferred when moving an n8n workflow from development to production?

Hi everyone,

I am preparing an n8n workflow for deployment to a company production server.

The workflow is currently developed in my personal n8n instance/project and has a workflow ID, project ID, creator ID, and sharing/ownership metadata in the exported JSON.

I want to store the workflow JSON in Git and then import it into a separate production n8n instance used by the company.

My questions are:

  1. Which fields from the exported workflow JSON should be removed before committing it to Git so that personal/development ownership information is not carried over?

  2. Should the shared section, including the personal projectId and creatorId, be removed?

  3. Should the original workflow id also be removed so that the production n8n instance creates a new workflow ID?

  4. After importing the workflow into production, what is the correct way to assign/move the workflow to the company’s n8n project so that the company/project becomes the owner instead of my personal development project?

  5. Is there an official recommended procedure for handling workflow ownership when promoting workflows from development to production?

  6. Are there any other n8n-specific metadata fields that should not be committed to Git because they are instance-specific?

I am not trying to transfer my personal n8n account to another user. I only want to deploy the workflow definition to a separate company n8n instance while ensuring that the production instance/project owns and manages the workflow correctly.

Thanks in advance for any guidance.

1 Like

Ownership lives in the target instance and not in the workflow definition.

Nothing here is strictly required but for clean diffs I would strip the following. The “shared” block (personal projectId/creatorId) is ignored or irrelevant on import, strip it from Git if you want clean diffs. Drop the “id” if you want prod to generate a new one. If the same ID already exists on the target, importing overwrites it. Import straight into the company project: n8n import:workflow --input=wf.json --projectId=<company_project_id>. Or just import via the UI while you are inside that project. It is worth removing the “versionId”, “pinData”, “meta.instanceId” as well. Credential IDs in nodes won’t match prod, so re-link them after your import.

Finally if you are on Enterprise, Source Control (Git) handles push/pull per project natively.

1 Like