AI Customer Onboarding Coach — Turn New Signups Into Active Users in the First 7 Days
Built by ObsidianGlow ·
About this build
A Claude powered workflow that monitors new user behaviour in the first 7 days after signup, identifies which onboarding milestone each user has and has not completed, and automatically sends personalised coaching messages that guide them toward their first meaningful result before they churn.
What was built
Built this after noticing that a platform I was working on had a 73 percent drop off rate in the first 7 days. We had a welcome email sequence but it sent the same messages to everyone on the same schedule regardless of what they had actually done in the product. Someone who had completed setup and made their first post was getting the same "have you tried posting yet" email as someone who had never logged back in after signup. The workflow runs once every 24 hours and checks the behaviour status of every user who signed up in the last 7 days. Here is how it works: Step 1 — Behaviour data pull n8n pulls the last 24 hours of user activity from the data layer — in this case Airtable — checking which onboarding milestones each user has completed. The milestones are defined upfront and specific to the product. For a community platform they might be: completed profile, made first post, replied to another post, received their first reply, visited the platform 3 days in a row. For a SaaS tool they might be: connected their first integration, invited a team member, completed their first workflow, viewed the results dashboard. Step 2 — User segmentation via Claude Each user's milestone completion status gets sent to Claude which classifies them into one of five segments. Fast starter — completed 4 or more milestones, on track, needs encouragement to go deeper. Stalled after setup — completed profile and first action but has not returned. Passive observer — logged in multiple times but not taken any actions. Ghost — signed up and never came back. At risk — was active but has not logged in for 48 plus hours. Step 3 — Personalised message generation For each segment Claude generates a personalised email or in-app message that references what the user has actually done, acknowledges where they are in the journey, and gives them one specific next action to take — not a list of features, one thing. The message also includes a plain English explanation of why that one thing matters for their goal specifically. The prompt structure forces Claude to open with something specific to the user's actual behaviour, avoid generic platform feature descriptions, give a single clear call to action, and keep the message under 120 words. Long onboarding emails do not get read. Step 4 — Internal alerts for at-risk users Any user classified as Ghost or At Risk also triggers a Slack alert to the team with the user's name, signup date, last activity and the message that was sent. This gives a human the option to reach out personally if the account is high value. Step 5 — Delivery and logging Emails are sent via SendGrid. Each message sent is logged in Airtable with the segment, message content and send timestamp so you can track which messages are driving re-engagement. What changed after deploying this: Day 7 retention improved from 27 percent to 41 percent in the first 6 weeks of running this. The biggest driver was the Stalled After Setup segment — these users had done enough to show intent but needed one specific nudge to come back. The generic drip sequence was not giving them that because it did not know they had stalled. The Ghost segment barely moved which was expected — people who never come back after signup rarely respond to any email. The insight there is to stop spending energy on reactivation campaigns for true ghosts and put that effort into reducing ghost signups in the first place through better pre-signup expectation setting. What I would build next: A cohort comparison dashboard that shows which onboarding message sequences are producing the highest 30 day retention rates so I can iterate the messages based on actual outcome data rather than open rates.
