Use the cheapest reliable layer
A serious automation company should not be paid to custom-code a workflow that a stable connector can handle safely in an afternoon. Equally, a critical order-processing system should not be forced into a visual automation canvas just because the first prototype was easy.
The tool should follow the failure mode, volume, state and ownership requirements of the workflow.
Where low-code is usually the right answer
Low-code orchestration is strongest when the workflow is mostly stateless integration between well-supported SaaS tools.
- Form submission → CRM record → notification
- Calendar / email / spreadsheet coordination
- Simple lead enrichment and routing
- Internal prototypes where failure is visible and reversible
Where custom code starts earning its cost
Custom services become valuable when you need durable state, complex retries, high volume, strict permissions, bespoke UI or integration with systems that do not behave like modern SaaS.
- Order / inventory synchronization
- Financial reconciliation with review states
- Long-running workflows with days of waiting
- RFID / IoT event processing
- Customer-facing workflows where an invisible failure costs money
The hybrid architecture is normal
A good production system can use n8n for a peripheral notification, a queue-backed service for core state, an LLM API for document ambiguity and the ERP API as the source of truth. There is no prize for using one tool everywhere.
Ask the vendor this
“What happens if step four fails after step three already changed the ERP?” The answer tells you more about production maturity than a list of AI models. You want idempotency, retries, auditability and an explicit recovery path—not “the workflow reruns”.