n8n Workflows GitHub Manager
n8n Workflows GitHub Manager > A comprehensive n8n workflow that provides complete bidirectional sync between your n8n instance and GitHub - automatically backs up all your workflows with intelligent change detection AND restores them when needed. This workflow combines two powerful features in one: Backup**: Automatically detects new, edited, renamed, and deleted workflows in your n8n instance, then syncs them to GitHub with smart commit messages and an index tracking system. Restore**: Easily restore all workflows from your GitHub repository back to n8n - perfect for disaster recovery, new instance setup, or environment cloning. How It Works 🔄 Backup Mode (Automatic) Trigger: Runs automatically every day at 7 PM UTC (or manually when triggered via the Schedule Trigger). Get/Create Index: Attempts to fetch index.json from your GitHub repository. If found → Downloads and parses it. If not found → Creates a new empty index file and waits 3 seconds for GitHub to process. Fetch All Workflows: Retrieves all workflows from your n8n instance via the n8n API. Smart Comparison: The "C,E,D Checker" (Create, Edit, Delete) analyzes differences: CREATE → New workflow not in index. RENAME → Workflow name changed (deletes old file, creates new one). EDIT → Existing workflow (flagged for content comparison). DELETE → Workflow removed from n8n but still in GitHub. INDEX UPDATE → Triggered if any changes detected. Route Actions: Switch node routes each action to the appropriate branch: Create Branch → Creates new workflow files in GitHub. Edit Branch → Performs smart edit detection: Fetches current file from GitHub. Compares GitHub version vs. n8n version (normalized JSON). Only commits if content actually changed (avoids timestamp-only updates). Delete Branch → Removes workflow files from GitHub. Update Index Branch → Updates index.json with latest mappings. Commit Messages: Auto-generated with format: [Workflow Name] (Action) YYYY-MM-DD ⬇️ Restore Mode (Manual) Trigger: Manually execute via the "When clicking 'Execute workflow'" manual trigger. Set GitHub Details: Configure your repository owner and name. List Workflow Files: Fetches all workflow JSON files from the workflows/ folder in your GitHub repository. If folder not found → Workflow stops gracefully (ensure backup ran at least once first). Loop Through Files: Sequentially processes each workflow file: Downloads the JSON content from GitHub. Creates the workflow in your n8n instance via the n8n API. Sequential Processing: Handles one workflow at a time to prevent conflicts and respect rate limits. Result: All workflows from GitHub are restored to your n8n instance. Requirements GitHub OAuth2 Credentials**: Go to GitHub Developer Settings → OAuth Apps → New OAuth App. Set Authorization callback URL to your n8n instance URL (e.g., https://your-n8n.com/rest/oauth2-credential/callback). Copy Client ID and Client Secret. Add as OAuth2 credential in n8n (Credentials → New → GitHub OAuth2). GitHub Repository**: Create a new repository (public or private). Note your username (repo owner) and repository name. n8n API Credentials**: In your n8n instance → Settings → API → Create new API key. Add as n8n API credential in the workflow. How to Use Initial Setup Import the Workflow: Copy the provided JSON file. In your n8n instance → click Import Workflow → paste or upload the JSON. Create GitHub Repository: Go to GitHub → Create a new repository (e.g., n8n-workflows-manager). Leave it empty (no README, no .gitignore). Set Up GitHub OAuth2: In n8n → Credentials → New → GitHub OAuth2. Fill in: Client ID → from GitHub OAuth App. Client Secret → from GitHub OAuth App. Click Connect my account and authorize. Set Up n8n API Credentials: In n8n → Settings → API → Create new API key. Copy the key. In workflow → Credentials → New → n8n API → paste the key. Set Base URL to your n8n instance (e.g., https://your-n8n.com). Configure Repository Details: Find both "Set Github Data" nodes in the workflow (one for backup, one for restore). Edit the assignments in each: repo_owner: Replace "your-github-username" with your GitHub username. repo_name: Replace "your-github-repository-name" with your repository name. Connect Credentials to Nodes: Open each GitHub node (there are 8 total): Backup section: Create Index File, Get Download Url for Index File, Create New Files, Update Index File, Get Download Url for Github File, Delete Files, Edit Files Restore section: List Workflow Files Set Credential for GitHub OAuth2 to the one you created. Open the n8n API nodes (Get All Workflows, Create Workflow) → Set Credential for n8n API to the one you created. Using Backup Mode Test Backup: Click the "Schedule Trigger" node at the top of the workflow. Click "Test workflow". Monitor execution → All nodes in the backup section should turn green. Check your GitHub repository → Should see index.json and workflows/ folder with your workflows. Activate for Auto Backup: Once tested successfully, toggle the workflow to Active. It will now run automatically every day at 7 PM UTC. Using Restore Mode Test Restore (only after you have backups in GitHub): Click the "When clicking 'Execute workflow'" manual trigger node at the bottom. Click "Test workflow". Monitor execution → All nodes in the restore section should turn green. Check your n8n workflows list → All workflows from GitHub should now be present. When to Use Restore: Setting up a new n8n instance. Recovering after data loss. Cloning workflows to another environment. Rolling back to a previous state (manually download older commits from GitHub first). Important Notes Smart Edit Detection**: Uses normalized JSON comparison to avoid unnecessary commits when only timestamps change. Credentials**: Credential IDs are included but not actual secrets. You must reconnect credentials after restore. Restored Workflows: Created as new workflows with new IDs in **inactive state by default. File Structure**: index.json tracks all workflows; workflows/ folder contains individual workflow files. Security**: Use a private repository if workflows contain sensitive data. Credential secrets are never backed up. Customization Change Schedule**: Edit "Schedule Trigger" node → modify triggerAtHour (default: 19 = 7 PM UTC) File Path**: Modify filePath in GitHub nodes to change storage location Notifications**: Add email/notification nodes to get alerts on backup completion Selective Restore**: Add IF nodes to filter which workflows to restore Multiple Repos**: Duplicate workflow for separate prod/dev backups Author: Muhammad Anas Farooq. An n8n automation workflow template by Muhammad Anas Farooq.
Muhammad Anas Farooq
web
free
Others in the same category, ranked by how often they are opened.