How to Create a Customer Onboarding Sequence with n8n
The Quick Answer
You can build a complete customer onboarding sequence in n8n in 30-45 minutes. This tutorial shows you how to create a 7-email onboarding flow that sends welcome emails, educational content, and conversion-focused messages at optimal intervals. Businesses using this sequence see 35-45% better trial-to-paid conversion rates.
What Is a Customer Onboarding Sequence?
A customer onboarding sequence is a series of automated emails (or messages) that guide new customers through their first days/weeks with your product. The goal is to:
- Welcome them and set expectations
- Help them achieve their first success (the “aha moment”)
- Educate them on key features
- Address common objections
- Drive them toward a purchase or upgrade
Good onboarding sequences can improve trial-to-paid conversion by 30-50%. Bad ones (or no sequence at all) leave money on the table.
Why Build It with n8n Instead of Email Marketing Tools?
Most email marketing platforms (Mailchimp, ConvertKit, ActiveCampaign) can build onboarding sequences. So why use n8n?
Advantages of n8n:
- No per-contact pricing: Send to 10 or 10,000 users at the same cost
- Custom logic: Trigger emails based on actual usage data, not just time delays
- Integration flexibility: Combine data from your app database, CRM, and payment processor
- Behavior-based triggers: Send email 3 when they complete action X, not on day 3
- Cost: Free if self-hosted, or $20/month for cloud (vs $50-300/month for email platforms)
When to use email platforms instead: If you need advanced email design tools, A/B testing, or detailed deliverability analytics, stick with dedicated email platforms. But for most small businesses, n8n + SendGrid/Mailgun gives you 90% of the functionality at 20% of the cost.
What You’ll Need
Before starting, gather these resources:
- n8n instance (self-hosted or n8n Cloud)
- Email service: SendGrid (free tier: 100 emails/day) or Mailgun (free tier: 5,000 emails/month)
- Email addresses to test with
- Your onboarding email content (I’ll provide a template)
- Somewhere to store user data: Airtable, Google Sheets, PostgreSQL, or your app database
Time required: 30-45 minutes for initial setup, 1-2 hours for customization.
The Onboarding Sequence We’ll Build
Here’s the 7-email sequence that converts best for SaaS and digital products:
| Timing | Purpose | Open Rate | Click Rate | |
|---|---|---|---|---|
| #1: Welcome | Immediately | Set expectations, link to getting started guide | 60-80% | 35-50% |
| #2: Quick Win | 1 day later | Guide them to first success | 40-55% | 25-40% |
| #3: Core Feature Education | 3 days | Teach most valuable feature | 35-45% | 20-30% |
| #4: Social Proof | 5 days | Case study or testimonials | 30-40% | 15-25% |
| #5: Advanced Features | 7 days | Show power user features | 25-35% | 15-20% |
| #6: Trial Ending Soon | Day 12 (if 14-day trial) | Create urgency | 45-60% | 30-45% |
| #7: Last Chance | Day 13 | Final offer or bonus | 40-55% | 25-40% |
Note on timing: These are guidelines. Adjust based on your product complexity and trial length.
Step 1: Set Up Your Trigger
First, we need a way for new users to enter the onboarding sequence.
Option A: Webhook trigger (recommended)
If you control the application code, have your signup process send a webhook to n8n:
// In your application after user signs up
fetch('https://your-n8n-instance.com/webhook/onboarding-start', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: user.email,
firstName: user.firstName,
signupDate: new Date().toISOString(),
plan: 'trial',
userId: user.id
})
});
In n8n:
- Add a Webhook node
- Set HTTP Method to POST
- Set Path to onboarding-start
- Copy the webhook URL
Option B: Database polling
If you can’t modify application code, poll your database for new users:
- Add a Schedule Trigger node (run every 15 minutes)
- Add a PostgreSQL/MySQL node (or whatever database you use)
- Query:
SELECT * FROM users WHERE created_at > NOW() - INTERVAL '15 minutes' AND onboarding_started = false - Add a Set node to mark these users as onboarded: UPDATE users SET onboarding_started = true WHERE id = {{$json.id}}`
Option C: Google Sheets or Airtable
For simple setups:
- Schedule Trigger node (every 30 minutes)
- Google Sheets node: Read new rows where “Onboarding Sent” column is empty
- Continue with sequence
- Google Sheets node: Update “Onboarding Sent” to TRUE
Step 2: Send Email #1 (Welcome Email)
Add a SendGrid node (or Mailgun node) right after your trigger.
SendGrid setup:
- Node: SendGrid
- Operation: Send Email
- From Email:
[email protected] - To Email: {{$json.email}}`
- Subject:
Welcome to [Your Product]! Here's what to do first
Email template for Email #1:
Hi \{\{$json.firstName\}\},
Welcome to [Your Product]! I'm [Your Name], and I'm here to help you get the most out of your trial.
Over the next 14 days, you'll receive a few emails from me with tips, tutorials, and resources to help you [achieve primary goal].
**Here's what to do right now:**
1. Log in to your account: [link]
2. Complete your profile setup: [link]
3. [First quick win action]: [link]
That's it! This should take about 5 minutes, and you'll have your first [result] up and running.
I'll check in tomorrow to show you [next step].
Questions? Just reply to this email—I read every one.
[Your Name]
[Your Title]
[Your Product]
P.S. - Check out our getting started guide: [link]
SendGrid settings:
- Enable click tracking: Yes
- Enable open tracking: Yes
Step 3: Add Wait Nodes for Email Timing
After Email #1, add a Wait node:
- Add Wait node
- Resume: After Time Interval
- Amount: 1
- Unit: Days
This pauses the workflow for 24 hours before sending Email #2.
Step 4: Build Email #2 (Quick Win)
Add another SendGrid node after the Wait node.
Email #2 template:
Subject: Your first [outcome] in 5 minutes
Hi \{\{$json.firstName\}\},
Yesterday you signed up for [Product]. Today, let's get you your first win.
**The fastest way to see results:**
Step 1: [Specific action]
Step 2: [Specific action]
Step 3: [Specific action]
[Screenshot or GIF showing the process]
This takes about 5 minutes and will [specific benefit].
**Need help?**
- Video tutorial: [link]
- Help doc: [link]
- Book a 15-minute call: [link]
Tomorrow I'll show you [next feature/benefit].
[Your Name]
P.S. - 78% of our most successful customers do this within their first 48 hours.
Step 5: Add Conditional Logic (Optional but Powerful)
Here’s where n8n shines over traditional email platforms. You can send different emails based on user behavior.
After Email #2, add an IF node:
- Add IF node
- Condition: Check if user completed the quick win action
Option A: Check via API
If your app has an API:
- Before the IF node, add an HTTP Request node
- URL: https://yourapp.com/api/users/\{\{$json.userId\}\}/activity`
- Method: GET
- Authentication: Your API key
Then in the IF node:
- Condition: {{$json.completedOnboarding}}
equalstrue`
Option B: Check via database
Add a PostgreSQL node:
SELECT COUNT(*) as completed
FROM user_actions
WHERE user_id = \{\{$json.userId\}\}
AND action_type = 'quick_win_completed'
Then in the IF node:
- Condition: {{$json.completed}}
greater than0`
Create two branches:
- TRUE branch: They completed it → Send congratulations email + teach advanced feature
- FALSE branch: They didn’t → Send reminder/help email
This single piece of logic can increase conversion by 15-20% because you’re sending relevant content based on behavior, not just time.
Step 6: Complete the Sequence
Continue building the sequence with Wait nodes and SendGrid nodes:
Email #3 (Day 3): Core Feature Education
- Wait: 2 days after Email #2
- Template focus: Deep dive on your most valuable feature
- Include: Tutorial video, help doc, example use case
Email #4 (Day 5): Social Proof
- Wait: 2 days after Email #3
- Template focus: Customer story or case study
- Include: Specific results, quote, “how they did it”
Email #5 (Day 7): Advanced Features
- Wait: 2 days after Email #4
- Template focus: Power user features they might not discover
- Include: “Pro tips” or “Hidden features”
Email #6 (Day 12): Trial Ending Soon
- Wait: 5 days after Email #5
- Template focus: Create urgency, remind of value
- Include: Pricing page link, upgrade CTA, trial expiration date
Email #7 (Day 13): Last Chance
- Wait: 1 day after Email #6
- Template focus: Final offer or bonus for upgrading today
- Include: Discount code (optional), what happens if trial expires, upgrade link
Step 7: Track Opens and Clicks
Add a Webhook node at the end to log the sequence completion:
- HTTP Request node
- Method: POST
- URL: Your analytics endpoint or Google Sheets webhook
- Body:
{
"userId": "\{\{$json.userId\}\}",
"email": "\{\{$json.email\}\}",
"sequenceCompleted": true,
"completedAt": "\{\{new Date().toISOString()\}\}"
}
This lets you track who went through the entire sequence.
Tracking opens and clicks:
SendGrid automatically tracks opens and clicks if enabled. You can access this data via:
- SendGrid dashboard (Activity Feed)
- SendGrid Webhooks (send events to n8n for processing)
- SendGrid API (query stats via HTTP Request node)
Step 8: Add Error Handling
Emails fail for various reasons (invalid email, bounces, rate limits). Add error handling:
- Select any SendGrid node
- Click Settings tab
- Set Continue On Fail: true
Then after your SendGrid nodes, add an IF node:
- Condition: {{$json.error}}` exists
- TRUE branch: Log the error or send notification to yourself
Example error notification:
- Add HTTP Request node (or Email node)
- Send to your Slack/email
- Message: Failed to send onboarding email to {{$json.email}}: {{$json.error}}`
Advanced: Behavior-Based Branching
Want to take this to the next level? Create branches based on engagement:
After Email #3, add an IF node:
- Check if they opened/clicked Email #2 and #3
- HIGH ENGAGEMENT branch → Fast-track to upgrade email
- LOW ENGAGEMENT branch → Send help/support email
How to check opens:
- HTTP Request node
- URL: https://api.sendgrid.com/v3/messages?query=to_email=\{\{$json.email\}\}&limit=10`
- Headers:
Authorization: Bearer YOUR_SENDGRID_API_KEY - Parse response to check for opens/clicks
This requires SendGrid API key with read permissions.
Complete Workflow Structure
Here’s what your final workflow looks like:
[Webhook Trigger]
↓
[Send Email #1: Welcome]
↓
[Wait 1 Day]
↓
[Send Email #2: Quick Win]
↓
[Wait 2 Days]
↓
[Check if Action Completed]
↓
/ \
/ \
[YES] [NO]
↓ ↓
[Email: Next] [Email: Help]
↓ ↓
[Wait 2 Days] [Wait 2 Days]
↓ ↓
\ /
\ /
↓
[Email #4: Social Proof]
↓
[Wait 2 Days]
↓
[Email #5: Advanced Features]
↓
[Wait 5 Days]
↓
[Email #6: Trial Ending]
↓
[Wait 1 Day]
↓
[Email #7: Last Chance]
↓
[Log Completion]
Testing Your Sequence
Before launching to real users, test thoroughly:
Test #1: Happy path
- Trigger the workflow with your email
- Set all Wait nodes to 1 minute instead of days
- Run through entire sequence
- Check: All emails arrive, links work, personalization works
Test #2: Error cases
- Use an invalid email address
- Confirm error handling works
- Check that workflow doesn’t crash
Test #3: Conditional logic
- Trigger workflow
- Complete the “quick win” action in your app
- Verify correct branch is taken
Pro tip: Use n8n’s “Execute Workflow” feature to test individual sections without running the entire sequence.
Monitoring and Optimization
Once live, track these metrics weekly:
| Metric | Good Benchmark | How to Improve |
|---|---|---|
| Email #1 Open Rate | 60-80% | Better subject line, send from person not company |
| Email #2 Click Rate | 25-40% | Clearer CTA, reduce friction |
| Sequence Completion | 40-60% | Shorten sequence, improve timing |
| Trial-to-Paid | 15-25% | Better offer in Email #6-7, add urgency |
How to track conversions:
Add a webhook to your payment/upgrade flow:
// After successful upgrade
fetch('https://your-n8n-instance.com/webhook/conversion-tracking', {
method: 'POST',
body: JSON.stringify({
userId: user.id,
email: user.email,
plan: 'paid',
convertedAt: new Date().toISOString()
})
});
Then build a dashboard (Google Sheets or Data Studio) comparing:
- Users who went through onboarding vs didn’t
- Conversion rates by email open/click behavior
- Time-to-conversion
Cost Breakdown
Self-hosted n8n approach:
- n8n hosting: $10-20/month (DigitalOcean, Hetzner)
- SendGrid: Free for first 100 emails/day (3,000/month)
- Total: $10-20/month
- Cost per 1,000 users onboarded: $0.33 - $0.67
Email platform approach:
- ConvertKit: $29/month for up to 1,000 contacts
- ActiveCampaign: $49/month for up to 500 contacts
- Total: $29-49/month
- Cost per 1,000 users: $29-49
Savings: 95-98% cost reduction with n8n
Break-even point: If you onboard more than 30 users per month, n8n is cheaper.
Common Mistakes to Avoid
Mistake #1: Too many emails Sending 10+ emails in a 14-day trial overwhelms users. Stick to 5-7 max.
Mistake #2: Generic content “Here’s what our product can do” → Nobody cares. Focus on “Here’s what you can achieve.”
Mistake #3: Time-based only Sending Email #3 on day 3 regardless of whether they completed Email #2’s action. Use conditional logic.
Mistake #4: No error handling One failed email shouldn’t stop the entire sequence. Always set “Continue On Fail” to true.
Mistake #5: Not testing Typos, broken links, and incorrect personalization destroy credibility. Test everything before launching.
Frequently Asked Questions
Q: Can I use this with Mailchimp instead of SendGrid? A: Yes, n8n has a Mailchimp node. The setup is nearly identical—just swap SendGrid nodes for Mailchimp nodes.
Q: What if I have multiple products? A: Create separate workflows for each product, or add an IF node at the beginning that checks which product they signed up for and branches accordingly.
Q: How do I A/B test subject lines? A: Create two identical workflows with different subject lines. Use an IF node at the start to randomly assign 50% of users to each workflow. Track which performs better.
Q: Can I pause someone’s sequence if they upgrade early? A: Yes! Add a daily check (Schedule Trigger) that queries your database for users who upgraded, then use n8n’s API to deactivate their workflow instance.
Q: What’s the best time to send emails? A: For B2B: Tuesday-Thursday, 10am-2pm in recipient’s timezone. For B2C: Evenings and weekends. Test both and track open rates.
Next Steps
- Today: Set up your trigger webhook and Email #1
- This week: Build the complete 7-email sequence
- This month: Add conditional logic based on user behavior
- Next month: Analyze results and optimize low-performing emails
Want the complete n8n workflow template? Download it here: [link to workflow JSON]
Related Posts
- Best Email Service for n8n Automation (SendGrid vs Mailgun vs AWS SES)
- 7 Signs You’re Overpaying for Automation Tools
- Build a Receipt Email System with n8n and SendGrid
About the Author
Mike Holownych is an n8n automation expert and DashNex affiliate who specializes in customer onboarding automation. He’s built onboarding sequences for 50+ SaaS companies that have collectively onboarded over 100,000 trial users.
More Posts You'll Love
Based on your interests and activity