AutomationFlowsSlack & Telegram › Automated Workflow Backups with Google Drive and Slack Notifications

Automated Workflow Backups with Google Drive and Slack Notifications

ByOmer Fayyaz @omerfayyaz on n8n.io

This workflow eliminates traditional loop-based processing entirely, delivering unprecedented performance and reliability even when the number of workflows to be processed are large NO SplitInBatches node - Traditional workflows use loops to process workflows one by one NO…

Event trigger★★★★☆ complexity12 nodesGoogle DriveSlackCompressionn8n
Slack & Telegram Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #7850 — we link there as the canonical source.

This workflow follows the Google Drive → Slack recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "vnlmgDq8SZlzMcfi",
  "meta": {
    "templateId": "2886"
  },
  "name": "Backup all n8n workflows to Google Drive every 4 hours",
  "tags": [],
  "nodes": [
    {
      "id": "26b6a8ca-cf9e-4eab-9f2a-841f975a4741",
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        240,
        448
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c42307c1-0d95-4500-85e8-a89234a7e2e7",
      "name": "create new folder",
      "type": "n8n-nodes-base.googleDrive",
      "onError": "continueErrorOutput",
      "position": [
        464,
        560
      ],
      "parameters": {
        "name": "=Workflow Backups {{ $now.format('cccc t dd-MM-yyyy') }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "14Mui2em5keVRWaoq3dlrvaX8KNRxw2h2",
          "cachedResultUrl": "https://drive.google.com/drive/folders/14Mui2em5keVRWaoq3dlrvaX8KNRxw2h2",
          "cachedResultName": "N8N Backups"
        },
        "resource": "folder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "139487f6-1ef0-4835-bdef-a896dbbdf942",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        240,
        640
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 4
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "724c83f9-9e07-4a87-9f25-d1631a8ef403",
      "name": "Completed Notification",
      "type": "n8n-nodes-base.slack",
      "position": [
        1808,
        192
      ],
      "parameters": {
        "text": "=\u2705 Backup has completed - {{ $('Get many workflows').all().length }} workflows have been processed.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C099YS0V3M2"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 2.2
    },
    {
      "id": "939d7dc3-2080-4ac7-9609-ef598b018eb2",
      "name": "Failed Notification",
      "type": "n8n-nodes-base.slack",
      "position": [
        1808,
        752
      ],
      "parameters": {
        "text": "=\u274c Error in the N8N Backup Workflow",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C099YS0V3M2"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 2.2
    },
    {
      "id": "53a6e217-05cb-4d9d-93ba-686cfec5e7b7",
      "name": "Convert to File1",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        848,
        240
      ],
      "parameters": {
        "mode": "each",
        "options": {
          "fileName": "={{ $json.name + '.json' }}"
        },
        "operation": "toJson"
      },
      "typeVersion": 1.1
    },
    {
      "id": "80cdeba1-1d1c-4b20-994b-09d1791cf534",
      "name": "Compression",
      "type": "n8n-nodes-base.compression",
      "position": [
        1200,
        384
      ],
      "parameters": {
        "fileName": "={{ 'workflows_backup_' + new Date().toISOString().slice(0,10) + '.zip' }}",
        "operation": "compress",
        "outputFormat": "=zip",
        "binaryPropertyName": "={{ Object.keys($binary).join(',') }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "96167a67-bc95-4414-bf61-52d225ffc43d",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        1024,
        320
      ],
      "parameters": {
        "jsCode": "let binaries = {}, binary_keys = [];\n\nfor (const [index, inputItem] of Object.entries($input.all())) {\n  binaries[`data_${index}`] = inputItem.binary.data;\n  binary_keys.push(`data_${index}`);\n}\n\nreturn [{\n    json: {\n        binary_keys: binary_keys.join(',')\n    },\n    binary: binaries\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "502b946e-2543-486a-aaa6-f3a11bdfde80",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "onError": "continueErrorOutput",
      "position": [
        1568,
        464
      ],
      "parameters": {
        "name": "={{ 'workflows_backup_' + new Date().toISOString().slice(0,10) + '.zip' }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.folderId }}"
        },
        "inputDataFieldName": "=data"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e4cfa753-d0c7-452f-9f10-0cd22d57d2ec",
      "name": "Get many workflows",
      "type": "n8n-nodes-base.n8n",
      "position": [
        688,
        192
      ],
      "parameters": {
        "filters": {},
        "returnAll": "=1",
        "requestOptions": {}
      },
      "credentials": {
        "n8nApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "261700eb-b41d-4eb4-883a-87c10b6600e3",
      "name": "Set New Folder Id",
      "type": "n8n-nodes-base.set",
      "position": [
        1200,
        544
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d76278da-3d66-4776-893f-d7b7cd8bdd04",
              "name": "folderId",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e5ae88c5-5246-409f-acae-087c8de30a08",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1392,
        464
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    }
  ],
  "active": true,
  "settings": {},
  "versionId": "c7acf018-a4f5-437b-9ae3-0d9298408c3b",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Compression",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compression": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        [
          {
            "node": "Completed Notification",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Failed Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to File1": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "create new folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set New Folder Id": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "create new folder": {
      "main": [
        [
          {
            "node": "Set New Folder Id",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get many workflows",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Failed Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many workflows": {
      "main": [
        [
          {
            "node": "Convert to File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "create new folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow eliminates traditional loop-based processing entirely, delivering unprecedented performance and reliability even when the number of workflows to be processed are large NO SplitInBatches node - Traditional workflows use loops to process workflows one by one NO…

Source: https://n8n.io/workflows/7850/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

Type in Slack. Walk away. Get a professional PDF report and a structured Excel fix sheet delivered to Google Drive and posted back in your Slack thread — fully automated, zero manual work.

Compression, HTTP Request, Google Drive +3
Slack & Telegram

Secure your n8n automations with this comprehensive template that automates periodic backups to Telegram for instant access while enabling flexible restores from Google Drive links or direct file uplo

n8n, Telegram, Google Drive +1
Slack & Telegram

This workflow automatically detects duplicate files uploaded to a specific Google Drive folder by generating an MD5 hash of each file and comparing it against a Supabase database. If a duplicate is fo

Google Drive Trigger, Google Drive, Crypto +2
Slack & Telegram

Upload a document (PDF, PNG, JPEG) via a web form and let easybits Extractor classify it into one of your defined categories. Based on the classification result and a confidence score, the document is

Form Trigger, HTTP Request, Google Drive +1
Slack & Telegram

Back Up Your N8N Workflows To Github. Uses manualTrigger, stickyNote, executeWorkflowTrigger, n8n. Event-driven trigger; 26 nodes.

Execute Workflow Trigger, n8n, HTTP Request +2