n8n Execute Sub-workflow Node - Tutorial, Examples, Best Practices
🔗
Flow Control Node

n8n Execute Sub-workflow Node

Master the n8n Execute Sub-workflow node for modular automation. Learn to call workflows from workflows, pass data, handle errors, and build reusable automation components.

Your 200-node workflow has become impossible to maintain, debug, or explain to anyone. Every change risks breaking something else. Testing requires running the entire thing. Good luck finding that one node causing the issue buried in a sprawling canvas.

This is the monolithic workflow trap. The Execute Sub-workflow node is your escape route.

What This Node Does

The Execute Sub-workflow node calls one workflow from another. Instead of one massive workflow doing everything, you build smaller, focused workflows that handle specific tasks.

A parent workflow orchestrates them, calling each sub-workflow as needed. Think microservices, but for automation.

Why It Matters

Complex processes become manageable. Reusable components eliminate duplicate logic.

Memory issues disappear because each sub-workflow executes in its own context. And debugging? You test each piece independently.

The Modular Architecture Advantage

n8n provides over 400 built-in nodes. But workflow organization is a skill those nodes cannot teach.

As automation requirements grow, the difference between maintainable systems and technical debt comes down to architecture decisions.

Sub-workflows let you:

  • Break complex processes into focused, testable components
  • Reuse common logic across multiple parent workflows
  • Isolate memory usage for heavy processing tasks
  • Simplify debugging by testing components independently
  • Create cleaner, more readable workflow canvases

What You’ll Learn

  • When sub-workflows help versus when they add complexity
  • How the two-node system works (caller and trigger)
  • Three input data modes and when to use each
  • How to pass data between parent and sub-workflows
  • The Wait for Completion option and async patterns
  • Error handling strategies for robust sub-workflow chains
  • Common issues and exactly how to fix them
  • Real-world patterns you can adapt immediately

When to Use Sub-workflows

Before creating sub-workflows everywhere, understand when they genuinely help versus when they add overhead.

ScenarioUse Sub-workflow?Reasoning
Workflow exceeds 50+ nodesYesImproves maintainability and readability
Same logic appears in multiple workflowsYesCentralize to eliminate duplication
Processing large datasets causing memory issuesYesMemory isolation per sub-workflow execution
Need to test components independentlyYesSub-workflows can run and test alone
Simple linear workflow under 20 nodesNoSub-workflows add complexity without benefit
One-time logic that won’t be reusedNoKeep it inline
Need real-time data from sub-workflowDepends”Wait for Completion” adds latency
Async fire-and-forget taskYesSub-workflow handles independently

Key Benefits

Modularity: Each sub-workflow handles one responsibility. An email notification sub-workflow only sends emails. A data validation sub-workflow only validates data. Changes to one don’t affect others.

Memory isolation: When a sub-workflow completes, n8n releases its memory. For batch processing large datasets, this prevents the “heap out of memory” errors that plague monolithic workflows.

Reusability: Build once, call from anywhere. Your standardized error notification sub-workflow works for every parent workflow that needs it.

Cleaner canvas: Parent workflows show high-level orchestration logic. Implementation details live in sub-workflows, keeping the main canvas readable.

Independent testing: Test and debug sub-workflows in isolation before integrating them into parent workflows.

Important note: Sub-workflow executions do not count against your n8n Cloud plan’s execution limits. Only the parent workflow execution counts. This makes sub-workflows cost-effective for breaking up complex processes.

Understanding the Two-Node System

Sub-workflows require two cooperating nodes (see official n8n sub-workflow documentation for complete details):

  1. Execute Sub-workflow node (in the parent workflow): Calls the sub-workflow and passes input data
  2. Execute Sub-workflow Trigger node (in the sub-workflow): Receives the call and input data

How Data Flows

Parent Workflow                          Sub-Workflow
─────────────────                        ─────────────
[Previous Node]                          [Execute Sub-workflow Trigger]
      │                                           │
      ▼                                           ▼
[Execute Sub-workflow] ──── data ────▶  [Processing Nodes...]
      │                                           │
      │                                           ▼
      │◀──────────── return data ────── [Final Node Output]


[Next Node]

The Execute Sub-workflow node sends data to the trigger. The sub-workflow processes it. The final node’s output returns to the Execute Sub-workflow node in the parent. The parent then continues with that returned data.

The Two Workflows

Parent workflow: Contains the Execute Sub-workflow node. Orchestrates when and how sub-workflows run. Receives returned data.

