n8n-nodes-vendemail
v1.0.3
Published
n8n community node for the Vend Email API — supports Domains, Forwarders, Safe/Unsafe Senders, and Tags with smart pagination and search
Downloads
421
Maintainers
Readme
n8n-nodes-vendemail
n8n community node for the Vend Email API — supports Domains, Forwarders, Safe/Unsafe Senders, and Tags with advanced pagination control.
n8n is a fair-code licensed workflow automation platform.
✨ New in v1.0.2
- ✅ Smart Pagination for Get All operations
- ✅ Page Control - Fetch specific pages (30 items per page)
- ✅ Max Pages Limiter - Avoid rate limits with configurable max pages
- ✅ Tested with 3000+ forwarders - Reliable bulk data fetching
✅ Verified Authentication
This node uses Bearer Token authentication, tested and verified with Vend Email API:
curl -X GET "https://www.vend.email/api/v1/domains" \
-H "Authorization: Bearer ve_token_YOUR_API_KEY" \
-H "Content-Type: application/json"Installation
Community Nodes (Recommended)
- Go to Settings > Community Nodes in your n8n instance
- Select Install
- Enter
n8n-nodes-vendemailin the Enter npm package name field - Agree to the risks and click Install
After installation, restart n8n to see the Vend Email node in your node palette.
Manual Installation
cd ~/.n8n/custom
npm install n8n-nodes-vendemailThen restart n8n:
n8n startCredentials
You need a Vend Email API Key to use this node:
- Log in to your Vend Email account
- Navigate to Account Settings > API Keys
- Generate a new API key (format:
ve_token_...) - Copy the API key to use in n8n credentials
Setting up credentials in n8n:
- Go to Credentials > New
- Search for Vend Email API
- Enter your API Key (starting with
ve_token_) - (Optional) Change the API URL if using a custom endpoint
- Click Save
Supported Resources & Operations
🏛️ Domain
- Get All: Retrieve all domains in your account
- Return All: Fetch all domains across multiple pages
- Page: Get a specific page (30 items per page)
- Max Pages: Limit total pages when using Return All
- Get: Get a specific domain by ID
Pagination Example:
// Get page 5 only
{
"resource": "domain",
"operation": "getAll",
"returnAll": false,
"page": 5
}
// Get all domains (max 100 pages = 3000 items)
{
"resource": "domain",
"operation": "getAll",
"returnAll": true,
"maxPages": 100
}📨 Forwarder
- Create: Create a new email forwarder
- Get All: List all forwarders with pagination control
- Return All: Auto-fetch all pages until completion
- Page: Fetch specific page number
- Max Pages: Safety limit for bulk fetching (default: 100, max: 500)
- Get: Get a specific forwarder by ID
- Update: Update an existing forwarder
- Delete: Delete a forwarder
Pagination Features:
- Each page returns 30 items
- Last page returns < 30 items
- Tested with 3000+ forwarders
Create Example:
{
"local_part": "sales",
"domain_id": 1,
"recipients": "[email protected], [email protected]",
"name": "Sales Team",
"title": "Sales Inquiries",
"description": "Forwards all sales emails to the team"
}Pagination Examples:
// Get page 26 (useful for testing last page)
{
"resource": "forwarder",
"operation": "getAll",
"returnAll": false,
"page": 26
}
// Get all forwarders (max 200 pages = 6000 items)
{
"resource": "forwarder",
"operation": "getAll",
"returnAll": true,
"maxPages": 200
}✅ Safe Sender (Whitelist)
- Create: Add an email to the whitelist
- Get All: List all safe senders with pagination
- Get: Get a specific safe sender by ID
- Delete: Remove an email from the whitelist
Use Case: Ensure important emails from trusted partners always get through.
⛔ Unsafe Sender (Blacklist)
- Create: Add an email to the blacklist
- Get All: List all unsafe senders with pagination
- Get: Get a specific unsafe sender by ID
- Delete: Remove an email from the blacklist
Use Case: Block spam or unwanted senders permanently.
🏷️ Tag
- Create: Create a new tag
- Get All: List all tags with pagination
- Get: Get a specific tag by ID
- Update: Update an existing tag
- Delete: Delete a tag
Use Case: Organize and categorize your forwarders.
Pagination Guide
Understanding API Pagination
Vend Email API returns 30 items per page:
- Page 1: Items 1-30 (URL:
/api/v1/forwarders) - Page 2: Items 31-60 (URL:
/api/v1/forwarders?page=2) - Last page: < 30 items (automatically detected)
Use Cases
1. Fetch Specific Page
When you need a specific range of items:
{
"returnAll": false,
"page": 10
}
// Returns: Items 271-3002. Get All Items (Small Dataset)
For accounts with < 3000 items:
{
"returnAll": true,
"maxPages": 100
}
// Returns: All items (stops automatically at last page)3. Get All Items (Large Dataset)
For accounts with 3000+ items:
{
"returnAll": true,
"maxPages": 500
}
// Returns: Up to 15,000 items (500 × 30)4. Safe Bulk Fetching
Avoid rate limits with conservative settings:
{
"returnAll": true,
"maxPages": 50
}
// Returns: Up to 1,500 items safelyPerformance Tips
- Default Max Pages: 100 (covers most use cases)
- Recommended Max: 200 for large accounts
- Rate Limit Safe: Set Max Pages to 50-100
- Processing Time: ~0.5s per page (estimate 50s for 100 pages)
Example Workflows
1. Create Email Forwarder for Support Team
Node Configuration:
{
"resource": "forwarder",
"operation": "create",
"localPart": "support",
"domainId": 1,
"recipients": "[email protected], [email protected]",
"additionalFields": {
"name": "Support Team",
"title": "Customer Support",
"description": "All customer support inquiries",
"tagsString": "support, priority"
}
}2. Bulk Export All Forwarders
Node Configuration:
{
"resource": "forwarder",
"operation": "getAll",
"returnAll": true,
"maxPages": 200
}Next Step: Connect to Google Sheets or CSV export node.
3. Add Trusted Partner to Whitelist
Node Configuration:
{
"resource": "safeSender",
"operation": "create",
"email": "[email protected]"
}4. Block Spam Domain
Node Configuration:
{
"resource": "unsafeSender",
"operation": "create",
"email": "[email protected]"
}5. Monitor Specific Page Range
Loop through pages 1-10:
// Use Loop node with counter 1-10
{
"resource": "forwarder",
"operation": "getAll",
"returnAll": false,
"page": "{{$json.counter}}"
}Common Use Cases
🏢 Business Email Management
- Create department-specific forwarders (sales@, support@, info@)
- Route emails to multiple team members
- Tag forwarders by priority or category
- Bulk export all forwarders for backup
🔒 Email Security
- Whitelist trusted business partners
- Blacklist known spam sources
- Manage sender reputation
- Audit all safe/unsafe senders
🤖 Automation Workflows
- Auto-create forwarders when new team members join
- Sync whitelist/blacklist with CRM
- Monitor and alert on new domains
- Scheduled backup of all forwarders
📊 Data Management
- Export all forwarders to CSV/Google Sheets
- Fetch specific page ranges for processing
- Paginated data sync with external systems
API Reference
This node implements the Vend Email API.
Base URL: https://www.vend.email/api/v1
Authentication: Bearer Token in Authorization header
Pagination: Query parameter ?page=N (N starts from 1)
Compatibility
- ✅ Tested with n8n version 1.x
- ✅ n8n API version: 1
- ✅ Node.js 14+
- ✅ TypeScript 5.3.3
- ✅ Handles 3000+ items efficiently
Development
Prerequisites
- Node.js (v14 or higher)
- npm
- n8n (installed globally or locally)
Setup
git clone https://github.com/hungtidus/n8n-nodes-vendemail.git
cd n8n-nodes-vendemail
npm installBuild
npm run buildThis will:
- Compile TypeScript files to JavaScript
- Copy icon to dist folder
- Generate declaration files
Local Development & Testing
# Link the package
npm link
# Go to n8n custom nodes directory
cd ~/.n8n/custom
# Link the package
npm link n8n-nodes-vendemail
# Start n8n
n8n startTesting Pagination
Test pagination with curl:
# Get page 1 (default)
curl -X GET "https://www.vend.email/api/v1/forwarders" \
-H "Authorization: Bearer YOUR_API_KEY"
# Get page 2
curl -X GET "https://www.vend.email/api/v1/forwarders?page=2" \
-H "Authorization: Bearer YOUR_API_KEY"
# Get last page (example: page 26)
curl -X GET "https://www.vend.email/api/v1/forwarders?page=26" \
-H "Authorization: Bearer YOUR_API_KEY"Testing Authentication
Test the API connection with curl:
curl -X GET "https://www.vend.email/api/v1/domains" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-vExpected response: HTTP 200 with JSON array of domains.
Linting
npm run lint
npm run lint:fixFormat Code
npm run formatTroubleshooting
Authentication Fails (401 Unauthorized)
Problem: API returns 401 error
Solution:
- Verify API key starts with
ve_token_ - Check API key is still valid in Vend Email dashboard
- Ensure no extra spaces in the API key field
Pagination Returns 750 Items Instead of All
Problem: Get All only returns 750 items (25 pages)
Solution:
- Increase Max Pages to 200 or higher
- Check if API has rate limiting
- Use Page mode to fetch specific ranges
Node Not Appearing in n8n
Problem: Can't find Vend Email node in palette
Solution:
- Restart n8n after installation
- Check
~/.n8n/nodesdirectory contains the package - Verify package.json n8n section is correct
Build Errors
Problem: TypeScript compilation fails
Solution:
# Clean and rebuild
rm -rf dist node_modules package-lock.json
npm install
npm run buildVersion History
1.0.2 (2026-03-08)
- ✅ NEW: Smart pagination for Get All operations
- ✅ NEW: Page parameter to fetch specific pages
- ✅ NEW: Max Pages limiter to control bulk fetching
- ✅ FIXED: Pagination now fetches all items correctly (tested with 3000+ forwarders)
- ✅ IMPROVED: Better performance with configurable page limits
- ✅ DOCS: Updated README with pagination guide
1.0.1 (2026-03-08)
- ✅ Bug fixes and stability improvements
1.0.0 (2026-03-08)
- ✅ Initial release
- ✅ Support for Domains, Forwarders, Safe/Unsafe Senders, and Tags
- ✅ Full CRUD operations for supported resources
- ✅ Verified Bearer Token authentication
- ✅ Comprehensive error handling
- ✅ TypeScript support
Resources
License
Author
Hung Nguyen
- GitHub: @hungtidus
- Email: [email protected]
Support
If you encounter any issues or have questions:
- Check the GitHub Issues
- Create a new issue if your problem isn't already listed
- Refer to the Vend Email API documentation
- Test authentication with curl commands in this README
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Contribution Guidelines
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Acknowledgments
- Built with n8n
- Powered by Vend Email API
- Inspired by the n8n community
Made with ❤️ for the n8n community
