During this project, I kept asking myself:
“Is it normal that n8n behaves like this?”
Short answer: Yes. Completely normal.
What this project reinforced:
- n8n does not guarantee upstream data propagation
- Data correctness requires intentional merge strategies
- “No value” is not treated as an error by default
- Execution continues unless you explicitly stop it
This is the reason my workflows include multiple rounds of verification and validation.
Not because the logic is complex —
but because silent failure is worse than hard failure.
n8n is designed to execute, not to protect assumptions.
Once you accept that, validation-first design becomes natural.