Sub-workflow: Starts with Execute Sub-workflow Trigger. Cannot be triggered by schedules or webhooks independently (unless you add those triggers too). Returns data from its final node.

This separation creates a clean contract: the parent decides what data to send, the sub-workflow decides what to do with it and what to return.

Setting Up the Sub-workflow (Trigger Node)

Every sub-workflow must start with the Execute Sub-workflow Trigger node. This node receives data from parent workflows and defines what inputs the sub-workflow expects.

Adding the Trigger

  1. Create a new workflow
  2. Click + to add a node
  3. Search for “Execute Sub-workflow Trigger”
  4. Select the node (displays as “When Executed by Another Workflow” on the canvas)

Input Data Modes

The trigger node offers three modes for handling incoming data. Your choice affects how strictly the sub-workflow validates inputs.

ModeDescriptionBest For
Define using fields belowSpecify exact field names and typesStrict contracts, predictable data
Define using JSON exampleProvide sample JSON structureComplex nested objects
Accept all dataNo validation, accept anythingFlexible utilities, rapid prototyping

Define Using Fields Below

Choose this mode when you want explicit control over inputs. You define each field’s name and data type. The Execute Sub-workflow node in parent workflows automatically displays these fields for mapping.

Configuration:

  1. Set Input Data Mode to “Define using fields below”
  2. Click Add Field
  3. Enter field name (e.g., customerId)
  4. Select data type (String, Number, Boolean, Object, Array)
  5. Repeat for all required inputs

Example fields:

Field: customerId    Type: String
Field: orderAmount   Type: Number
Field: items         Type: Array

This creates a clear contract. Parent workflows see exactly what the sub-workflow expects.

Define Using JSON Example

Choose this mode for complex, nested data structures. Provide a sample JSON object that demonstrates the expected shape.

Configuration:

  1. Set Input Data Mode to “Define using JSON example”
  2. Enter example JSON:
{
  "customer": {
    "id": "cust_123",
    "email": "[email protected]",
    "tier": "premium"
  },
  "order": {
    "items": [
      { "sku": "ABC", "qty": 2 }
    ],
    "total": 99.99
  }
}

n8n infers the structure from your example. Parent workflows must provide data matching this shape.

Accept All Data

Choose this mode when the sub-workflow handles varying inputs or when you need maximum flexibility during development.

Configuration:

  1. Set Input Data Mode to “Accept all data”
  2. No additional configuration needed

Caution: With this mode, the sub-workflow receives whatever the parent sends. You must handle missing fields or unexpected data types within the sub-workflow’s logic. Use If nodes or the Code node to validate inputs.

Calling a Sub-workflow (Execute Node)

The Execute Sub-workflow node in the parent workflow calls the sub-workflow and passes data. Multiple options exist for specifying which workflow to call.

Adding the Execute Sub-workflow Node

  1. In your parent workflow, click + to add a node
  2. Search for “Execute Sub-workflow”
  3. Click to add it

Specifying the Sub-workflow

Four methods exist for identifying which workflow to call:

From List (Database)

Select from workflows saved in your n8n instance:

  1. Set Source to “Database”
  2. Set Workflow to “From list”
  3. Choose the sub-workflow from the dropdown

This is the simplest method for workflows stored in the same n8n instance.

By ID

Reference the workflow by its unique identifier:

  1. Set Source to “Database”
  2. Set Workflow to “By ID”
  3. Enter the workflow ID (found in the workflow’s URL: /workflow/123)

Use this when the workflow ID comes from a variable or when you need dynamic workflow selection.

By URL

Call a workflow via its webhook URL:

  1. Set Source to “Database”
  2. Set Workflow to “By URL”
  3. Enter the workflow’s webhook URL

Useful for calling workflows on different n8n instances or when using webhook-based triggers.

From File

Load a workflow definition from a local file:

  1. Set Source to “Local File”
  2. Provide the file path to a workflow JSON file

Primarily used for testing or specialized deployment scenarios.

Execution Modes

The node offers two execution modes that control how it handles multiple input items:

ModeBehaviorUse Case
Run once with all itemsSub-workflow receives all items in one executionBatch processing, aggregations
Run once for each itemSub-workflow runs separately per itemPer-record processing, parallel execution

Run once with all items: The sub-workflow executes once, receiving an array of all input items. Useful when the sub-workflow needs to process items together, such as calculating totals or comparing records.

Run once for each item: The sub-workflow executes multiple times, once per input item. Each execution processes one item independently. This enables parallel processing when combined with async execution.

