Supern8n LogoSupern8n

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

  1. Trigger Nodes - Start the workflow (webhooks, schedules, app events)
  2. Action Nodes - Perform operations (send email, create record, etc.)
  3. Logic Nodes - Control flow (IF conditions, Switch, Merge)
  4. Data Nodes - Transform data (Set, Function, Code)
  5. 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

  1. Backup the original - Download a copy before making changes
  2. Test in a safe environment - Use test accounts and data
  3. Understand existing logic - Read node descriptions and settings
  4. Make incremental changes - Modify one thing at a time
  5. 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:

  1. Click the trigger node
  2. Update the cron expression or schedule settings
  3. Test by executing manually first

Webhook Triggers:

To change webhook URLs:

  1. Click the trigger node
  2. Copy the new webhook URL
  3. Update the URL in your external service
  4. Test with a sample payload

App Triggers (e.g., "When a new email arrives"):

  1. Click the trigger node
  2. Modify filter conditions (subject contains, from address, etc.)
  3. Adjust polling interval if needed
  4. 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:

  1. Add an Error Trigger node
  2. Connect error-prone nodes to the error trigger
  3. 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

  1. Click the "+" button on a connection or at the end
  2. Search for the node you want (e.g., "Slack", "Gmail", "HTTP Request")
  3. Configure the node:
    • Set credentials
    • Configure settings
    • Map input data
  4. Connect to existing nodes
  5. 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

  1. Identify the node to remove
  2. Check dependencies - What nodes depend on this node's output?
  3. Reconnect the workflow:
    • Connect the previous node to the next node
    • Or connect to an alternative path
  4. Delete the node
  5. 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:

  1. Add a Set Node at the start
  2. Set variables:
    {
      "companyName": "Acme Corp",
      "adminEmail": "admin@acme.com",
      "apiEndpoint": "https://api.acme.com"
    }
    
  3. 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

  1. Click "Execute Workflow" button
  2. Review each node's output:
    • Click on nodes to see data
    • Check for errors (red indicators)
    • Verify data looks correct
  3. 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:

  1. Workflow Settings → Logging
  2. Set to "Detailed"
  3. 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

  1. Review recent changes - What was the last modification?
  2. Check error messages - Click on red nodes for details
  3. Verify connections - Ensure all nodes are properly connected
  4. Test each node - Use "Execute Node" to isolate issues
  5. Restore from backup - If all else fails, revert to original

Data Not Flowing Correctly

  1. Check mappings - Verify field names match
  2. Inspect node output - Click nodes to see actual data
  3. Verify data types - String vs number vs array
  4. Check for null/undefined - Add fallback values
  5. Use Set node - Explicitly structure data

Credentials Not Working

  1. Recreate credentials - Delete and add fresh credentials
  2. Check permissions - Ensure API keys have required access
  3. Verify endpoint URLs - Confirm correct API URLs
  4. Test credentials - Use "Test" button in credential screen
  5. Check rate limits - Some APIs have usage limits

Need Help Customizing?

Self-Help Resources

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!

Still Need Help?

Our support team is here to assist you