New Customer Welcome Email Sequence Automation
Why This Automation Matters
Customer onboarding is crucial for building lasting relationships and reducing churn. A well-crafted welcome email sequence can:
- Increase customer engagement by up to 320% compared to single welcome emails
- Reduce support tickets by proactively providing helpful information
- Build brand loyalty through consistent, valuable communication
- Save time by eliminating manual follow-up tasks
- Improve customer lifetime value through strategic nurturing
This automation ensures every new customer receives a professional, timely welcome sequence that guides them through their first days with your business.
What You Need Before Starting
Required Tools & Accounts
- n8n instance (cloud or self-hosted)
- Email service (Gmail, Outlook, or SMTP provider)
- Customer database (Airtable, Google Sheets, or CRM)
- Trigger source (webhook, form submission, or database integration)
Required Information
- Customer data structure (name, email, purchase details)
- Welcome email templates and content
- Email sending credentials and permissions
- Timeline for email sequence (Day 0, Day 1, Day 7, etc.)
Preparation Steps
- Create email templates for each sequence step
- Set up your customer database with proper fields
- Configure email service authentication in n8n
- Test email deliverability and formatting
Complete Node-by-Node Build Instructions
Step 1: Create the Webhook Trigger
- Add a Webhook node as your starting point
- Set the HTTP Method to
POST - Configure the path as
/new-customer-welcome - Set Authentication to
None(or configure as needed) - Test the webhook URL to ensure it’s accessible
Expected Input:
{
"customerName": "John Doe",
"customerEmail": "john@example.com",
"purchaseDate": "2026-06-02",
"productName": "Premium Plan"
}
Step 2: Add Customer to Database
- Add an Airtable node (or your preferred database)
- Set Operation to
Create - Configure your base and table
- Map fields:
- Name:
{{ $json.customerName }} - Email:
{{ $json.customerEmail }} - Purchase Date:
{{ $json.purchaseDate }} - Product:
{{ $json.productName }} - Status:
Active
- Name:
Step 3: Send Immediate Welcome Email
- Add a Gmail node (or your email service)
- Set Operation to
Send - Configure:
- To:
{{ $json.customerEmail }} - Subject:
Welcome to [Your Business], {{ $json.customerName }}! - Message: Use your welcome email template
- Format:
HTML
- To:
Email Template Example:
<h1>Welcome, {{ $json.customerName }}!</h1>
<p>Thank you for choosing {{ $json.productName }}. We're excited to have you on board!</p>
<p>Here's what to expect next:</p>
<ul>
<li>Account setup instructions (arriving shortly)</li>
<li>Getting started guide (tomorrow)</li>
<li>Tips and best practices (in one week)</li>
</ul>
<p>If you have any questions, just reply to this email.</p>
Step 4: Schedule Follow-up Emails
- Add a Schedule Trigger node
- Set to run
Every Dayat 9:00 AM - Add an Airtable node to find customers needing follow-ups
- Use filter formula:
AND(Status = 'Active', DATETIME_DIFF(NOW(), {Purchase Date}, 'days') = 1)
Step 5: Send Day 1 Email
- Add an IF node to check if customers were found
- Configure condition:
{{ $json.length > 0 }} - Add Split in Batches node for multiple customers
- Add Gmail node for Day 1 email:
- Subject:
Getting Started with {{ $json.productName }} - Quick Setup Guide - Include setup instructions and helpful resources
- Subject:
Step 6: Schedule Weekly Check-in
- Add another Schedule Trigger for weekly emails
- Use filter:
DATETIME_DIFF(NOW(), {Purchase Date}, 'days') = 7 - Send Day 7 email with:
- Usage tips and best practices
- Customer success stories
- Link to support resources
Step 7: Add Error Handling
- Add IF nodes to check for email delivery failures
- Configure retry logic for failed sends
- Log errors to a separate Airtable table
- Set up admin notifications for persistent failures
Complete Workflow JSON
{
"nodes": [
{
"parameters": {
"path": "new-customer-welcome",
"options": {}
},
"name": "New Customer Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [240, 300]
},
{
"parameters": {
"operation": "create",
"base": "YOUR_BASE_ID",
"table": "Customers",
"fields": {
"mappingMode": "defineBelow",
"value": {
"Name": "={{ $json.customerName }}",
"Email": "={{ $json.customerEmail }}",
"Purchase Date": "={{ $json.purchaseDate }}",
"Product": "={{ $json.productName }}",
"Status": "Active"
}
}
},
"name": "Add to Customer Database",
"type": "n8n-nodes-base.airtable",
"typeVersion": 1,
"position": [460, 300]
},
{
"parameters": {
"operation": "send",
"message": {
"to": "={{ $json.customerEmail }}",
"subject": "Welcome to [Your Business], {{ $json.customerName }}!",
"message": "<h1>Welcome, {{ $json.customerName }}!</h1><p>Thank you for choosing {{ $json.productName }}. We're excited to have you on board!</p><p>Here's what to expect next:</p><ul><li>Account setup instructions (arriving shortly)</li><li>Getting started guide (tomorrow)</li><li>Tips and best practices (in one week)</li></ul><p>If you have any questions, just reply to this email.</p>",
"format": "html"
}
},
"name": "Send Welcome Email",
"type": "n8n-nodes-base.gmail",
"typeVersion": 1,
"position": [680, 300]
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * *"
}
]
}
},
"name": "Daily Email Check",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1,
"position": [240, 500]
},
{
"parameters": {
"operation": "list",
"base": "YOUR_BASE_ID",
"table": "Customers",
"filterByFormula": "AND(Status = 'Active', DATETIME_DIFF(NOW(), {Purchase Date}, 'days') = 1)"
},
"name": "Find Day 1 Customers",
"type": "n8n-nodes-base.airtable",
"typeVersion": 1,
"position": [460, 500]
},
{
"parameters": {
"conditions": {
"number": [
{
"value1": "={{ $json.length }}",
"operation": "larger",
"value2": 0
}
]
}
},
"name": "Check if customers found",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [680, 500]
},
{
"parameters": {
"batchSize": 1,
"options": {}
},
"name": "Split customers",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 1,
"position": [900, 400]
},
{
"parameters": {
"operation": "send",
"message": {
"to": "={{ $json.fields.Email }}",
"subject": "Getting Started with {{ $json.fields.Product }} - Quick Setup Guide",
"message": "<h1>Ready to get started, {{ $json.fields.Name }}?</h1><p>Now that you've had a day to settle in, let's get you set up for success with {{ $json.fields.Product }}.</p><p>Here's your quick setup guide:</p><ol><li>Complete your profile setup</li><li>Explore the main features</li><li>Check out our video tutorials</li></ol><p>Need help? We're here for you!</p>",
"format": "html"
}
},
"name": "Send Day 1 Email",
"type": "n8n-nodes-base.gmail",
"typeVersion": 1,
"position": [1120, 400]
}
],
"connections": {
"New Customer Webhook": {
"main": [
[
{
"node": "Add to Customer Database",
"type": "main",
"index": 0
}
]
]
},
"Add to Customer Database": {
"main": [
[
{
"node": "Send Welcome Email",
"type": "main",
"index": 0
}
]
]
},
"Daily Email Check": {
"main": [
[
{
"node": "Find Day 1 Customers",
"type": "main",
"index": 0
}
]
]
},
"Find Day 1 Customers": {
"main": [
[
{
"node": "Check if customers found",
"type": "main",
"index": 0
}
]
]
},
"Check if customers found": {
"main": [
[
{
"node": "Split customers",
"type": "main",
"index": 0
}
]
]
},
"Split customers": {
"main": [
[
{
"node": "Send Day 1 Email",
"type": "main",
"index": 0
}
]
]
}
}
}
FAQ
How can I customize the email timing for different customer segments?
You can modify the Airtable filter formulas to target different customer groups. For example, premium customers might receive emails on days 0, 1, 3, and 7, while basic customers receive them on days 0, 3, and 14. Add customer segment fields to your database and create separate scheduled triggers with segment-specific filters like AND(Status = 'Active', Segment = 'Premium', DATETIME_DIFF(NOW(), {Purchase Date}, 'days') = 3).
What should I do if emails are not being delivered?
First, check your email service authentication and ensure your sending limits aren’t exceeded. Add error handling nodes to catch failed deliveries and implement retry logic with exponential backoff. Monitor your sender reputation and consider using a dedicated email service like SendGrid or Mailgun for better deliverability. You can also add a “Failed Emails” table in Airtable to track and manually resolve delivery issues.
Can I add personalization based on the product purchased?
Yes! Create conditional email content based on the product field. Use IF nodes to check the product type and route customers to different email templates. For example: {{ $json.productName === 'Premium Plan' ? 'premium-welcome-template' : 'basic-welcome-template' }}. You can also create product-specific onboarding sequences with different email content, timing, and call-to-actions tailored to each product’s features and use cases.
Ready to transform your customer onboarding experience? Start automating with n8n Cloud and create professional welcome sequences that delight your customers from day one.