Wait for Sub-Workflow Completion

This critical option controls whether the parent workflow pauses for the sub-workflow to finish.

Enabled (default): The parent workflow waits. When the sub-workflow completes, its output data flows to the next node in the parent. Use this when you need the sub-workflow’s results.

Disabled: The parent workflow continues immediately without waiting. The sub-workflow runs asynchronously. Use this for fire-and-forget tasks like sending notifications or logging.

Example pattern for async:

[Trigger] → [Process Data] → [Execute Sub-workflow (no wait)] → [Return Response]

                                      └──▶ (async) [Send Email Sub-workflow]

The parent returns a response immediately while the email sub-workflow runs in the background.

Mapping Inputs

When your sub-workflow uses “Define using fields below” input mode, the Execute Sub-workflow node displays those fields automatically. Map data from previous nodes:

customerId: {{ $json.customer.id }}
orderAmount: {{ $json.total }}
items: {{ $json.lineItems }}

For “Accept all data” mode, the entire output from the previous node passes to the sub-workflow. No mapping configuration needed.

Passing Data Between Workflows

Understanding how data moves between parent and sub-workflow prevents the most common issues users encounter.

Input Data Flow

Data passes from the Execute Sub-workflow node to the Execute Sub-workflow Trigger node. The trigger node outputs this data for the sub-workflow to process.

In the sub-workflow, access input data with standard expressions:

// Access specific field (when using defined fields)
{{ $json.customerId }}

// Access full input item
{{ $json }}

// Access multiple items (Run once with all items mode)
{{ $input.all() }}

Return Data Flow

The sub-workflow’s return data comes from whatever node connects directly to the end of the workflow. The last node’s output becomes the return value.

Critical rule: Only the final node’s output returns to the parent. Intermediate nodes’ data does not automatically return.

Correct pattern:

[Trigger] → [Process] → [Transform] → [Final Output Node]

                                              └── This node's data returns to parent

To return specific data, use an Edit Fields node at the end to shape exactly what the parent receives.

Common Data Passing Patterns

Pattern 1: Process and return transformed data

Sub-workflow: [Trigger] → [HTTP Request] → [Code: Transform] → [Edit Fields: Shape Output]

The Edit Fields node returns only the fields the parent needs.

Pattern 2: Aggregate multiple items

Sub-workflow: [Trigger] → [Loop] → [Process Each] → [Aggregate: Summary]

The Aggregate or Code node combines results into a single return item.

Pattern 3: Conditional return

Sub-workflow: [Trigger] → [If: Condition] → [Success Path] OR [Error Path] → [Merge] → [Return]

Use Merge to combine paths before returning, ensuring consistent output structure.

Data Contract Best Practices

  1. Document expected inputs: Add notes to the trigger node describing required fields
  2. Validate early: Check for required fields at the start of sub-workflow
  3. Shape outputs explicitly: Use Edit Fields before returning to ensure consistent structure
  4. Handle empty inputs: Check for empty arrays when receiving multiple items
// In Code node at start of sub-workflow
const items = $input.all();

if (items.length === 0) {
  return [{
    json: {
      success: false,
      error: 'No items received'
    }
  }];
}

// Continue processing...

Creating Sub-workflows from Existing Nodes

n8n provides shortcuts for converting existing workflow sections into sub-workflows, saving time when refactoring.

Create a Sub-workflow from the Node Panel

  1. Add an Execute Sub-workflow node
  2. In the Source dropdown, select “Database”
  3. In the Workflow dropdown, select “Create a sub-workflow”
  4. A new workflow opens with the Execute Sub-workflow Trigger already added
  5. Build your sub-workflow logic
  6. Save the sub-workflow
  7. Return to the parent; the node now references the new sub-workflow

Extract Nodes via Context Menu

Convert existing nodes into a sub-workflow:

  1. Select multiple nodes on the canvas (Shift+click or drag to select)
  2. Right-click to open context menu
  3. Select “Convert to sub-workflow”
  4. n8n creates a new workflow containing the selected nodes
  5. The original nodes are replaced with an Execute Sub-workflow node
  6. Save both workflows

This method preserves your existing logic while creating modular structure.

When to Refactor vs Build Fresh

Refactor existing nodes when:

  • The logic already works correctly
  • Nodes naturally form a cohesive unit
  • You want to reuse this exact logic elsewhere

Build fresh when:

  • Existing logic needs redesign anyway
  • The sub-workflow should have cleaner contracts
  • Current nodes have workflow-specific dependencies

