Automated Email Verification & Onboarding with VerifiEmail, Gmail & Slack
Go to WorkflowDescription
Customer Onboarding Email Verification
Automated email verification and welcome email workflow that validates new user signups, prevents fake emails, and creates a seamless onboarding experience with real-time team notifications.
Features
✅ Real-time email validation with VerifiEmail API
✅ Automatic data sanitization (lowercase, trim whitespace)
✅ Smart typo detection and correction suggestions
✅ Disposable email domain blocking
✅ Professional HTML welcome emails with responsive design
✅ Automatic duplicate prevention in Google Sheets logging
✅ Real-time Slack notifications for sales/marketing teams
✅ MX record and SMTP deliverability checks
What You Need
Required Accounts/APIs:
VerifiEmail API - For email validation (verifi.email)
Gmail account (or SMTP server) - For sending welcome emails
Google Sheets - For logging verified users
Slack workspace - For team notifications (optional but recommended)
Setup Instructions
Create Google Sheet
Create new spreadsheet named "Verified Users"
Add headers: Name | Email | Status | Verified At | Original Email | Validation Score
Connect Credentials
Add VerifiEmail API key in n8n credentials
Connect Gmail via OAuth2 (enable 2FA, generate app password if needed)
Connect Google Sheets via OAuth2
Connect Slack workspace via OAuth2
Customize Email Template
Open "Personalize Welcome Email" node
Replace "Your Company" with your brand name (appears 3 times)
Update CTA URLs:
yourapp.com/dashboard → Your actual dashboard URL
yourapp.com/getting-started → Your docs/guide URL
yourapp.com/support → Your support page URL
Modify colors: Purple gradient #667eea to #764ba2 (line 37)
Configure Slack Channel
Create #new-signup channel in Slack (or use existing)
Update channel in "Team Notification" node
Test Workflow
Activate workflow
Copy webhook URL from Webhook node
Test with: curl -X POST [webhook-url] -H "Content-Type: application/json" -d '{"name":"Test User","email":"[email protected]"}'
Integrate with Your Signup Form
Point form submission to webhook URL
Ensure payload includes name and email fields
Input Format
Send POST request to webhook with this JSON:
{
"name": "John Doe",
"email": "[email protected]"
}
The workflow handles various input formats (nested in body field, query params, etc.) and sanitizes automatically.
Output
After execution, you'll get:
Email validated via VerifiEmail API with deliverability score
Welcome email sent to user with personalized greeting and CTAs
User logged to Google Sheets with timestamp and validation details
Slack notification sent to team with user details and status
Invalid emails blocked with typo correction suggestions prepared
For Valid Emails (~85-90%):
Professional HTML welcome email delivered
Entry added to "Verified Users" sheet
Real-time Slack alert to #new-signup channel
For Invalid Emails (~10-15%):
Workflow stops with error message
No email sent (prevents bounces)
Typo suggestion prepared (e.g., gmial.com → gmail.com)
Customization
Change Email Design:
Edit the "Personalize Welcome Email" node HTML:
Colors**: Change gradient in line 37: background: linear-gradient(135deg, #667eea 0%, #764ba2 100%)
Logo**: Add `` tag in header section
Buttons**: Modify CTA text and links in lines 45-65
Footer**: Update copyright year and company name
Modify Validation Rules:
In "Prepare Correction Email" node, add more typo patterns:
const commonTypos = {
'gmial': 'gmail',
'gmai': 'gmail',
// Add your custom patterns:
'yourdomain': 'yourcorrectdomain'
}
Enable Correction Email Sending:
Replace "Stop and Error" node with Gmail "Send Email" node:
Connect from "Prepare Correction Email"
Use {{ $json.email }} as recipient
Use {{ $json.emailBody }} as message
User receives helpful correction suggestion instead of silent failure
Add More Notification Channels:
After "Log Valid Users" node, add:
Discord webhook for team notifications
Microsoft Teams connector
Email to sales@ or support@
Custom webhook to your CRM
Log Invalid Attempts:
Add Google Sheets node after "Prepare Correction Email":
Create "Invalid Attempts" tab in same spreadsheet
Log: Name, Email, Reason, Suggestion, Timestamp
Analyze patterns weekly for form improvements
Troubleshooting
"undefined" error in Data Sanitization:
Check webhook payload structure
Verify name and email fields are present
Test with the debug code provided in sticky notes
All emails marked as invalid:
Verify VerifiEmail API key is active
Test API directly at verifi.email dashboard
Welcome emails not sending:
Confirm Gmail OAuth2 is connected (check for expired tokens)
Verify sending limits not exceeded
Check spam folder if testing with personal email
Review Gmail "Sent" folder for delivery confirmation
No Slack notifications:
Verify OAuth2 connection is active
Check bot has permission to post in #new-signup channel
Confirm channel ID is correct
Test Slack credentials in n8n
Duplicate entries in Google Sheets:
Verify "Email" is set as matching column
Confirm operation is "Append or Update" not just "Append"
Check Sheet1 has the exact column names expected
High validation failure rate:
Review invalid emails in execution logs
Check for form submission issues (bots, testing)
Verify VerifiEmail API is not blocking legitimate domains
Performance Optimization
For high-volume signups (>100/day):
Switch Slack notifications to hourly digest
Implement rate limiting on webhook
Consider caching frequent domain validations
Use Google Workspace for higher email sending limits
Maintenance
Weekly:
Check VerifiEmail API usage and quota
Review Slack notifications for anomalies
Scan Google Sheets for data quality
Test with sample signup
Monthly:
Archive old Google Sheets data (>90 days)
Review invalid email patterns
Update email template if needed
Audit credential security
Support
For issues or questions, visit the n8n community forum.