← Back to blog

n8n dry run: build a preview branch before enabling writes

An editorial n8n dry run exercise using synthetic records, explicit routing and payload previews to review proposed writes without executable write nodes.

A pink inspection tray holds a transparent envelope between disconnected conveyors for an n8n dry run.

Checked against the cited sources on .

Your n8n dry run exercise and boundaries

Paper records, loose connector pieces and an unplugged socket sit on the n8n exercise workbench.
Synthetic inputs and a disconnected destination establish the exercise boundary.

Build an n8n dry run branch that shows a proposed update and ends before any write destination. This is an editorial exercise: the proposed workflow has not been executed or validated. Your task is to inspect payloads and review whether the exercised preview paths can reach the future-write route.

You need access to an n8n development workflow and familiarity with connecting nodes. Keep it unpublished, use synthetic records, and omit live credentials and executable write nodes. Represent the future write destination with a harmless Edit Fields placeholder. Actual API configuration and production enablement are outside this exercise.

n8n documents synthetic inputs through Code or Edit Fields, conditional routing through If, and data preparation through Edit Fields. These capabilities support the exercise; the supplied sources do not establish a platform-wide dry-run feature. The official sources are undated documentation snapshots and specify no release or edition compatibility.

We think a useful preview must make its stopping point visible. A payload that looks right is only part of the review.

Sources: n8n-docs/docs/build/work-with-data/pin-and-mock-data.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub

Prepare synthetic records and explicit routing

Paper slips pass through two pink forks toward three terminal trays representing the n8n routing exercise.
The suggested structure separates validation from the decision between preview and placeholder.

Use Edit Fields or Code to prepare separate synthetic fixtures. Our suggested input contract requires recordId and proposedStatus to be nonempty strings, with proposedStatus exactly approved or paused. Add a routeControl field: only the exact string write-placeholder requests the future-write placeholder; every other value selects preview. The following matrix gives proposed expectations, not observed results.

Editorial fixture matrix; an omitted field is absent from the input.
FixturerecordIdproposedStatusrouteControlExpected endpoint
Valid previewdemo-01approvedpreviewPayload preview
Missing IDOmittedapprovedpreviewRejected record
Unsupported statusdemo-03archivedpreviewRejected record
Missing controldemo-04pausedOmittedPayload preview
Unexpected controldemo-05approvedtruePayload preview
Explicit placeholderdemo-06pausedwrite-placeholderFuture-write placeholder
Invalid with requestOmittedapprovedwrite-placeholderRejected record

Build a validation If before preparing any payload. Require all contract conditions to pass; send failures to a terminal rejected-record output that preserves the input and a rejection reason. Send valid records to a second If that compares routeControl explicitly with write-placeholder. Configure comparison types and values rather than relying on assumed truthiness.

Use this suggested sequence to keep validation, preview preparation and the future destination distinct.

Suggested exercise routing: 1. Synthetic input; 2. Validation If; 3. Route-control If; 4. Terminal outputs

Sources: n8n-docs/docs/build/work-with-data/pin-and-mock-data.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub

Build and inspect the payload preview

A clear envelope with blank strips sits under a magnifying glass beside a wooden block with an unused connector.
The payload preview contains proposed data; the other endpoint remains a harmless placeholder.

On the preview output of the route-control If, add Edit Fields containing recordId, intendedMethod, intendedPath and proposedBody. For demo-01, our suggested preview is recordId demo-01, intendedMethod PATCH, intendedPath /exercise/records/demo-01, and proposedBody containing status approved. These are data fields, not an HTTP request. End this branch at that node.

Connect the other output only to the harmless Edit Fields placeholder, with a marker such as destination: future-write-placeholder. Keep both terminal outputs separate. With no target API contract supplied, preview correctness means agreement with this editorial schema, not acceptance by a company system.

n8n documents manual execution for following flow logic and inspecting transformations. Run each fixture separately and record its expected endpoint, observed endpoint and observed fields. For this n8n dry run, inspect both the execution path and every connection, including any route bypassing validation or leaving the preview.

Our practical preference is to review the wiring before trusting a successful trace. Execution evidence and connection review answer different parts of the isolation question.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/understand-workflows/understand-executions/types-of-executions.md at main · n8n-io/n8n-docs · GitHub

Check completion and reflect before enabling writes

Fixture slips have paired tokens, with a pencil pointing to one mismatched pair in the n8n completion review.
Completion requires comparing expected routes with observed outputs and reviewing the connections.

Use this editorial checklist to decide whether you have completed the n8n dry run exercise. Leave any mismatch unresolved until you can explain and correct it.

For wrong routing, inspect comparison types, literal values and branch connections. For missing preview fields, inspect the preceding output and Edit Fields mappings. A rejected fixture reaching preview fails the exercise criterion; do not count its well-formed payload as a pass.

Manual traces cover exercised inputs and paths, not every possible route or future revision. n8n also states that pinning is unavailable for production executions: pinned fixtures are not a production write barrier. Reflect on which connections and conditions would need fresh review after an edit, and what additional API-specific checks would be needed before replacing the placeholder.

Sources: n8n-docs/docs/build/work-with-data/pin-and-mock-data.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/understand-workflows/understand-executions/types-of-executions.md at main · n8n-io/n8n-docs · GitHub

Put this into practice

Hands-on n8n challenges

Pick a challenge and build a working workflow in your own n8n environment, with five progressive tips per challenge.

Try a hands-on challenge

For your team

Custom n8n training programs for one team or department, run on your own n8n instance with your own tools and data.

Training for your team

n8n skills assessment

A free quiz of about 20 minutes: 30 questions in 10 skill areas and a level from Beginner to Expert. On AI Adoption Score, another project by the author of this site.

Get your n8n level