Refactoring saves time but may carry over technical debt. Building fresh takes longer but produces cleaner architecture.

Error Handling

Robust sub-workflow implementations handle errors gracefully. Without proper error handling, failures cascade unpredictably. n8n provides several mechanisms for managing errors (see n8n error handling documentation for foundational concepts).

Errors in Sub-workflows Block Parent Execution

By default, if a sub-workflow throws an error, the parent workflow stops at the Execute Sub-workflow node. The parent’s error workflow (if configured) triggers.

This behavior protects data integrity but requires explicit error handling for resilient systems.

Continue on Fail Option

Enable this to let the parent continue even when the sub-workflow fails:

  1. Open the Execute Sub-workflow node
  2. Click Settings (gear icon)
  3. Enable Continue On Fail

When enabled, failures return an error object instead of stopping:

// In the node after Execute Sub-workflow
{{ $json.error }}        // Error message
{{ $json.errorCode }}    // Error code if available

Use the If node to check for errors and branch accordingly:

[Execute Sub-workflow] → [If: Has Error?] → [Error Branch] OR [Success Branch]

Error Trigger in Sub-workflows

For complex error handling within sub-workflows, use the Error Trigger node:

  1. Create a separate workflow starting with Error Trigger
  2. In your sub-workflow settings, set this as the error workflow
  3. The error workflow receives execution details when failures occur

This enables logging, notifications, or recovery actions specific to sub-workflow failures.

Propagating Errors to Parent

Sometimes you want the sub-workflow to signal specific error conditions to the parent. Use the Stop and Error node:

[Trigger] → [Validate Input] → [If: Invalid?] → [Stop and Error: "Invalid customer ID"]

                                        └── Continue processing if valid

The parent workflow receives this error and can handle it appropriately.

Error Handling Pattern

Sub-workflow:
[Trigger] → [Try: Main Logic] → [If: Success?] → [Return Success]

                                        └── [Return Error Object]

Parent:
[Execute Sub-workflow (Continue On Fail)] → [If: Has Error?] → [Handle Error]

                                                      └── [Continue Normal Flow]

This pattern gives the parent full control over error responses without crashing the workflow.

Common Issues and Troubleshooting

These problems appear frequently in the n8n community forum. Here’s how to diagnose and fix each one.

Sub-workflow Not Returning Data

Symptom: Parent workflow receives empty output or undefined after sub-workflow executes successfully.

Causes:

  1. Sub-workflow has no output node
  2. Output node produces empty results
  3. Multiple branches don’t merge before output

Solutions:

  • Ensure the sub-workflow has a clear final node that outputs data
  • Add an Edit Fields node at the end to explicitly return data
  • Use Merge node to combine branches before the output
  • Check that all processing paths lead to a return node

Wait Node Causing Wrong Return Data

Symptom: When sub-workflow contains a Wait node, the parent receives data from before the Wait instead of after.

Cause: This is a known n8n behavior. Wait nodes can interrupt the return flow.

Solutions:

  • Restructure to avoid Wait nodes in sub-workflows called synchronously
  • Use async execution (disable Wait for Completion) if you don’t need return data
  • Store data after Wait in a database, then retrieve it in the parent via separate query
  • Consider whether the Wait is necessary or if polling/webhook patterns work better

Workflow Not Found Error

Symptom: “Workflow with ID ‘X’ not found” or similar error.

Causes:

  1. Sub-workflow was deleted or renamed
  2. Workflow ID is incorrect
  3. Using wrong n8n instance
  4. Permissions issue (multi-user environments)

Solutions:

  • Verify the sub-workflow exists in your n8n instance
  • Check the workflow ID in the sub-workflow’s URL
  • For “From list” selection, re-select the workflow
  • In multi-tenant setups, verify workflow ownership/sharing settings

Data Missing from Output

Symptom: Some fields exist in sub-workflow execution but don’t appear in parent.

Causes:

  1. Fields stripped by intermediate nodes
  2. Edit Fields node only selecting specific fields
  3. Data type conversion issues

Solutions:

  • Check each node’s output in the sub-workflow execution log
  • Explicitly include all needed fields in the final Edit Fields node
  • Use {{ $json }} to pass through all fields when needed

Sub-workflow Errors Blocking Parent

Symptom: Any sub-workflow error stops the entire parent workflow.

Solution: Enable Continue On Fail on the Execute Sub-workflow node, then handle errors explicitly in the parent workflow.

