Package Information
Available Nodes
Documentation
n8n-nodes-parallel-workflows
ā” Version 0.4.3 - Expression support with improved UI!
This is an n8n community node that lets you execute multiple webhook URLs in parallel, perfect for orchestrating complex workflow patterns and dramatically improving performance.
Features
- š True Parallel Execution: Execute unlimited webhooks simultaneously
- š Simple Webhook URLs: Just paste URLs, one per line
- šÆ Flexible Modes: Simple mode or detailed manual configuration
- šŖ Error Resilience: Continue processing even if some webhooks fail
- š Multiple Aggregation Modes: Array, object, merged, or individual items
- ā” Performance Optimized: Optional concurrency limits and retry logic
- š Execution Tracking: Monitor progress with metadata and timing info
Prerequisites
Webhook Setup (Required)
Each workflow you want to execute in parallel must have a Webhook trigger node:
- Add a Webhook trigger to each sub-workflow
- Activate the workflows to generate webhook URLs
- Copy the webhook URLs (use production URLs for live execution)
- Paste the URLs into the Parallel Workflow Orchestrator
Installation
Via n8n UI
- Go to Settings > Community Nodes
- Search for
n8n-nodes-parallel-workflows - Click Install
- The node is ready to use - no credentials needed!
Manual Installation
# Navigate to your n8n custom nodes folder
cd ~/.n8n/custom
# Install the package
npm install n8n-nodes-parallel-workflows
# Restart n8n
Usage
Quick Start - Simple Mode
The easiest way to use the node:
- Add Webhook triggers to your sub-workflows
- Activate the sub-workflows to get webhook URLs
- Add Parallel Workflow Orchestrator to your main workflow
- Paste webhook URLs (one per line) in Simple mode
- Execute - all webhooks run simultaneously!
Example webhook URLs:
https://your-n8n.com/webhook/abc-def-ghi
https://your-n8n.com/webhook/jkl-mno-pqr
https://your-n8n.com/webhook/stu-vwx-yz
Manual Configuration Mode
For more control over each webhook:
- Set Execution Mode to "Manual Configuration"
- Click Add Workflow for each webhook
- For each webhook configure:
- Webhook URL: The full webhook URL
- Execution Name: Optional friendly name for results
- Input Data: Custom JSON data for this webhook
- Additional Settings: Timeout and retry options
Dynamic Mode - From Input Data
Pass webhook configurations through input data:
{
"workflows": [
{
"webhookUrl": "https://your-n8n.com/webhook/abc-123",
"executionName": "Analysis Task",
"inputData": {
"prompt": "Analyze sales data",
"region": "North America"
},
"timeout": 30,
"retryCount": 2
},
{
"webhookUrl": "https://your-n8n.com/webhook/def-456",
"executionName": "Report Generation",
"inputData": {
"format": "PDF",
"template": "executive"
}
}
]
}
Real-World Use Cases
1. Multiple AI API Calls in Parallel
Perfect for calling multiple AI services simultaneously:
Setup:
- Create workflows with Webhook triggers for each AI task
- Paste all webhook URLs into Parallel Orchestrator
- Execute - all AI calls happen simultaneously
Time Savings Example:
- Sequential: 6 workflows Ć 3 seconds each = 18 seconds
- Parallel: All 6 workflows = ~3 seconds total
- 6x faster!
2. Batch Data Processing
Process different data sources simultaneously:
- Configure webhooks for CSV processor, API fetcher, and Database queries
- All data sources are processed in parallel
- Results automatically combined based on your aggregation setting
3. Multi-Service Health Checks
Check multiple services at once:
- Create webhook-triggered health check workflows
- Set Result Aggregation to "Object (Named)"
- Get instant status of all services
Authentication (New in v0.4.0)
The node now supports authentication for secured webhook endpoints:
Authentication Methods
| Method | Description | Use Case |
|---|---|---|
| None | No authentication | Public webhooks |
| Header Auth | Custom header with API key | Most REST APIs |
| Bearer Token | Authorization: Bearer token | OAuth2, JWT tokens |
| Basic Auth | Username and password | Legacy systems |
Simple (Structured) Mode Features
Per-Webhook Authentication
Each webhook can have its own authentication settings:
- Select authentication type for each webhook
- Configure the required fields (token, username, etc.)
- Different webhooks can use different authentication methods
Global Authentication
Use the same authentication for all webhooks:
- Enable "Use Same Auth for All Webhooks"
- Configure authentication once
- All webhooks will use the same credentials
Dynamic Data with Expressions
Pass different data to each webhook using n8n expressions:
- Use the "Additional Data" field for each webhook
- Drag and drop fields from the input schema directly into the field
- Use expressions like
{{ $json.objectKey }}to reference input data - Enter JSON objects for multiple values:
{"key": "{{ $json.field }}", "custom": "value"} - Additional data is merged with main input (overrides on conflict)
Example Additional Data:
- Single expression:
{{ $json.pdfKey }} - JSON with expressions:
{"documentId": "{{ $json.pdfKey }}", "timestamp": "{{ $now }}"} - Plain value:
custom-value-123
Example Configurations
Header Authentication:
- Authentication: Header Auth
- Header Name:
X-API-Key - Token/Key:
your-api-key-here
Bearer Token:
- Authentication: Bearer Token
- Token/Key:
your-jwt-token-here
Basic Authentication:
- Authentication: Basic Auth
- Username:
user@example.com - Password:
secure-password
Configuration Options
Execution Modes
| Mode | Description | Best For |
|---|---|---|
| Simple | Paste webhook URLs (one per line) | Quick parallel execution |
| Manual | Configure each webhook individually | Custom settings per webhook |
| From Input | Use webhook list from data | Dynamic/programmatic execution |
Options
| Option | Type | Default | Description |
|---|---|---|---|
| Pass Input Data | Boolean | true | Send input data to all webhooks |
| Continue On Fail | Boolean | true | Continue if a webhook fails |
| Result Aggregation | Select | array | How to combine results |
Advanced Options
| Option | Type | Default | Description |
|---|---|---|---|
| Max Concurrent | Number | 0 | Limit concurrent executions (0 = unlimited) |
| Include Metadata | Boolean | false | Add execution timing and status |
| Global Timeout | Number | 300 | Maximum seconds for all webhooks |
Output Format Examples
Array Aggregation (Default)
{
"results": [
{
"success": true,
"webhookUrl": "https://your-n8n.com/webhook/abc-123",
"name": "Webhook_1",
"data": { /* webhook response */ }
},
{
"success": true,
"webhookUrl": "https://your-n8n.com/webhook/def-456",
"name": "Webhook_2",
"data": { /* webhook response */ }
}
]
}
Object Aggregation
{
"Webhook_1": {
"success": true,
"data": { /* webhook response */ }
},
"Webhook_2": {
"success": true,
"data": { /* webhook response */ }
}
}
Performance Tips
- Use Simple Mode when all webhooks need the same input data
- Set Max Concurrent if you have resource constraints
- Use appropriate timeouts to prevent hanging executions
- Enable Continue on Fail for non-critical webhooks
- Test webhook URLs independently before adding to orchestrator
Troubleshooting
Common Issues
Q: Webhooks aren't executing
- Ensure sub-workflows are activated
- Check webhook URLs are correct (use production URLs)
- Verify webhooks are accessible from your n8n instance
Q: Getting timeout errors
- Increase timeout values in Additional Settings
- Check if sub-workflows are taking longer than expected
- Increase Global Timeout in Advanced options
Q: Results are empty
- Ensure webhook workflows have a Respond to Webhook node
- Check that webhooks are returning data properly
Development
Building from Source
npm run build # Build the node
npm run dev # Watch mode for development
npm run lint # Check code style
npm run format # Format code
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new features
- Submit a pull request
License
MIT - See LICENSE file
Support
- Issues: GitHub Issues
- Author: Jez Dawes
- Email: jeremy@jezweb.net
- Company: Jezweb
Changelog
See CHANGELOG.md for full version history.
Latest Version (0.4.3)
- Improved Additional Data field UI - clean single-line input
- Expression support with drag-and-drop from input schema
- Supports both JSON objects and plain values
- Enhanced parsing for flexible data input
Built with ā¤ļø for the n8n community