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.

Checked against the cited sources on .
Your n8n dry run exercise and boundaries

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

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.
| Fixture | recordId | proposedStatus | routeControl | Expected endpoint |
|---|---|---|---|---|
| Valid preview | demo-01 | approved | preview | Payload preview |
| Missing ID | Omitted | approved | preview | Rejected record |
| Unsupported status | demo-03 | archived | preview | Rejected record |
| Missing control | demo-04 | paused | Omitted | Payload preview |
| Unexpected control | demo-05 | approved | true | Payload preview |
| Explicit placeholder | demo-06 | paused | write-placeholder | Future-write placeholder |
| Invalid with request | Omitted | approved | write-placeholder | Rejected 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.

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

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

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