Memory Issues in Large Sub-workflows

Symptom: “Heap out of memory” errors when processing large datasets in sub-workflows.

Solutions:

  • Process in smaller batches using “Run once for each item” mode
  • Increase Node.js heap size: NODE_OPTIONS=--max-old-space-size=4096
  • Strip unnecessary data fields before passing to sub-workflow
  • Consider queue mode for distributed execution

Troubleshooting Reference Table

ProblemLikely CauseFix
Empty return dataNo output nodeAdd Edit Fields at end
Wrong data after WaitWait interrupts returnRestructure or use async
”Workflow not found”Deleted/wrong IDVerify workflow exists
Missing fieldsStripped by intermediate nodeExplicitly include fields
Parent stops on sub-errorDefault error behaviorEnable Continue On Fail
Memory errorsLarge datasetBatch processing, smaller chunks

Debugging Across Parent and Sub-workflows

n8n links parent and sub-workflow executions in the execution log. When viewing a parent execution:

  1. Click the Execute Sub-workflow node in the execution view
  2. Look for the “View sub-workflow execution” link
  3. Click to jump directly to the sub-workflow’s execution log

This lets you trace data flow across both workflows. The sub-workflow execution shows exactly what data it received and what each node produced.

For complex debugging scenarios, use our workflow debugger tool to trace execution paths.

Credentials in Sub-workflows

Sub-workflows use their own credential configurations. They do not inherit credentials from the parent workflow.

Key points:

  • Configure credentials directly in the sub-workflow’s nodes
  • The user who activates the parent workflow needs access to credentials used in sub-workflows
  • In team environments, ensure shared credentials are accessible to all users who run workflows calling that sub-workflow

Real-World Examples

Example 1: Data Processing Pipeline

Scenario: Process 10,000 customer records without memory issues.

Parent Workflow:

[Schedule Trigger] → [Fetch All Records] → [Code: Split into 100-record chunks] → [Execute Sub-workflow (Each Item)]

The Code node splits records:

const items = $input.all();
const chunkSize = 100;
const chunks = [];

for (let i = 0; i < items.length; i += chunkSize) {
  chunks.push({
    json: {
      records: items.slice(i, i + chunkSize).map(item => item.json)
    }
  });
}

return chunks;

Sub-Workflow:

[Trigger] → [Loop Over Items] → [Validate] → [Transform] → [Insert to Database] → [Return Summary]

Each chunk processes in isolation. Memory releases after each execution. The parent receives summaries from each chunk.

Example 2: Reusable Email Notification System

Scenario: Multiple workflows need to send formatted email notifications.

Sub-Workflow: “Send Notification Email”

Trigger fields:

  • recipient (String): Email address
  • subject (String): Email subject
  • template (String): Template name (welcome, alert, reminder)
  • data (Object): Dynamic content for template
[Trigger] → [Switch: template] → [Template: Welcome] OR [Template: Alert] OR [Template: Reminder]
                                         │                    │                      │
                                         └────────────────────┴──────────────────────┘


                                                       [Send Email]


                                              [Return: { sent: true, messageId }]

Parent Workflows call with:

{
  "recipient": "{{ $json.customer.email }}",
  "subject": "Welcome to Our Service",
  "template": "welcome",
  "data": {
    "name": "{{ $json.customer.firstName }}",
    "accountId": "{{ $json.customer.id }}"
  }
}

Any workflow sends notifications using the same sub-workflow. Update email templates in one place, all workflows benefit.

Example 3: Centralized API Integration Module

Scenario: Multiple workflows call the same third-party API with consistent error handling and rate limiting.

Sub-Workflow: “Shopify API Request”

Trigger fields:

  • endpoint (String): API endpoint path
  • method (String): GET, POST, PUT, DELETE
  • body (Object): Request body for POST/PUT
[Trigger] → [HTTP Request: Shopify API] → [If: Rate Limited?] → [Wait 1s] → [Retry]

                                                  └── [If: Success?] → [Return Data]

                                                              └── [Return Error Object]

Benefits:

  • Authentication configured once
  • Rate limiting handled consistently
  • Error responses standardized
  • Parent workflows stay clean

Parent call:

{
  "endpoint": "/admin/api/products.json",
  "method": "GET",
  "body": {}
}

This pattern centralizes API complexity. When Shopify changes their API or rate limits, update one sub-workflow.

Pro Tips and Best Practices

1. Single Responsibility Principle

