To disable workflow execution in n8n, toggle the Active switch off in the top-right corner of the workflow editor. This deactivates all triggers — webhooks stop responding, schedules stop firing, and no new executions start. For temporary maintenance, you can also disable individual trigger nodes or use the n8n API to deactivate workflows programmatically across your instance.
Deactivating Workflows and Preventing Unintended Executions in n8n
There are many reasons to disable a workflow: scheduled maintenance, debugging, cost control, or preventing a broken workflow from sending incorrect data. n8n provides several ways to stop workflow execution, from a simple toggle to API-driven batch deactivation. This tutorial covers each method and when to use it, plus how to prevent accidental re-activation.
Prerequisites
- A running n8n instance (self-hosted or Cloud)
- At least one active workflow to deactivate
- Editor access to the workflow
Step-by-step guide
Deactivate a workflow using the editor toggle
Deactivate a workflow using the editor toggle
The simplest way to disable a workflow is to toggle the Active switch. Open the workflow in the n8n editor and look at the top-right corner of the canvas. The Active toggle shows green when the workflow is active and grey when it is inactive. Click the toggle to switch it off. This immediately stops all triggers: webhook URLs return 404, cron schedules stop firing, and event-based triggers stop listening. Currently running executions are not interrupted — they finish before the deactivation fully takes effect. The workflow remains in your list and can be re-activated at any time.
Expected result: The workflow status changes to Inactive. All triggers stop responding and no new executions start.
Disable individual nodes instead of the entire workflow
Disable individual nodes instead of the entire workflow
Sometimes you want to stop part of a workflow without deactivating the whole thing. Right-click on any node and select Deactivate Node (or press D with the node selected). Deactivated nodes are greyed out and skipped during execution. The workflow continues to run but skips the deactivated nodes and everything downstream of them. This is useful for temporarily disabling a notification node, an expensive API call, or a database write while keeping the rest of the workflow running.
Expected result: The deactivated node is greyed out. The workflow still runs but skips the disabled node and its downstream dependencies.
Deactivate multiple workflows using the n8n API
Deactivate multiple workflows using the n8n API
For bulk operations or automated maintenance, use the n8n REST API to deactivate workflows programmatically. First, enable API access in n8n settings and create an API key. Then use the PATCH endpoint to update a workflow's active status. You can script this to deactivate all workflows before a maintenance window and re-activate them afterward.
1# Deactivate a single workflow by ID2curl -X PATCH https://n8n.example.com/api/v1/workflows/12345 \3 -H 'X-N8N-API-KEY: your-api-key-here' \4 -H 'Content-Type: application/json' \5 -d '{"active": false}'67# List all active workflows8curl -s https://n8n.example.com/api/v1/workflows?active=true \9 -H 'X-N8N-API-KEY: your-api-key-here' | jq '.data[] | {id, name}'1011# Deactivate ALL active workflows (maintenance script)12for id in $(curl -s https://n8n.example.com/api/v1/workflows?active=true \13 -H 'X-N8N-API-KEY: your-api-key-here' | jq -r '.data[].id'); do14 curl -X PATCH "https://n8n.example.com/api/v1/workflows/$id" \15 -H 'X-N8N-API-KEY: your-api-key-here' \16 -H 'Content-Type: application/json' \17 -d '{"active": false}'18 echo "Deactivated workflow $id"19doneExpected result: Workflows are deactivated via the API. The response confirms active: false for each updated workflow.
Prevent accidental re-activation during maintenance
Prevent accidental re-activation during maintenance
During maintenance windows, team members might accidentally re-activate workflows. To prevent this, combine workflow deactivation with other safeguards. Add a note to the workflow description indicating it is under maintenance. If n8n supports user roles, temporarily restrict editor access. For critical systems, you can also block the n8n webhook port at the firewall level or stop the n8n process entirely during maintenance. After maintenance, verify each workflow works correctly before re-activating it.
Expected result: Workflows remain safely deactivated during the maintenance window with safeguards against accidental re-activation.
Re-activate workflows and verify they work correctly
Re-activate workflows and verify they work correctly
After maintenance or debugging is complete, re-activate workflows by toggling the Active switch back on or using the API with active: true. After activation, verify each workflow by checking that triggers are responding (send a test webhook request), schedules are running (check the next execution time), and the execution history shows successful runs. For critical workflows, send a test event through the entire pipeline to confirm end-to-end functionality before considering the maintenance complete.
1# Re-activate a workflow via API2curl -X PATCH https://n8n.example.com/api/v1/workflows/12345 \3 -H 'X-N8N-API-KEY: your-api-key-here' \4 -H 'Content-Type: application/json' \5 -d '{"active": true}'67# Verify webhook is responding8curl -s -o /dev/null -w "%{http_code}" \9 -X POST https://n8n.example.com/webhook/my-workflow \10 -H 'Content-Type: application/json' \11 -d '{"test": true}'Expected result: Workflows are active again, triggers respond, and the first post-maintenance executions complete successfully.
Complete working example
1#!/bin/bash2# n8n Maintenance Mode Script3# Deactivates all workflows, performs maintenance, then re-activates4# Usage: ./maintenance-mode.sh [start|stop]56N8N_URL="https://n8n.example.com"7API_KEY="your-api-key-here"8STATE_FILE="/tmp/n8n-active-workflows.json"910case "$1" in11 start)12 echo "Entering maintenance mode..."1314 # Save list of currently active workflows15 curl -s "$N8N_URL/api/v1/workflows?active=true" \16 -H "X-N8N-API-KEY: $API_KEY" \17 | jq '[.data[].id]' > "$STATE_FILE"1819 ACTIVE_COUNT=$(jq 'length' "$STATE_FILE")20 echo "Found $ACTIVE_COUNT active workflows"2122 # Deactivate all active workflows23 for id in $(jq -r '.[]' "$STATE_FILE"); do24 curl -s -X PATCH "$N8N_URL/api/v1/workflows/$id" \25 -H "X-N8N-API-KEY: $API_KEY" \26 -H 'Content-Type: application/json' \27 -d '{"active": false}' > /dev/null28 echo " Deactivated: $id"29 done3031 echo "Maintenance mode ACTIVE. $ACTIVE_COUNT workflows deactivated."32 echo "Run '$0 stop' to re-activate."33 ;;3435 stop)36 if [ ! -f "$STATE_FILE" ]; then37 echo "Error: No state file found at $STATE_FILE"38 echo "Cannot determine which workflows to re-activate."39 exit 140 fi4142 echo "Exiting maintenance mode..."4344 # Re-activate previously active workflows45 for id in $(jq -r '.[]' "$STATE_FILE"); do46 curl -s -X PATCH "$N8N_URL/api/v1/workflows/$id" \47 -H "X-N8N-API-KEY: $API_KEY" \48 -H 'Content-Type: application/json' \49 -d '{"active": true}' > /dev/null50 echo " Re-activated: $id"51 done5253 REACTIVATED=$(jq 'length' "$STATE_FILE")54 rm "$STATE_FILE"55 echo "Maintenance mode OFF. $REACTIVATED workflows re-activated."56 ;;5758 *)59 echo "Usage: $0 [start|stop]"60 exit 161 ;;62esacCommon mistakes when disabling Workflow Execution in n8n
Why it's a problem: Deactivating a workflow while it has running executions, expecting them to stop immediately
How to avoid: Deactivating a workflow only prevents new executions from starting. Currently running executions finish normally. Wait for them to complete or check the execution list.
Why it's a problem: Forgetting which workflows were active before maintenance and re-activating the wrong ones
How to avoid: Save the list of active workflow IDs to a file before deactivating. Use the maintenance mode script to automate this.
Why it's a problem: Using the test webhook URL to verify re-activation instead of the production URL
How to avoid: Test URLs are independent of the active toggle. Verify using the production webhook URL (/webhook/) which only works when the workflow is active.
Why it's a problem: Deactivating all workflows on n8n restart without realizing it
How to avoid: n8n preserves workflow active status across restarts. If workflows deactivate after restart, check for database issues or configuration problems.
Best practices
- Always deactivate workflows before making structural changes to prevent partial executions with broken logic
- Use the n8n API for bulk deactivation during maintenance windows instead of toggling each workflow manually
- Save the list of active workflow IDs before deactivating so you can re-activate exactly the same set
- Deactivate individual nodes instead of entire workflows when you only need to disable one branch
- Add a description note to deactivated workflows explaining why they are disabled and when they should be re-activated
- Test workflows after re-activation to confirm triggers and data flow work correctly
- Use n8n's execution history to verify workflows resume correctly after re-activation
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I need to deactivate all n8n workflows for a maintenance window, perform a database migration, and then re-activate only the workflows that were previously active. Write me a bash script using the n8n API that handles this safely.
Create an n8n workflow that acts as a maintenance controller: it receives a webhook with 'start' or 'stop' action, deactivates or re-activates all other workflows via the n8n API, and sends a Slack notification about the maintenance status.
Frequently asked questions
Does deactivating a workflow stop currently running executions?
No, deactivating a workflow only prevents new executions from starting. Any execution already in progress will finish normally. To stop a running execution, cancel it from the Executions panel.
What happens to scheduled triggers when a workflow is deactivated?
Scheduled triggers stop firing immediately. When you re-activate the workflow, the schedule resumes from the next scheduled time — it does not run missed executions retroactively.
Can I deactivate a workflow without opening it in the editor?
Yes, toggle the active status directly from the Workflows list view by clicking the toggle icon next to the workflow name. You can also use the n8n API to deactivate workflows programmatically.
Will webhook URLs return an error when the workflow is inactive?
Yes, production webhook URLs (/webhook/) return a 404 Not Found response when the workflow is inactive. External services sending webhook requests will receive this error.
Can I deactivate a single node instead of the entire workflow?
Yes, right-click on any node and select Deactivate Node or press D with the node selected. The node is skipped during execution but the rest of the workflow runs normally.
How do I deactivate all workflows at once?
There is no bulk toggle in the n8n editor. Use the n8n API to loop through all active workflows and deactivate them programmatically. The maintenance mode script in this tutorial automates this process.
Does deactivating a workflow delete its execution history?
No, execution history is preserved when a workflow is deactivated. You can still view past executions in the Executions panel.
Can RapidDev help manage n8n workflow operations and maintenance?
Yes, RapidDev can set up automated maintenance procedures, workflow monitoring, and operational scripts for your n8n deployment, including safe deactivation, backup, and re-activation workflows.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation