Zapier is a miracle of software engineering and we use it constantly. For simple things. When a form is submitted, create a CRM record and send a Slack message. Two steps, one condition, zero transformation. Perfect Zapier use case. Shipped in 15 minutes.
The problems start the moment the workflow gets more ambitious. When it has 12 steps. When it needs to make a decision based on the output of an AI model. When it has to retry on failure with exponential backoff. When it has to handle 10,000 events a day. When it has to look up data in three systems and merge them. When the logic is "if this and this, but not that, unless..."
At some point the no-code tool stops being the right abstraction. The workflow becomes unreadable. Changes break things in unpredictable ways. Debugging requires clicking through 12 node outputs. Cost per run spirals. The team that owns the workflow shrinks to the one person who remembers how it was wired up.
The right answer is not to stop using Zapier. The right answer is to know when the workflow has outgrown it. We tell clients the line is somewhere around: more than 8 steps, more than 2 branching conditions, or more than 1 external data source being joined. Past that line, you want code.
Code does not mean a big complicated engineering project. It means a simple function, deployed to a serverless runtime, with version control, tests, and logging. It can be 50 lines. It can be 200 lines. What it is not is a visual flow with 35 nodes that nobody can follow.
The companies that get automation right have a mix. Simple glue in Zapier or Make. Interesting logic in code. Clear ownership of both. The ones that try to do everything in a no-code tool eventually hit a wall, and the wall is always in the middle of the most important workflow, at the worst possible time.