Workflow Customization
Modify workflows to fit your specific needs
Workflow Customization
Learn how to customize Supern8n workflows to perfectly match your unique business needs and processes.
Understanding Workflow Structure
Before customizing, it's important to understand how n8n workflows are structured:
Key Components
- Trigger Nodes - Start the workflow (webhooks, schedules, app events)
- Action Nodes - Perform operations (send email, create record, etc.)
- Logic Nodes - Control flow (IF conditions, Switch, Merge)
- Data Nodes - Transform data (Set, Function, Code)
- Connections - Link nodes together in sequence or parallel
Workflow Flow
Workflows execute from left to right:
Trigger → Action → Logic → Action → Output
Data flows through connections, with each node receiving input from the previous node and passing output to the next.
Safe Customization Practices
Before You Start
- Backup the original - Download a copy before making changes
- Test in a safe environment - Use test accounts and data
- Understand existing logic - Read node descriptions and settings
- Make incremental changes - Modify one thing at a time
- Test after each change - Verify nothing breaks
Common Customization Areas
1. Changing Trigger Conditions
Schedule Triggers:
Original: Run every day at 9 AM
Customized: Run every Monday at 8 AM
How to change:
- Click the trigger node
- Update the cron expression or schedule settings
- Test by executing manually first
Webhook Triggers:
To change webhook URLs:
- Click the trigger node
- Copy the new webhook URL
- Update the URL in your external service
- Test with a sample payload
App Triggers (e.g., "When a new email arrives"):
- Click the trigger node
- Modify filter conditions (subject contains, from address, etc.)
- Adjust polling interval if needed
- Test the trigger event
2. Updating Data Mappings
Data mappings connect output from one node to input in another.
Finding Mappings:
- Look for expressions like
{{ $json["fieldName"] }} - These reference data from previous nodes
Customizing Mappings:
// Original mapping
{{ $json["email"] }}
// Customized - with fallback
{{ $json["email"] || $json["contact_email"] }}
// Customized - transformed
{{ $json["first_name"] + " " + $json["last_name"] }}
Common mapping changes:
- Different field names from your source
- Adding default values
- Combining multiple fields
- Formatting data (dates, numbers, text)
3. Modifying Node Settings
Each node has customizable settings:
Email Node Example:
- Change recipient addresses
- Update email subject/body
- Add CC/BCC recipients
- Attach different files
Database Node Example:
- Change table names
- Update column mappings
- Modify query conditions
- Adjust batch sizes
API Node Example:
- Change endpoints
- Update request parameters
- Modify headers
- Adjust authentication
4. Adding Logic and Conditions
IF Nodes:
Control workflow paths based on conditions:
IF condition is true → Do action A
ELSE → Do action B
Common condition examples:
{{ $json["status"] === "active" }}{{ $json["amount"] > 100 }}{{ $json["email"].includes("@company.com") }}
Switch Nodes:
Route to different paths based on multiple conditions:
Switch on {{ $json["priority"] }}:
- Case "high" → Urgent process
- Case "medium" → Standard process
- Case "low" → Batch process
5. Adding Error Handling
Protect your workflows with error handling:
Try-Catch Pattern:
- Add an Error Trigger node
- Connect error-prone nodes to the error trigger
- Define what to do when errors occur:
- Send notification
- Log to database
- Retry the operation
- Stop and alert
Example Error Handling:
Main workflow runs → If error occurs →
→ Send Slack alert
→ Log error to Google Sheets
→ Email admin
Adding New Nodes
Why Add Nodes?
- Extend functionality - Add steps the original workflow doesn't have
- Integrate more services - Connect additional apps
- Add notifications - Alert when workflow completes
- Include logging - Track workflow execution
How to Add Nodes
- Click the "+" button on a connection or at the end
- Search for the node you want (e.g., "Slack", "Gmail", "HTTP Request")
- Configure the node:
- Set credentials
- Configure settings
- Map input data
- Connect to existing nodes
- Test the new node
Popular Nodes to Add
Notifications:
- Slack - Team notifications
- Discord - Channel messages
- Email - Send status updates
Logging:
- Google Sheets - Execution log
- Airtable - Structured logging
- HTTP Request - Send to logging service
Data Processing:
- Function Node - Custom JavaScript
- Code Node - Python, JavaScript code
- Set Node - Transform/rename fields
Removing Nodes
Sometimes you don't need all the functionality in a workflow.
Safe Removal Process
- Identify the node to remove
- Check dependencies - What nodes depend on this node's output?
- Reconnect the workflow:
- Connect the previous node to the next node
- Or connect to an alternative path
- Delete the node
- Test thoroughly - Ensure workflow still works
Nodes Safe to Remove
- ✅ Notification nodes (if you don't need alerts)
- ✅ Logging nodes (if you don't need logs)
- ✅ Optional data enrichment nodes
- ✅ Alternative path nodes (keep only the path you need)
Be Careful Removing
- ⚠️ Data transformation nodes (may break downstream nodes)
- ⚠️ Credential setup nodes (required for auth)
- ⚠️ Core logic nodes (workflow may not work)
Advanced Customizations
Using JavaScript in Function Nodes
Function nodes let you write custom JavaScript:
// Access input data
const inputData = $input.all();
// Process data
const processedData = inputData.map(item => {
return {
// Your custom logic
fullName: `${item.json.firstName} ${item.json.lastName}`,
email: item.json.email.toLowerCase(),
timestamp: new Date().toISOString()
};
});
// Return output
return processedData;
Working with Expressions
n8n expressions use double curly braces:
// Access current node data
{{ $json["field"] }}
// Access data from specific node
{{ $node["NodeName"].json["field"] }}
// Access environment variables
{{ $env.API_KEY }}
// Use JavaScript functions
{{ $json["text"].toUpperCase() }}
{{ new Date().toISOString() }}
{{ Math.round($json["amount"] * 1.1) }}
Using Variables
Store values to reuse throughout your workflow:
- Add a Set Node at the start
- Set variables:
{ "companyName": "Acme Corp", "adminEmail": "admin@acme.com", "apiEndpoint": "https://api.acme.com" } - Reference later:
{{ $node["Variables"].json["companyName"] }}
Handling Multiple Items
Workflows can process multiple items at once:
Single Item Processing:
{{ $json["email"] }} // Processes one item
Multiple Items:
// In a Function node
items.forEach(item => {
// Process each item
});
Split into Batches:
Use Split In Batches node to process large datasets:
- Set batch size (e.g., 100 items)
- Workflow loops through batches
- Prevents timeouts and rate limits
Testing Your Customizations
Manual Testing
- Click "Execute Workflow" button
- Review each node's output:
- Click on nodes to see data
- Check for errors (red indicators)
- Verify data looks correct
- Test edge cases:
- Empty data
- Missing fields
- Maximum values
- Error conditions
Debugging Tips
Use the Debug Panel:
- View execution timeline
- See data at each step
- Identify where errors occur
Add Temporary Nodes:
- Add a Set Node to inspect data
- Add a Stop and Error node to pause execution
- Add a No Op node as a placeholder
Enable Detailed Logging:
- Workflow Settings → Logging
- Set to "Detailed"
- Review execution logs
Common Customization Examples
Example 1: Change Email Recipients
Original:
Send to: sales@company.com
Customized:
Send to: {{ $json["assigned_user_email"] }}
CC: manager@company.com
Example 2: Filter by Custom Criteria
Add an IF node:
Condition:
{{ $json["amount"] > 1000 && $json["status"] === "new" }}
True Path: Send to high-priority queue False Path: Continue standard process
Example 3: Add Custom Fields
Use a Set node to add fields:
{
"original_data": "{{ $json }}",
"processed_at": "{{ new Date().toISOString() }}",
"processed_by": "automation-bot",
"custom_tag": "{{ $json["category"] }}-{{ $json["priority"] }}"
}
Example 4: Connect Additional Services
Original workflow: Gmail → Google Sheets
Customized: Gmail → Google Sheets → Slack notification
Add Slack node:
Message: New lead: {{ $json["name"] }} - {{ $json["email"] }}
Channel: #sales
Best Practices
Do's ✅
- Document your changes - Add notes to modified nodes
- Use descriptive node names - "Send Welcome Email" not "Send Email 1"
- Test incrementally - Test after each change
- Keep backups - Download original and customized versions
- Use consistent naming - Fields, variables, node names
- Add error handling - Expect things to go wrong
- Comment your code - In Function/Code nodes
Don'ts ❌
- Don't remove nodes without testing - May break workflow
- Don't hardcode sensitive data - Use credentials and environment variables
- Don't skip testing - Always test customizations
- Don't modify everything at once - Change incrementally
- Don't ignore warnings - Red/yellow indicators mean issues
Troubleshooting Customizations
Workflow Breaks After Changes
- Review recent changes - What was the last modification?
- Check error messages - Click on red nodes for details
- Verify connections - Ensure all nodes are properly connected
- Test each node - Use "Execute Node" to isolate issues
- Restore from backup - If all else fails, revert to original
Data Not Flowing Correctly
- Check mappings - Verify field names match
- Inspect node output - Click nodes to see actual data
- Verify data types - String vs number vs array
- Check for null/undefined - Add fallback values
- Use Set node - Explicitly structure data
Credentials Not Working
- Recreate credentials - Delete and add fresh credentials
- Check permissions - Ensure API keys have required access
- Verify endpoint URLs - Confirm correct API URLs
- Test credentials - Use "Test" button in credential screen
- Check rate limits - Some APIs have usage limits
Need Help Customizing?
Self-Help Resources
- n8n Documentation - docs.n8n.io
- n8n Community Forum - community.n8n.io
- Node Documentation - Click "?" in each node
- Expression Reference - docs.n8n.io/expressions
Supern8n Support
- 📧 Email - hello@supern8n.com
- 💬 Live Chat - Weekdays 9am-5pm EST
- 🎓 Customization Guides - Check our blog
Professional Services
Need advanced customization?
- Custom Development - We build custom workflows
- Training - Learn to customize workflows yourself
- Consulting - Get expert advice on automation strategy
Contact: hello@supern8n.com
Next Steps
Happy customizing!
Related Help Topics
More resources that might help
Still Need Help?
Our support team is here to assist you