Module 6: Promotion, Rollback, and Documented Delivery

6. Native Git (Enterprise) vs. the CLI flow: the decision

Description

By the end of this lesson you will be able to decide, with judgment and no marketing, between the two ways of doing everything you learned in this module: this guide's zero-cost CLI + Git + Docker flow, and n8n's native source control (Enterprise), with its push and pull buttons built into the interface. You're going to have a decision matrix by team size, budget, and compliance, applied specifically to the cross-environment promotion that's this module's topic. And you're going to confirm the one thing that doesn't change either way, whether you pay or not: the repository remains the source of truth.

This matters because now you have the whole picture to decide for real. In Module 1 and in Module 3 you touched this decision, but in the abstract: you knew how to version, but you hadn't yet promoted, reverted, or built with AI. Now you have. You know exactly what each piece of the cycle involves, so you can precisely judge what the paid version saves you and what it doesn't. The "free or Enterprise" decision stops being a hunch about prices and becomes an informed calculation about your real scale. It's the difference between paying out of fear and paying —or not— with your eyes open.

Connection to the module: lessons 2 through 5 taught you to promote, review, build with AI, and revert by hand, with the CLI and Git. This lesson puts that manual work against its automated, paid alternative, now that you know exactly what it consists of. It's the decision lesson, not a new technique: it closes out the plan honesty the guide promised since Module 1 —transparently declaring what's free and what costs money— applied to the moment it weighs the most, cross-environment promotion. Lesson 7 goes back to practice with the CI check; this is the pause to choose the path knowingly.

What you already know about this decision, and what's missing

We're not starting from zero. In Module 1 (lesson 7) and in Module 3 (lesson 7) you already drew the underlying distinction, and it's worth bringing it back to mind before refining it, because the mistake would be repeating what you already know instead of building on top of it.

What you already have clear, with the car transmission image: the capability to version exists in both editions. In Community (the "manual"), you operate the lever —you export with the CLI, commit with Git, manage environments with Docker; in Enterprise (the "automatic"), n8n operates the lever with interface buttons. Both cars make the same gear changes; the automatic one just does for you what in the manual you do by hand. The integrated feature is paid; the ability to version is free. And the decision rule you drew: pay for convenience and scale, not for capability.

That's still true, word for word. What's missing —and what this lesson adds— is the dimension you hadn't yet lived through in those modules: cross-environment promotion. When you drew the comparison in Module 3, promoting to prod was still an idea. Now you did it: you know what it means to pull the version from the repo, map credentials, import inactive, verify, and activate (lesson 2); you know what it means to review the diff first (lesson 3) and revert with a runbook afterward (lesson 5). With that experience in hand, the question "is it worth paying for native source control?" finally has an answer you can reason about concretely, because you know exactly which steps the paid version would automate.

What n8n's native source control is, exactly

Let's pin down what the paid feature does, because deciding on it requires knowing what it automates.

n8n's native source control —the "environments / source control" feature on the Business and Enterprise plans— connects your instance directly to a Git repository, and lets you do, from buttons in n8n's interface, what in this guide you do with the CLI:

  • Push: sending your workflows from the instance to the Git repository, with no CLI export or docker cp. You press a button and n8n commits the workflows to the repo for you.
  • Pull: bringing the workflows from the repository into the instance, with no manual import:workflow. You press a button and n8n imports for you.
  • Environments per branch: the feature associates each environment (dev/staging/prod) with a Git branch, so promoting a change is, essentially, moving the change from one branch to another and pulling on the destination environment's instance. The tool manages that correspondence between branches and environments.

What the feature sends to the repository, per the docs, is the workflows, the tags, and stubs —empty skeletons— of credentials and variables; the real secrets don't travel to the repo, same as in the manual export. That security pillar is the same in both flows: whether you pay or not, secrets don't get versioned.

Notice the pattern: every native source control button replaces a command you run by hand. The push button replaces your export:workflow + commit; the pull button replaces your import:workflow; branch-based promotion replaces your lesson 2 ritual. The feature does nothing you can't do; it does the same thing, with fewer manual steps. That's exactly the automatic transmission: it doesn't change the destination, it changes how much work you put into getting there.

The comparison applied to promotion

Let's put the two flows side by side, specifically on this module's motion: promoting a change from staging to prod.

