AutomationFlowsGeneral › Webhook to NocoDB and Dropbox Sync

Webhook to NocoDB and Dropbox Sync

Original n8n title: Webhook Nocodb

Webhook Nocodb. Uses stickyNote, dropbox, nocoDb, respondToWebhook. Webhook trigger; 20 nodes.

Webhook trigger★★★★☆ complexity20 nodesDropboxNoco Db
General Trigger: Webhook Nodes: 20 Complexity: ★★★★☆ Added:

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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "971e1616-af67-4961-9ef4-4b8dd24e392c",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -660,
        240
      ],
      "parameters": {
        "path": "29a6482f-36ac-4c15-8792-450aa32cf5f4",
        "options": {},
        "httpMethod": [
          "POST",
          "GET"
        ],
        "responseMode": "responseNode",
        "multipleMethods": true
      },
      "typeVersion": 2
    },
    {
      "id": "22d8dca1-a2fd-474e-a1cd-7f75be1c04a6",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        -220
      ],
      "parameters": {
        "color": 6,
        "width": 620,
        "height": 920,
        "content": "## Dropbox\n\nDropbox call me each time a modification is done somewhere in my dropbox."
      },
      "typeVersion": 1
    },
    {
      "id": "0178e813-ae15-4729-933b-2799ec405863",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -280
      ],
      "parameters": {
        "color": 3,
        "width": 840,
        "height": 140,
        "content": "## Watch Files, 2 ways :\n1. We explore each file in a folder (new and old ones)\n2. We want to filter new files only"
      },
      "typeVersion": 1
    },
    {
      "id": "229b9a46-5d76-4cb7-b1ac-4b10a6427f66",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -80
      ],
      "parameters": {
        "width": 1040,
        "height": 100,
        "content": "### Way 1 - We call the subworklow for each file in the specified folder"
      },
      "typeVersion": 1
    },
    {
      "id": "43a4fa3c-e378-443b-81a1-349201a85056",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        200
      ],
      "parameters": {
        "color": 4,
        "width": 1240,
        "height": 100,
        "content": "### Way 2- We filter new/old files then we call the subworkflow only for new files"
      },
      "typeVersion": 1
    },
    {
      "id": "e9639a07-6672-46ee-a86e-025265e45069",
      "name": "Dropbox - List watched folder",
      "type": "n8n-nodes-base.dropbox",
      "position": [
        500,
        280
      ],
      "parameters": {
        "path": "={{ $json.folder_to_watch }}",
        "filters": {
          "include_deleted": false,
          "include_mounted_folders": false
        },
        "resource": "folder",
        "operation": "list",
        "returnAll": true,
        "authentication": "oAuth2"
      },
      "credentials": {
        "dropboxOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "61707418-fcbb-4b70-ab06-02b9b7060bfb",
      "name": "Switch File vs Folder",
      "type": "n8n-nodes-base.switch",
      "position": [
        700,
        280
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "file",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f7fda7a2-1961-41aa-a332-f9a8be9b3bfa",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.type }}",
                    "rightValue": "file"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "folder",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "d8bb9414-ae11-4b8f-ad0e-6bfe0e2f1071",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.type }}",
                    "rightValue": "folder"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "2670d2d1-acfb-4d0b-9bde-12dbd3806976",
      "name": "Switch File vs Folder1",
      "type": "n8n-nodes-base.switch",
      "position": [
        780,
        0
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "file",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f7fda7a2-1961-41aa-a332-f9a8be9b3bfa",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.type }}",
                    "rightValue": "file"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "folder",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "d8bb9414-ae11-4b8f-ad0e-6bfe0e2f1071",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.type }}",
                    "rightValue": "folder"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "8225e284-b193-4859-891e-2277b2bc004b",
      "name": "NocoDB - Get know files to exclude",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        600,
        480
      ],
      "parameters": {
        "table": "m0tqa79y2sv4g0j",
        "options": {
          "where": "=(folder_to_watch,eq,{{ $json.folder_to_watch }})"
        },
        "operation": "getAll",
        "projectId": "p73a23pw65qwwr4",
        "returnAll": true,
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "0b9cb74b-ce02-4ed2-a417-084529a79977",
      "name": "Merge - Keep only new items",
      "type": "n8n-nodes-base.merge",
      "position": [
        1000,
        280
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "advanced": true,
        "joinMode": "keepNonMatches",
        "mergeByFields": {
          "values": [
            {
              "field1": "id",
              "field2": "data.id"
            }
          ]
        },
        "outputDataFrom": "input1"
      },
      "typeVersion": 3
    },
    {
      "id": "c1f52687-7b6e-4c69-bcce-cc9bf053c62f",
      "name": "Just a quick answer to Dropbox - webhook validation",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -400,
        520
      ],
      "parameters": {
        "options": {},
        "respondWith": "text",
        "responseBody": "={{ $json.query.challenge }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "42c84256-cbce-46d6-ab5a-01b1ef0715b0",
      "name": "Respond to Dropbox in less than 10sec",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -400,
        0
      ],
      "parameters": {
        "options": {},
        "respondWith": "text",
        "responseBody": "={{ $json.query.challenge }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "bb45006e-f12e-4b9d-99fa-ec5003f1c141",
      "name": "Dropbox get files",
      "type": "n8n-nodes-base.dropbox",
      "position": [
        500,
        0
      ],
      "parameters": {
        "path": "={{ $json.folder_to_watch }}",
        "filters": {
          "include_deleted": false,
          "include_mounted_folders": false
        },
        "resource": "folder",
        "operation": "list",
        "returnAll": true,
        "authentication": "oAuth2"
      },
      "credentials": {
        "dropboxOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b4f8c38c-c674-488d-8c9a-f68e42c702cf",
      "name": "NocoDB - Add this file in the table",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        1200,
        280
      ],
      "parameters": {
        "table": "m0tqa79y2sv4g0j",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "folder_to_watch",
              "fieldValue": "={{ $('set_folder to watch B').item.json.folder_to_watch }}"
            },
            {
              "fieldName": "data",
              "fieldValue": "={\n\"id\":\"{{ $json.id }}\",\n\"name\":\"{{ $json.name }}\",\n\"lastModifiedClient\": \"{{ $json.lastModifiedClient }}\",\n\"lastModifiedServer\": \"{{ $json.lastModifiedServer }}\",\n\"rev\": \"{{ $json.rev }}\",\n\"contentSize\": {{ $json.contentSize }},\n\"type\": \"{{ $json.type }}\",\n\"contentHash\": \"{{ $json.contentHash }}\",\n\"pathLower\": \"{{ $json.pathLower }}\",\n\"pathDisplay\": \"{{ $json.pathDisplay }}\",\n\"isDownloadable\": {{ $json.isDownloadable }}\n}"
            },
            {
              "fieldName": "file_id",
              "fieldValue": "={{ $json.id }}"
            }
          ]
        },
        "operation": "create",
        "projectId": "p73a23pw65qwwr4",
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "9d6d2d96-f16f-408d-bc35-0e17da4d4e6d",
      "name": "set_folder A",
      "type": "n8n-nodes-base.set",
      "position": [
        260,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8416f15a-a6a2-47d2-8c15-e1742b323a8f",
              "name": "folder_to_watch",
              "type": "string",
              "value": "/z_Apps/a_iphone/RecUp Memos/"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "aaa1ef55-10ef-4d8f-ae71-d317930229bc",
      "name": "set_folder to watch B",
      "type": "n8n-nodes-base.set",
      "position": [
        280,
        280
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8416f15a-a6a2-47d2-8c15-e1742b323a8f",
              "name": "folder_to_watch",
              "type": "string",
              "value": "/z_Apps/auphonic/whisper"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "770b7f54-e85e-4d62-ab2a-60c9a73411e3",
      "name": "Execute Workflow - what i want to do for this folder/file A",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1040,
        -20
      ],
      "parameters": {
        "mode": "each",
        "options": {
          "waitForSubWorkflow": false
        },
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "PRxsqnbMoqY6avr6",
          "cachedResultName": "02 JE TRANSMETS > Dropbox RecUp Memos - transcription audio - 2025-01 v1"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d9230834-13b4-420f-9e9a-154176803a66",
      "name": "Execute Workflow - Something to do for new files",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1400,
        280
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "NzETudhVA1JruLCl",
          "cachedResultName": "210 PODCAST > Dropbox txt - Pr\u00e9 r\u00e9dige \u00e9pisode avec transcription - 2025-03 v2"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "68d02221-861c-41d6-afe3-3757b272746f",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        120
      ],
      "parameters": {
        "color": 2,
        "height": 80,
        "content": "I duplicate those processes for each folder i want to watch"
      },
      "typeVersion": 1
    },
    {
      "id": "6befd86e-9a7b-442e-abb2-e1ed535f5166",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        180,
        460
      ],
      "parameters": {
        "color": 2,
        "content": "I define in a \"variable\" the folder to watch to ease the next steps"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Respond to Dropbox in less than 10sec",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Just a quick answer to Dropbox - webhook validation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set_folder A": {
      "main": [
        [
          {
            "node": "Dropbox get files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Dropbox get files": {
      "main": [
        [
          {
            "node": "Switch File vs Folder1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch File vs Folder": {
      "main": [
        [
          {
            "node": "Merge - Keep only new items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set_folder to watch B": {
      "main": [
        [
          {
            "node": "Dropbox - List watched folder",
            "type": "main",
            "index": 0
          },
          {
            "node": "NocoDB - Get know files to exclude",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch File vs Folder1": {
      "main": [
        [
          {
            "node": "Execute Workflow - what i want to do for this folder/file A",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge - Keep only new items": {
      "main": [
        [
          {
            "node": "NocoDB - Add this file in the table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Dropbox - List watched folder": {
      "main": [
        [
          {
            "node": "Switch File vs Folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "NocoDB - Get know files to exclude": {
      "main": [
        [
          {
            "node": "Merge - Keep only new items",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "NocoDB - Add this file in the table": {
      "main": [
        [
          {
            "node": "Execute Workflow - Something to do for new files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Respond to Dropbox in less than 10sec": {
      "main": [
        [
          {
            "node": "set_folder A",
            "type": "main",
            "index": 0
          },
          {
            "node": "set_folder to watch B",
            "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

How this works

This workflow streamlines file organisation by automatically detecting new uploads to a monitored Dropbox folder and logging them into NocoDB for seamless tracking and management. It suits teams handling shared documents, such as marketing groups or project managers, who need to catalogue files without manual entry, saving hours on administrative tasks. The key step involves the webhook trigger capturing Dropbox events, followed by a switch that distinguishes between files and folders to route data accurately into NocoDB records.

Use this workflow when you require real-time syncing of Dropbox uploads to a structured database like NocoDB, particularly for audit trails or inventory control in collaborative environments. Avoid it for high-volume traffic exceeding thousands of files daily, as it may need scaling, or if your setup lacks webhook compatibility. Common variations include adding email notifications post-logging or integrating with Google Drive instead of Dropbox for broader cloud support.

About this workflow

Webhook Nocodb. Uses stickyNote, dropbox, nocoDb, respondToWebhook. Webhook trigger; 20 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

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

General

A clean, extensible REST-style API routing template for n8n webhooks with up to 3 path levels. Serves API routes via Webhooks with path variables Normalizes incoming requests into "global" REQUEST and

General

PUQ Docker NextCloud deploy. Uses respondToWebhook, stickyNote, httpRequest, ssh. Webhook trigger; 44 nodes.

HTTP Request, Ssh
General

puq-docker-immich-deploy. Uses respondToWebhook, ssh, stickyNote. Webhook trigger; 35 nodes.

Ssh
General

Analyze_email_headers_for_IPs_and_spoofing__3. Uses stickyNote, respondToWebhook, itemLists, httpRequest. Webhook trigger; 35 nodes.

Item Lists, HTTP Request
General

puq-docker-n8n-deploy. Uses respondToWebhook, ssh, stickyNote. Webhook trigger; 34 nodes.

Ssh