Automated Email Verification & Onboarding with VerifiEmail, Gmail & Slack

Go to Workflow
0 views
Built by Jitesh Dugar Jitesh Dugar
Created on June 05, 2026

Description

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.

Nodes Used (4)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
Google Sheets
n8n-nodes-base.googleSheets
Slack
n8n-nodes-base.slack