Promotion stepCLI flow (Community, free)Native source control (Enterprise, paid)
Pulling the version from the sourceexport:workflow + git commitPush button (or it's already on the branch)
Reviewing the changegit diff / pull request on GitHubDiff in n8n's UI, or pull request on GitHub
Bringing the version to the destinationdocker cp + import:workflowPull button on the destination instance
Mapping the environment's credentialsPer-environment credentials (Module 4)Per-environment credentials + integrated management
Activating at the destinationBy hand, after verifyingBy hand, after verifying
Reverting if it failsRunbook with git revert + re-importPull of the previous version from the branch

Look at the right column carefully: it produces the same result as the left one, with fewer commands. Where you run export, docker cp, and import, the paid feature presses buttons. But the final state —the workflow versioned in a repo, promoted to prod, reversible— is identical. An evaluator looking at an "automatic" team's repository and a "manual" team's wouldn't know which is which: both have the versioned JSON, the commit history, the clean structure.

Where the paid feature does add something real, and it's worth acknowledging honestly, is in the friction of coordinating several people promoting often. If your team does dozens of promotions a day across three environments, every manual export/docker cp/import costs seconds that add up and, worse, admits human error —the wrong container, the skipped step. The integrated buttons reduce that friction and those errors. For one person promoting once a week, that friction doesn't exist; for a team of eight promoting thirty times a day, it's real and it's paid in time.

Worked example: two teams promote the same change

Let's watch the two teams from Module 1 —"Automatic" (Enterprise) and "Manual" (Community)— promote exactly the same order-triage change: the manual review threshold to 5000. The goal is to see they arrive at the same place by different paths.

The Automatic Team (Enterprise). The change is already on staging's branch, tested. To promote it to prod, someone opens n8n's interface, reviews the diff right in the UI, presses the "push" button to bring the change to prod's branch, and on prod's instance presses "pull." n8n imports the workflow for them. They verify the credentials, activate, done. What they get: the promotion in a few clicks, without opening a terminal.

The Manual Team (Community). The same change is committed and reviewed in a pull request. To promote it, they follow their lesson 2 runbook: git diff to confirm the change, docker cp of order-triage.json to prod's container, import:workflow to import it inactive, they verify credentials in the editor, activate by hand. What they get: the same promotion, with three or four terminal commands instead of buttons.

What to expect comparing the two final states: it's indistinguishable. In both, prod runs the version with the 5000 threshold; in both, the Git repository has the change's commit, with its diff and its history; in both, the rollback is available by going back to the previous commit. An evaluator opening both repositories wouldn't know which team paid and which didn't. The difference isn't in the result —it's the same deliverable— it's that the Automatic Team bought convenience to produce that result, and the Manual one traded it for a few commands and a deeper understanding of what happens underneath.

Now extend the example mentally: what if instead of one promotion there were thirty a day, done by eight people? The Manual Team starts to feel the friction —coordinating who exports what, avoiding stepping on each other, not mixing up the container— and there the Automatic Team's button starts paying for itself. With a weekly promotion, the friction is zero and the button is a luxury; with thirty daily among eight people, the friction is real and the button is an investment. Same example, two scales, two answers.

What Enterprise adds, honestly

So the comparison doesn't sound like "everything's the same, never pay," it's worth being fair about what the paid edition does add and the CLI flow doesn't fully replicate. It isn't the ability to version or promote —you have that for free— but a set of governance guarantees mattering at a certain scale:

  • Role-based access control (RBAC). Who can promote to prod, who only to staging, who only views. In Community, access control lives in Git repository permissions and in who has access to each container; it works, but it's less granular and less centralized than an integrated RBAC.
  • Integrated audit log. Who promoted what and when, inside the tool itself. The CLI flow leaves that trail in Git's history (commits have an author and a date), which is a real, solid record, but it isn't the same as a corporate audit log with compliance guarantees.
  • External secrets. Reading secrets from a corporate manager (Vault, AWS Secrets Manager). For organizations with that infrastructure and a policy requiring it, it's compliance, not convenience.

Acknowledging this honestly is part of deciding well. For the vast majority of cases —someone learning, the freelancer, the small team— none of these guarantees is necessary, and the CLI flow covers everything. For a large organization with compliance requirements, they're exactly what tips the scale. The rule doesn't change: pay for what your scale and your real governance ask for, not for what sounds professional.

The decision matrix

Here's the criterion, refined with the promotion and rollback experience you now have. The question isn't "which is better?" —both produce the same deliverable— but "which is right for my situation?"

Your situationWhat's bestWhy
Learning, personal project, or portfolioCLI flowFree, you produce the same artifact, and you understand every piece —which lets you evaluate the paid version with judgment if you ever need it. A hand-built repo demonstrates more in an interview.
Freelance or small client, occasional promotionsCLI flowThe runbook and the script automate the tedious part; button convenience doesn't justify the cost when you promote infrequently.
Small team (2–4), tight budgetCLI flow, with a shared repoCollaboration lives in the GitHub repo (Module 1, lesson 7), not the instance. They coordinate via pull requests; they don't need to pay for multi-user.
Medium/large team, many promotions a dayConsider EnterpriseOnce the friction of coordinating manual promotions among several people exceeds the license's cost, the buttons pay for themselves in saved time and avoided errors.
Audit requirements, fine-grained access control (RBAC), complianceEvaluate EnterpriseNative source control, multi-user with roles, and external secrets bring governance guarantees the manual flow doesn't provide on its own.
Already using a corporate secrets manager (Vault, AWS) with a mandatory policyEnterprise (external secrets)There, external secrets stops being convenience and becomes compliance; the manual .env flow doesn't satisfy the policy.

Notice where the line falls: the CLI flow covers everything from someone learning to a small-to-medium team coordinated via repo; Enterprise starts being worth it once scale, governance, or compliance come into play. There's no universal answer; there's a calculation. And the variable moving it the most, in this module's context, is how many promotions you do and how many people do them: manual promotion scales badly when many people do it many times, and that's the point where integrated convenience starts paying for itself.

The honest calculation, in one sentence

If you want a rule to take away, it's this: pay when the cost of manual time, multiplied by frequency and number of people, exceeds the license's cost —and not a moment before.

A one-person team promoting once a week: manual time is minutes a month; no license is justified. A team of eight promoting thirty times a day: manual time is hours a week, spread across people who also step on each other and make mistakes; there the license can turn out cheap. The exact number depends on your salaries and the plan's price —which changes, so check n8n's pricing page before deciding— but the shape of the calculation is stable: time × frequency × people, against the license's cost. Everything else is noise.

Let's do the calculation with example numbers, so the formula stops being abstract —and with the usual warning: these are hypotheticals to illustrate the method, not market data. Suppose every manual promotion costs five minutes of careful work. On the one-person team with a weekly promotion, that's twenty minutes a month: an insignificant cost against any subscription. On the team of eight with thirty daily promotions, that's thirty × five = 150 minutes a day, two and a half hours daily spread across people, about fifty hours a month of work the integrated feature would reduce. Fifty monthly hours of technical people's time is, almost certainly, more expensive than the license —and that's without counting the mistakes manual work introduces at that volume. The first case doesn't come close to crossing the threshold; the second crosses it comfortably. The formula doesn't give you a universal "yes" or "no"; it gives you the point where your concrete situation flips the answer.

The one thing that doesn't change: the repository is the source of truth

Here's the message I want you to take away above the matrix, because it's the one that survives any plan decision.

Whichever flow you choose, the Git repository is the source of truth. Not the n8n instance, not the buttons, not the paid feature: the repository. In the CLI flow, you reach the repo with commands; in native source control, you reach it with buttons; but in both cases, the place where your workflows' canonical version lives —with its history, its diffs, and its good versions for rollback— is the Git repository. Both flows are two doors to the same house, and the house is the repo.

This has three consequences that hold forever.

Rollback works the same in both worlds. The runbook you wrote in lesson 5 —going back to the repo's last good JSON and re-importing it— is valid whether you pay or not. In Enterprise, "re-importing" is a pull; in Community, it's an import:workflow; but "going back to the repo's last good JSON" is identical, because the repo is the source of truth in both. Learning the rollback by hand wasn't wasted time if you ever pay: it's the same concept, with a different interface.

Knowledge transfers; convenience doesn't. Git and Docker are industry standards; they work with any tool, not just n8n. What you learned in the CLI flow —versioning, promoting, reviewing diffs, reverting— transfers to any platform you use tomorrow. The integrated paid feature ties you a bit more to how n8n does things: it's more convenient while you're on n8n, and less transferable the day you're not. It isn't an argument for never paying —the convenience is real— it's one more factor to weigh, and another reason why, for learning, the manual flow better invests your time.

Understanding the manual makes you better with the automatic. If you ever administer Enterprise's native source control, you're going to understand exactly what each button does underneath —the push is an export + commit, the pull is an import— because you did it by hand. That makes you someone who doesn't just press buttons, but knows what happens when something fails and the button isn't enough. Whoever learned the manual operates the automatic with judgment; whoever only knew the automatic runs out of options the day the abstraction breaks.

And abstractions break. A push that fails halfway, a conflict between two environment branches, a pull bringing an unexpected version: when that happens, the button doesn't tell you what to do. There, whoever understands the CLI flow underneath opens the terminal, looks at the repository's real state with git status and git log, and resolves it; whoever only knows the buttons opens a support ticket and waits. That's the most practical reason to learn the manual path even if you end up paying: it isn't nostalgia for the hard way, it's that the day of the problem, understanding what's under the abstraction is the difference between solving it yourself in ten minutes and depending on someone else solving it for you.

Common mistakes

Believing the paid version gives you a capability the free one doesn't (conceptual). What happens: someone looks at Enterprise's push/pull buttons and concludes that without them "you can't promote properly." After this module, you already know that's not true: you promoted order-triage to prod with the CLI, reviewed the diff, wrote the runbook. Why it happens: the polished interface gives the impression of an exclusive capability. How to spot it: if your reason for considering Enterprise is "to be able to promote," check —you already know how to promote without paying. How to fix it: separate capability from convenience. The ability to promote, review, and revert you have for free and used in this module. Enterprise automates the manual steps; it doesn't add the capability. Pay for the convenience if your scale justifies it, not for a capability you already have.

Paying for Enterprise "to do it right" as a small team (practical). What happens: a team of two or three pays an expensive subscription convinced native source control is "the professional way," when a free GitHub repo and the CLI gave them the same artifact. Why it happens: buying convenience feels like "doing it seriously," and the manual flow seems "for beginners." It's the opposite: a hand-built repo demonstrates more mastery. How to spot it: if you're about to pay and your team fits in a small room and promotes infrequently, check whether you really need the convenience or just lack confidence in the manual flow. How to fix it: use the CLI flow until the real friction —measured as time × frequency × people— exceeds the license's cost. Paying before that point is paying for a feeling, not a need.

Not paying for Enterprise when scale or compliance actually call for it (practical, the opposite mistake). What happens: a large team, with constant promotions and a corporate secrets policy, clings to the manual flow out of principle ("everything free") and ends up losing more in coordination time and compliance risk than the license would cost. Why it happens: turning "free" into an ideology blinds the calculation. How to spot it: if your team loses hours a week on manual promotions stepping on each other, or if you violate a secrets policy by using .env, the manual flow is already costing you more than it saves. How to fix it: the decision is a calculation, not a flag. When time × frequency × people exceeds the license, or when compliance requires it, paying is the right decision —and knowing how to do it by hand lets you administer the paid version with judgment.

Forgetting the repository is the source of truth in both flows (conceptual). What happens: someone migrating to Enterprise starts treating the n8n instance as the truth —"what's in the UI is what counts"— and neglects the repository, losing history, diffs, and the ability to roll back cleanly. Why it happens: the buttons make you feel like the instance and the repo are the same thing, and it's easy to forget which one rules. How to spot it: if your rollback plan depends on the instance and not the repo, you lost your bearings. How to fix it: in both flows, the repository is the source of truth; the instance is where it runs. Rollback goes back to the repo, the diff gets read from the repo, the canonical version lives in the repo. The paid feature changes how you reach the repo, not that the repo is the truth. Don't lose that while gaining convenience.

Exercises

Exercise 1 — Translate button to command. For each Enterprise native source control action, say which command or steps in this guide's CLI flow do the same thing: (a) the "push" button for a workflow; (b) the "pull" button on prod's instance; (c) promoting a change by moving it from staging's branch to prod's.

See solution

(a) Push equals export:workflow (with the CLI) + git commit: pulling the workflow from the instance into a file and recording it in the repository. The button does both steps at once.

(b) Pull in prod equals import:workflow --input=... against prod's container (with the prior docker cp if needed): bringing the repo's version into the instance. The button imports for you.

(c) Promoting by moving branches equals lesson 2's ritual: you pull the good version from the repo (from the corresponding branch), review it with git diff / a pull request, re-import it into prod's container with import:workflow, verify the credentials, and activate by hand. Enterprise chains that into buttons and branch-environment correspondence; the result is the same.

Why it works: translating each button to its command shows you concretely the paid feature does nothing new —it does the same thing with fewer manual steps. And it confirms learning the CLI flow wasn't wasted time: it's understanding what the automatic does underneath, which is exactly what lets you administer it with judgment if you ever use it.

Exercise 2 — Apply the matrix. For each team, decide "CLI flow" or "consider Enterprise" and justify with the time × frequency × people calculation (or compliance): (a) you alone, automating for three small clients, promoting each once a week; (b) a company with a ten-person team promoting between three environments about twenty times a day and a corporate policy requiring HashiCorp Vault; (c) a three-person team at a startup, tight budget, promotions a couple of times a week.

See solution

(a) CLI flow. One person, weekly promotions: manual time is minutes a month per client. Time × frequency × people is tiny; no license is justified. The runbook and the script cover the tedious part. Clear recommendation: free.

(b) Strongly consider/evaluate Enterprise. Ten people × twenty promotions a day is a high volume of manual work that steps on itself and admits errors; there the buttons save hours a week. And the mandatory Vault policy turns external secrets from convenience into compliance: the manual .env flow doesn't satisfy that policy. Two fronts of the matrix —promotion scale and compliance— point toward paying.

(c) CLI flow, for now. Three people, a couple of promotions a week: manual time is low and coordinates well via pull requests in a shared repo. The tight budget and low frequency tip the scale toward free. If the startup grows and promotions multiply, revisit the decision —but revisit it with the calculation, not before.

Why it works: the three cases trigger different parts of the matrix. (a) and (c) don't cross the time × frequency × people threshold; (b) crosses it from two sides at once. The decision isn't ideological —"always free" or "paying is more professional"— it's a calculation you can now do because you know exactly which manual steps you'd be automating.

Exercise 3 — Defend the repo as the source of truth. A teammate who just migrated to Enterprise tells you: "With n8n's buttons I don't need to worry about the repository anymore; the instance is what rules now." Write them a three or four-sentence answer explaining why the repository remains the source of truth even with the paid feature, and what they lose if they forget it.

See solution

A possible answer:

"Careful with that: Enterprise's buttons change how you reach the repository, not that the repository is the source of truth. Push and pull still write to and read from the Git repo; the instance is only where it runs. If you start treating the instance as the truth and neglect the repo, you lose exactly what makes the system safe: the change history, the diffs for reviewing, and —most important— the rollback ability, which consists of going back to the last good JSON in the repo and re-importing it. The day a change breaks prod, your emergency exit is the repository, not the instance. The buttons are convenience for reaching the repo; the repo is still the house."

Why it works: the answer corrects the most dangerous confusion about migrating to Enterprise —believing the paid feature moves the source of truth somewhere else. It doesn't: in both flows, the repo rules. Losing that while gaining convenience is trading a safety net for some buttons, a bad deal.

Summary and next step

In this lesson, with all the information in hand, you made the decision between this guide's zero-cost CLI flow and Enterprise's native source control. You recalled Modules 1 and 3's underlying distinction —the ability to version is free, the integrated feature is paid; pay for convenience and scale, not capability— and refined it with the dimension you now actually lived through: cross-environment promotion. You saw what native source control does —push, pull, and environments by branch, each button replacing a command you run by hand— and compared both flows step by step in promotion, confirming they produce the same deliverable with different amounts of manual work. You applied a decision matrix by team size, promotion frequency, budget, and compliance, with the honest calculation in one sentence: pay when time × frequency × people exceeds the license's cost, and not a moment before. And you locked in what doesn't change either way: the repository is the source of truth in both worlds —rollback works the same, knowledge transfers, and understanding the manual makes you better with the automatic.

Before moving on you should be able to: translate each native source control button to its CLI flow command; apply the decision matrix to a concrete team using the time × frequency × people calculation; and explain why the repository remains the source of truth whether you pay or not.

Lesson 7 goes back hands-on and adds the cycle's last automated piece, this time free. You're going to set up a CI check in GitHub Actions validating your workflow's JSON on every commit, with nobody having to remember to review it: an automatic inspector at the repository's door. And you're going to build the portfolio artifact —the workflow's screenshot plus its versioned JSON export— that job postings ask for as a hiring filter, with the guide for how to defend it in an interview. It's the second-to-last stop before the final project closing out the guide.

Resources

  • Source control and environments — n8n Docs — the official docs for the paid feature: push, pull, and environments by branch; read it to know exactly what the "automatic path" automates.
  • Environments in n8n — n8n Docs — how n8n associates environments with Git branches in native source control, the specific piece for paid promotion.
  • Community edition features — n8n Docs — the official comparison of what Community brings for free and what's paid; the source for checking each feature's current status.
  • n8n pricing — the pricing page, the source of truth on which feature is on which plan and at what cost; check here before applying the matrix's calculation, since plans change.
  • Pro Git — About Version Control — why Git is the industry standard and transferable to any tool; the foundation for "knowledge transfers, convenience doesn't."