Connecting Dropbox to n8n: the complete guide (OAuth2, upload, download, sync)
Published 2 August 2026 · 6 min read
Dropbox remains one of the most widely used cloud storage services among small businesses, agencies and freelancers — often alongside Google Drive. The good news: n8n ships a native Dropbox node that covers the essentials (upload, download, move, delete, search), provided you get through the least intuitive step: creating the app in the Dropbox App Console and wiring up OAuth2. This guide walks through the full setup, the available operations, four concrete use cases and the classic pitfalls (expiring tokens, paths, large files).
Step 1: create the app in the Dropbox App Console
Unlike a simple API key, Dropbox requires you to create an "app" that embodies the permissions granted to n8n.
- Go to the Dropbox App Console (dropbox.com/developers/apps) and click Create app.
- Under "Choose an API", select Scoped access (the only option offered for new apps nowadays).
- Pick the access type: App Folder (the app only sees a dedicated folder created for it) or Full Dropbox (access to the whole account). For archiving or backup workflows, App Folder is safer; to sync existing folders, you need Full Dropbox.
- Give the app a name (unique across Dropbox) and confirm.
Next, head to the app's permissions tab: this is where you tick the scopes. n8n's Dropbox OAuth2 credential requests four scopes: files.content.read (read file contents), files.content.write (write, move, delete), sharing.read and account_info.read. Enable them before connecting n8n, otherwise the authorization will fail or operations will return permission errors. Note that if you change the scopes later, you will need to reconnect the credential for them to take effect.
Step 2: configure the OAuth2 credentials in n8n
The n8n documentation offers two authentication methods: an access token (recommended for testing only) and OAuth2 (recommended for production). Avoid the first for anything serious: since late 2021, Dropbox only issues short-lived tokens, valid for roughly 4 hours. A hard-coded token will stop working by the afternoon.
For the OAuth2 method on a self-hosted instance:
- In n8n, create a Dropbox OAuth2 API credential. n8n displays an OAuth Redirect URL.
- Paste that URL into the Redirect URIs field of your app, in the App Console's Settings tab.
- Copy the Dropbox App key into n8n's Client ID field, and the Secret into Client Secret.
- Set the APP Access Type in n8n to the same value you chose when creating the app (App Folder or Full Dropbox).
- Click Connect my account and approve the Dropbox authorization screen.
One important detail: the n8n credential requests offline access (the token_access_type=offline parameter in the authorization URL), which gives it a refresh token. That mechanism is what lets n8n renew the 4-hour access token automatically, with no manual intervention. The principle is the same as for Google APIs — our guide to setting up Google OAuth2 in n8n explains the redirect URI / consent flow if it still feels opaque.
Last detail: while your app has development status, Dropbox caps it at 50 connected users, after which you get two weeks to apply for production status. For an app that only serves your n8n instance, you will never hit that limit.
The Dropbox node's operations
The node is organized around three resources:
- File: Upload, Download, Copy, Move, Delete;
- Folder: Create, Copy, Move, Delete, plus listing a folder's contents (files and subfolders);
- Search: Query, to find files by keyword.
Two rules worth knowing about paths: they start with / (the root of the account or of the app folder), and if you chose App Folder, every path is relative to that folder — /reports/may.pdf actually points to /Apps/YourApp/reports/may.pdf.
For file contents, n8n works with binary data attached to items. A Download produces an item with a binary property (usually named data); an Upload consumes that property. Here is an upload of an attachment fetched earlier in the workflow:
Resource: File
Operation: Upload
Path: /Archives/{{ $now.format('yyyy-MM') }}/{{ $binary.data.fileName }}
Binary File: true
Input Binary Field: data
The {{ $now.format('yyyy-MM') }} expression automatically files each document into a monthly folder — Dropbox creates missing folders on upload. To understand this binary model in depth (and its memory limits), read our guide to handling large files and binary data in n8n.
Four concrete use cases
Automatic email attachment backup
A Gmail or IMAP trigger fetches incoming emails, a Filter node keeps those with attachments, and the Dropbox node uploads them into a folder per sender or per month. It is the natural companion to automated inbox triage: the message gets handled, the attachment gets archived.
Archiving AI-classified invoices
Combine AI-powered data extraction from PDF invoices with a Dropbox upload whose path is built from the extracted fields: /Invoices/{{ $json.year }}/{{ $json.vendor }}-{{ $json.number }}.pdf. The same pattern works for classifying any incoming document with an LLM before filing it. If your volumes call for object storage, the AI archiving to S3 variant follows the same logic.
Syncing Dropbox to a vector store for RAG
A Schedule Trigger lists a Dropbox folder, compares the files against those already indexed, downloads the new ones, chunks them and inserts them into pgvector or Pinecone. This is no gimmick: the study by Patrick Lewis and co-authors published at NeurIPS 2020, "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (Google Scholar), showed that grounding a language model in retrieved documents produces more factual and more specific answers than the model alone — but only if the index reflects your current documents, hence the sync. The full setup is covered in our RAG guide with n8n and Supabase.
Exporting generated reports
Your workflows produce deliverables — Excel or CSV files generated by n8n, reporting PDFs — and the Dropbox upload drops them into a folder shared with the client. More reliable than email: the file is versioned and available to the whole team.
Pitfalls and best practices
- Expiring tokens: if your workflows start failing with authentication errors after a few hours, you are using a static access token. Switch to OAuth2; if an OAuth2 credential still ends up disconnected (invalidated refresh token, for instance after a password or scope change), reconnect it manually via "Reconnect".
- Large files: the Dropbox API's simple upload endpoint caps out at 150 MB per file. Beyond that, you need chunked upload sessions through the HTTP Request node. Even under the threshold, n8n loads binaries into memory by default: on a small instance, switch binary data storage to the filesystem.
- No native trigger: unlike some other integrations, there is no Dropbox trigger node. The standard pattern is scheduled polling (Schedule Trigger + folder listing + filtering out files already seen).
- App Folder paths:
path/not_founderrors almost always come from an absolute path used with an App Folder app, or a missing leading/. - Backups are not optional: the large-scale study by Bairavasundaram, Goodson, Schroeder and the Arpaci-Dusseaus presented at USENIX FAST in 2008, "An Analysis of Data Corruption in the Storage Stack" (Google Scholar), observed more than 400,000 silent corruption events across 1.53 million production disks over 41 months. Automating an off-site copy of your critical documents is not paranoia, it is statistics.
Finally, if your stack leans Google, the equivalent guide for Google Drive follows the same structure; and for exchanges with traditional servers, see transferring files over SFTP with n8n.
Key takeaways
- Create a Scoped access app in the Dropbox App Console, choose App Folder or Full Dropbox, and enable the files.content.read and files.content.write scopes (plus sharing.read and account_info.read).
- Use n8n's OAuth2 credential (App key → Client ID, Secret → Client Secret, Redirect URL on the Dropbox side): it obtains a refresh token and renews the 4-hour access tokens on its own.
- The node covers upload, download, copy, move, delete, folder creation and listing, and search; file contents travel as binary data on items.
- High-value use cases: attachment archiving, AI-classified invoices, syncing to a RAG vector store, and dropping generated reports into shared folders.
- Watch the three recurring pitfalls: static tokens that expire, relative paths in App Folder mode, and the 150 MB simple-upload limit.
FAQ
Frequently asked questions
Do I need a paid Dropbox account to use the Dropbox node in n8n?
No. A free Dropbox account is enough to create an app in the App Console and use the API. The limits that matter are your storage quota and, on the app side, the production approval Dropbox requires once more than 50 users have connected to your application.
Why does my Dropbox access token expire after a few hours?
Since late 2021, Dropbox only issues short-lived access tokens (roughly 4 hours). A token generated manually in the App Console therefore stops working quickly. Use the OAuth2 method in n8n instead: it requests offline access with a refresh token, and n8n renews the access token automatically.
Is there a native Dropbox trigger node in n8n?
No, n8n does not ship a dedicated Dropbox trigger. To react to new files, combine a Schedule Trigger with the folder listing operation, then filter out files you have already processed (by modification date or a stored list of IDs). The alternative is a webhook fed by a third-party service.
Can the Dropbox node handle very large files?
The Dropbox API's simple upload endpoint is capped at 150 MB per file. Below that threshold everything goes through the standard node. Beyond it you need chunked upload sessions via HTTP Request calls, and you should watch your n8n instance's memory, since binary data is loaded into RAM by default.
Bundle FlowKit Complet
€269