Each sub-workflow should do one thing well. If you’re describing a sub-workflow with “and” in the name (“Validate and Transform and Save”), split it into multiple sub-workflows.

Good: “Validate Customer Data”, “Transform Order Format”, “Save to Database” Avoid: “Process Everything”

2. Clear Naming Conventions

Name sub-workflows to indicate their purpose and that they’re sub-workflows:

[Sub] Send Email Notification
[Sub] Validate Customer Record
[Sub] Calculate Order Totals

Prefixes make sub-workflows easy to find and distinguish from parent workflows.

3. Document Inputs and Outputs

Add notes to your Execute Sub-workflow Trigger node describing:

  • Required fields and their types
  • Optional fields and defaults
  • Expected output structure
  • Error conditions

Future you (and your team) will thank you.

4. Handle Empty Inputs

Always check for empty input arrays at the start of sub-workflows:

const items = $input.all();

if (!items || items.length === 0) {
  return [{
    json: {
      success: false,
      message: 'No items to process'
    }
  }];
}

5. Test Sub-workflows Independently

Before integrating, test sub-workflows with sample data:

  1. Open the sub-workflow
  2. Pin test data to the trigger node
  3. Execute and verify output
  4. Test edge cases (empty input, invalid data, missing fields)

6. Use Descriptive Workflow IDs in Logs

Add execution metadata for debugging:

// At end of sub-workflow
return [{
  json: {
    ...processedData,
    _meta: {
      subWorkflowName: 'Validate Customer',
      processedAt: $now.toISO(),
      itemCount: items.length
    }
  }
}];

7. Version Control Considerations

When using version control with n8n:

  • Sub-workflows are separate workflow files
  • Changing a sub-workflow doesn’t modify parent workflow files
  • Track sub-workflow dependencies in documentation
  • Test integrations after pulling changes

For architectural guidance on designing modular workflow systems, our workflow development services and consulting packages can help. See also our workflow best practices guide for general principles.

Frequently Asked Questions

Can I call sub-workflows in a loop?

Yes. Two approaches work:

  • Use the Loop Over Items node in the parent workflow
  • Set “Run once for each item” mode on the Execute Sub-workflow node

Each iteration calls the sub-workflow with one item. For batch processing patterns, see our batch processing guide.

Be mindful of rate limits if your sub-workflow calls external APIs. Each loop iteration makes those calls.

How do I return multiple items from a sub-workflow?

The sub-workflow’s final node output can contain multiple items. Return an array of items, and the parent receives all of them.

Use a Code node at the end if you need to aggregate or shape multiple items into a specific structure.

The parent’s Execute Sub-workflow node outputs all returned items, which flow to the next node as multiple items.

Why isn’t my sub-workflow returning data?

Three common causes:

  1. No output node: The sub-workflow has no output node or the final node produces no data. Add an Edit Fields node at the end to explicitly return data.

  2. Unmerged branches: Multiple branches don’t merge before output. Use the Merge node to combine paths.

  3. Wait node interference: A Wait node interrupts the return flow. Restructure to move Wait logic outside the sub-workflow or use async execution.

Check the sub-workflow’s execution log to verify what data the final node actually produces.

Can sub-workflows call other sub-workflows?

Yes. Sub-workflows can contain their own Execute Sub-workflow nodes, creating nested chains.

However, deep nesting adds complexity and debugging difficulty. Limit nesting to 2-3 levels.

If you find yourself going deeper, consider flattening the architecture or using a different pattern. Each level adds latency when using synchronous (wait for completion) execution.

Do sub-workflow executions count against my plan limits?

No. According to n8n’s documentation, sub-workflow executions do not count towards your plan’s monthly execution or active workflow limits.

Only the parent workflow execution counts.

This makes sub-workflows cost-effective for breaking complex processes into modular components without worrying about hitting execution limits.

Ready to Automate Your Business?

Tell us what you need automated. We'll build it, test it, and deploy it fast.

48-72 Hour Turnaround
Production Ready
Free Consultation

Create Your Free Account

Sign up once, use all tools free forever. We require accounts to prevent abuse and keep our tools running for everyone.

or

You're in!

Check your email for next steps.

By signing up, you agree to our Terms of Service and Privacy Policy. No spam, unsubscribe anytime.

🚀

Get Expert Help

Add your email and one of our n8n experts will reach out to help with your automation needs.

or

We'll be in touch!

One of our experts will reach out soon.

By submitting, you agree to our Terms of Service and Privacy Policy. No spam, unsubscribe anytime.