n8n Integration
Connect Status Check to your n8n workflows for automated domain and email validation.
Overview
The official Status Check n8n community node brings powerful domain and email validation capabilities to your n8n automation workflows.
What You Can Do
- Validate emails and domains directly in your workflows
- Create and manage leads with automatic validation
- Set up webhooks for event-driven automation
- Trigger workflows when validations complete or credits run low
- Filter and enrich lead data with validation results
Installation
Community Nodes (Recommended)
- Open your n8n instance
- Go to Settings → Community Nodes
- Click Install a community node
- Enter:
@status-check/n8n-nodes-status-check - Click Install
Manual Installation
For self-hosted n8n instances:
cd ~/.n8n/custom
npm install @status-check/n8n-nodes-status-check
Then restart n8n:
n8n restart
Setup
1. Get Your API Key
- Log in to Status Check
- Navigate to Profile or Account Settings
- Copy your API key (starts with
sk_live_...)
2. Add Credentials to n8n
- In n8n, add a new Status Check node to your workflow
- Click Create New Credentials
- Enter your API key
- Select environment: Production (or Test for local development)
- Click Save
The credentials will be automatically tested by calling the /v1/credits endpoint.
Available Nodes
Regular Nodes (Actions)
Status Check Node
The main node with three resources:
Validation Resource
Standalone validation without creating leads.
- Check Website: Validate domain status, detect parking, follow redirects
- Check Email: SMTP-based email deliverability validation
- Get Validation Job: Retrieve async validation job results
Lead Resource
Create and manage leads with validation.
- Create Lead: Create new lead with optional validation
- Get Lead: Retrieve lead by ID
- Update Lead: Update lead information
- List Leads: Query leads with filters
- Bulk Create: Create multiple leads at once
Webhook Resource
Manage webhook subscriptions.
- Create Webhook: Register webhook endpoints
- List Webhooks: Get all registered webhooks
- Delete Webhook: Remove webhook subscriptions
- Test Webhook: Send test events to webhooks
Trigger Nodes (Webhooks)
Automatically start workflows when events occur.
Validation Triggers:
- Validation Started Trigger: Fires when validation job begins
- Validation Complete Trigger: Fires when email/domain validation finishes
- Validation Failed Trigger: Fires when validation job fails
Credits Triggers:
- Credits Low Trigger: Fires when account credits fall below threshold
- Credits Depleted Trigger: Fires when credits are exhausted
Lead Triggers:
- Lead Created Trigger: Fires when new lead is created
- Lead Updated Trigger: Fires when lead is updated
- Lead Validated Trigger: Fires when lead validation completes
Example Workflows
Example 1: Email Validation from Form
Goal: Validate email addresses from form submissions and only add valid leads to your CRM.
[Webhook Trigger]
↓
[Status Check - Check Email]
↓
[Filter - Only Valid Emails]
↓
[CRM - Add Contact]
Configuration:
- Webhook Trigger: Receive form submission
- Status Check Node:
- Resource:
Validation - Operation:
Check Email - Email:
{{ $json.email }} - Return Details:
true
- Resource:
- Filter Node:
- Condition:
{{ $json.valid }} === true
- Condition:
- CRM Node: Add the validated contact
Example 2: Bulk Lead Validation
Goal: Validate a list of leads from Google Sheets and update the sheet with results.
[Schedule Trigger]
↓
[Google Sheets - Read]
↓
[Status Check - Bulk Create]
↓
[Wait for Validation Complete Trigger]
↓
[Google Sheets - Update]
Configuration:
- Schedule: Run daily at 9 AM
- Google Sheets: Read rows with leads
- Status Check Node:
- Resource:
Lead - Operation:
Bulk Create - Leads:
{{ $json.rows.map(row => ({
email: row.email,
firstName: row.firstName,
website: row.website
})) }} - Resource:
- Validation Complete Trigger: Catches webhook when validation finishes
- Google Sheets Update: Write validation results back
Example 3: Domain Parking Detection
Goal: Check if a domain is parked before scraping it.
[Manual Trigger]
↓
[Status Check - Check Website]
↓
[IF - Is Parked?]
├─ True → [Notify - Skip Domain]
└─ False → [Scrape Website]
Configuration:
- Manual Trigger: Start with domain input
- Status Check Node:
- Resource:
Validation - Operation:
Check Website - Website:
{{ $json.domain }} - Return Details:
true
- Resource:
- IF Node:
- Condition:
{{ $json.isParked }} === true
- Condition:
- If Parked: Send notification, skip scraping
- If Active: Proceed with web scraping
Example 4: Auto-Purchase Credits
Goal: Automatically purchase more credits when balance is low.
[Credits Low Trigger]
↓
[Stripe - Create Payment]
↓
[Slack - Send Notification]
Configuration:
- Credits Low Trigger: Automatically fires when credits < threshold
- Stripe Node: Create payment intent for credit package
- Slack Node: Notify team of auto-purchase
Example 5: Lead Enrichment Pipeline
Goal: Validate and enrich leads from multiple sources.
[Webhook - New Lead]
↓
[Status Check - Create Lead]
↓
[Validation Complete Trigger]
↓
[IF - Valid Email?]
├─ True → [Clearbit - Enrich] → [CRM - Add]
└─ False → [Google Sheets - Add to Review List]
Configuration:
- Webhook: Receive lead from form/API
- Status Check - Create Lead: Validate email and domain
- Validation Complete Trigger: Wait for validation
- IF Node: Check
{{ $json.emailValid }} - If Valid: Enrich with Clearbit, add to CRM
- If Invalid: Add to review list for manual check
Node Reference
Check Email Operation
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| String | Yes | Email address to validate | |
| Timeout | Number | No | Max seconds to wait (5-60, default: 30) |
| Return Details | Boolean | No | Return full validation details |
| Webhook URL | String | No | Callback URL for async results |
Output:
{
"email": "user@example.com",
"valid": true,
"catch_all": false,
"service": "Google",
"domain": "example.com",
"creditsDeducted": 2,
"creditsRemaining": 98
}
Check Website Operation
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| Website | String | Yes | Domain or URL to validate |
| Return Details | Boolean | No | Return full validation details |
Output:
{
"website": "example.com",
"status": "active",
"valid": true,
"httpStatus": 200,
"isParked": false,
"redirectChain": ["https://example.com"],
"creditsDeducted": 1,
"creditsRemaining": 99
}
Create Lead Operation
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| String | Yes | Lead email address | |
| Website | String | No | Lead website/domain |
| First Name | String | No | First name |
| Last Name | String | No | Last name |
| Company | String | No | Company name |
| Custom Fields | JSON | No | Additional custom data |
| Validate | Boolean | No | Trigger validation immediately (default: true). Validates email always, website if provided |
Output:
{
"id": "lead_abc123",
"email": "john@example.com",
"website": "example.com",
"firstName": "John",
"validationStatus": "verified",
"emailValid": true,
"websiteStatus": "active",
"createdAt": "2025-01-15T10:00:00Z"
}
Webhook Events
Available events for triggers:
| Event | Description | Use Case |
|---|---|---|
validation.started | Validation job begins | Track validation progress |
validation.complete | Validation finishes successfully | Process validated leads |
validation.failed | Validation job fails | Error handling, retry logic |
credits.low | Credits below threshold | Auto-purchase, notifications |
credits.depleted | Credits exhausted | Pause workflows, urgent alerts |
lead.created | New lead created | CRM sync, welcome emails |
lead.updated | Lead information updated | Update external systems |
lead.validated | Lead validation completes | Enrich validated leads |
Best Practices
1. Use Validation Resource for Standalone Checks
If you don't need lead management, use the Validation resource for faster, simpler validation:
✅ Good: Validation → Check Email
❌ Avoid: Lead → Create (if you only need validation)
2. Batch with Bulk Create
For multiple leads, use Bulk Create instead of looping:
✅ Good: Bulk Create with array of leads
❌ Avoid: Loop → Create Lead (slower, more API calls)
3. Handle Async Validations
Email validation may timeout on slow mail servers. Use webhooks or polling:
// Check if job ID returned
if ($json.jobId) {
// Wait and poll, or use Validation Complete Trigger
}
4. Filter Early in Workflows
Use validation results to filter early and save credits on downstream services:
Check Email → Filter Valid → Expensive API Call
5. Monitor Credit Balance
Set up Credits Low Trigger to avoid workflow interruptions:
Credits Low Trigger → Slack Alert → Auto-Purchase
Troubleshooting
Node Not Appearing in n8n
Solution:
- Restart n8n:
n8n restart - Check installation:
npm list @status-check/n8n-nodes-status-check - Verify n8n version compatibility (requires n8n v0.200.0+)
Invalid API Key Error
Solution:
- Verify API key from Account Settings
- Ensure key starts with
sk_live_for production - Check environment selection matches key type
Validation Timing Out
Solution:
- Increase timeout parameter (max: 60 seconds)
- Use Webhook URL for async results
- Use Validation Complete Trigger to catch results
Webhook Not Triggering
Solution:
- Ensure webhook is active in Status Check dashboard
- Check n8n webhook URL is publicly accessible
- Verify correct events are subscribed
- Test webhook using Test Webhook operation
Resources
Support
Need help with the n8n integration?
- Email: support@status-check.io
- Documentation: https://docs.status-check.io
- GitHub Issues: Report a bug