I built an onboarding automation for a SaaS product. New users signed up, got a welcome email, then the system walked them through setup in five steps. Each step triggered the next. Simple sequential flow.
Three hundred users signed up in the first week. Only nineteen completed onboarding. The other two hundred eighty one just disappeared after step one.
The Setup
SaaS onboarding needed automation. New user signs up, system sends welcome email, then guides them through account setup, profile completion, product tour, first project creation, and invitation to their first team call.
Each step was supposed to trigger automatically when the previous step finished. I built it in n8n with email triggers, database checks, and timed delays.
Tested with twelve users across three days. Everyone completed all five steps perfectly. Deployed Friday.
The Vanishing Users
Monday morning, the CEO asked why almost no one was finishing onboarding. I pulled the data. Three hundred signups. Two hundred eighty one stuck at step one. Nineteen made it through.
I checked the logs. Every stuck user followed the same pattern. They received the welcome email. They clicked the link. They landed on the setup page. Then nothing. No step two email. No follow-up. The automation just stopped.
Why This Happened
My workflow assumed a perfect path. User completes step one, trigger fires, step two begins. But I never built logic for what happens if step one is not completed.
The reality was messy. Users clicked the welcome email, looked at the setup page, then left to check something, got distracted, or decided to come back later. They did not click the final "Complete Setup" button.
Without that button click, the trigger for step two never fired. The system interpreted incomplete step one as no step one at all. Since step two depended on step one being fully done, it never sent. Step three depended on step two. Step four on step three. The whole chain collapsed at the first gap.
The users were not gone. They were waiting for instructions that would never come.
The Failed Fix
I tried adding a timer. If step one is not completed in 24 hours, send a reminder email.
That technically worked, but it did not solve the core problem. Users who came back and finished step one after the reminder still did not trigger step two, because I had built the system to only check completion status at the moment of initial signup, not continuously.
The Real Solution Was State Tracking
The breakthrough was realizing onboarding is not a sequence, it is a state machine. Users do not move in straight lines. They jump around, pause, return, skip, and backtrack.
I rebuilt the logic around state, not sequence. Every user has a current onboarding state stored in the database. Signed up but setup incomplete. Setup done but profile empty. Profile done but no project. And so on.
The automation checks state every hour for all active users. If a user is stuck in setup incomplete for more than six hours, send a nudge email. If they complete setup, immediately check their state and fire the next appropriate step, regardless of when or how they finished.
If a user skips ahead and creates a project before finishing their profile, the system adapts. It does not rigidly block them or ghost them. It adjusts the remaining onboarding steps based on what is already done.
Conditional logic replaced linear sequence.
What Changed
Users who paused at step one and came back three days later were no longer abandoned. The system recognized their return, saw setup was now complete, and immediately sent step two.
Users who completed steps out of order were not penalized. If someone invited a teammate before finishing the product tour, the system noticed and skipped the invite step in the normal sequence.
Users who never finished certain steps got periodic reminders but were not locked out of later steps that did not depend on the incomplete ones.
The flow became flexible instead of rigid.
The Results
After the fix, I reprocessed the two hundred eighty one stuck users manually to restart their flows. Within 48 hours, one hundred ninety three of them completed onboarding. The others were genuinely inactive, not system-ghosted.
For new signups after the fix, completion rates jumped. Out of the next 400 signups, 312 completed onboarding. That is seventy eight percent compared to the original six percent.
The difference was not better users. It was a system that adapted to how real people actually behave.
What I Learned
Linear flows break the moment users deviate. Onboarding is not a straight line. It is a web of possible states. Systems must track state, not sequence. Conditional logic must account for pauses, skips, returns, and out-of-order actions.
Most importantly, "user did not complete step one" does not mean "user left forever." It often just means "user is not done yet." The system must be patient and adaptive, not rigid and punishing.
The Bottom Line
A sequential onboarding flow ghosted three hundred users because it could not handle incomplete steps or non-linear behavior. The fix was replacing sequence with state tracking and building conditional logic that adapts to real user patterns instead of assuming perfect linear completion.
Written by Farhan Habib Faraz
Senior Prompt Engineer building conversational AI and voice agents
Tags: onboarding, automation, conditionallogic, userexperience, workflows, statemachine
Top comments (0)