Your Google Drive is a mess. Don’t lie.
Downloads folder. Desktop. Shared drives. Inbox attachments saved without thinking. After a year of casual saving, you’ve got PDFs next to vacation photos next to invoices next to half-finished presentations — and nothing is findable.
The fix isn’t a “digital declutter weekend.” That takes hours and you’ll slide back in two weeks. The fix is an automation that runs forever and silently keeps everything sorted for you.
Here’s a 4-node n8n workflow that watches a Google Drive folder and automatically moves every new file into the right sub-folder — PDFs, Images, Spreadsheets, Documents, Presentations, Videos — with a date prefix so files sort chronologically without renaming anything manually.
What the workflow does
Node 1 — Google Drive Trigger: watch a folder
Polls a specific Google Drive folder every minute for new files. The moment a file lands in your “Inbox” folder (your drop zone), the workflow fires.
Node 2 — Code node: classify by type + generate new name
Looks at the file’s MIME type and filename extension:
-
application/pdfor.pdf→ PDFs -
image/*or.jpg/.jpeg/.png/.gif/.svg/.webp→ Images -
spreadsheetMIME or.xlsx/.xls/.csv→ Spreadsheets -
documentMIME or.doc/.docx/.txt/.md→ Documents -
presentationMIME or.ppt/.pptx→ Presentations -
video/*or.mp4/.mov/.avi→ Videos - Everything else → Other
Also prepends today’s date: 2026-05-22_invoice-client.pdf. Every folder sorts automatically from oldest to newest — no manual date-tagging ever.
Node 3 — Google Drive: move to folder
Moves the file from the Inbox folder into the classified sub-folder. Two-second operation. The original file is gone from your drop zone, organized where it belongs.
Node 4 — Google Sheets: log the action
Appends a row to a FileLog sheet: fileId, fileName, targetFolder, newName. Full audit trail: every file ever sorted, when it was sorted, where it went.
Setup (5 minutes)
-
Create the folder structure in Google Drive:
-
Inbox/(your drop zone) Files/PDFs/Files/Images/Files/Spreadsheets/Files/Documents/Files/Presentations/Files/Videos/Files/Other/
-
-
Import the JSON into n8n (New Workflow → Import from clipboard)
-
Connect your Google account in the Drive Trigger, Drive, and Sheets nodes (one OAuth connection covers all three)
-
Set your folder IDs in Node 1 (Inbox folder ID) and Node 3 (target folder IDs — one per category). Get folder IDs from the URL when you open a folder in Drive:
drive.google.com/drive/folders/FOLDER_ID_HERE -
Create a Google Sheet called
FileLogand set its ID in Node 4 -
Activate the workflow — it now runs forever
From now on: drop anything into Inbox, it’s organized in under 60 seconds.
Full workflow JSON
{
"name": "File Organizer",
"nodes": [
{
"parameters": {
"pollTimes": {"item": [{"mode": "everyMinute"}]},
"triggerOn": "specificFolder",
"folderToWatch": {"__rl": true, "value": "YOUR_INBOX_FOLDER_ID", "mode": "id"}
},
"id": "fo1", "name": "Watch Google Drive",
"type": "n8n-nodes-base.googleDriveTrigger", "typeVersion": 1, "position": [240, 300]
},
{
"parameters": {
"jsCode": "const file = $input.first().json;nconst name = file.name || '';nconst mime = file.mimeType || '';nlet folder = 'Other';nif (mime.includes('pdf') || name.endsWith('.pdf')) folder = 'PDFs';nelse if (mime.includes('image') || /\.(jpg|jpeg|png|gif|svg|webp)$/i.test(name)) folder = 'Images';nelse if (mime.includes('spreadsheet') || /\.(xlsx|xls|csv)$/i.test(name)) folder = 'Spreadsheets';nelse if (mime.includes('document') || /\.(doc|docx|txt|md)$/i.test(name)) folder = 'Documents';nelse if (mime.includes('presentation') || /\.(ppt|pptx)$/i.test(name)) folder = 'Presentations';nelse if (mime.includes('video') || /\.(mp4|mov|avi)$/i.test(name)) folder = 'Videos';nconst datePrefix = new Date().toISOString().split('T')[0];nreturn [{ json: { fileId: file.id, fileName: name, targetFolder: folder, newName: datePrefix + '_' + name } }];"
},
"id": "fo2", "name": "Classify File Type",
"type": "n8n-nodes-base.code", "typeVersion": 2, "position": [480, 300]
},
{
"parameters": {
"operation": "move",
"fileId": "={{ $json.fileId }}",
"folderId": "={{ $json.targetFolder }}"
},
"id": "fo3", "name": "Move to Folder",
"type": "n8n-nodes-base.googleDrive", "typeVersion": 3, "position": [720, 200]
},
{
"parameters": {
"operation": "append",
"documentId": {"__rl": true, "value": "YOUR_SHEET_ID", "mode": "id"},
"sheetName": {"__rl": true, "value": "FileLog", "mode": "name"},
"columns": {"mappingMode": "autoMapInputData"}
},
"id": "fo4", "name": "Log Action",
"type": "n8n-nodes-base.googleSheets", "typeVersion": 4.5, "position": [720, 400]
}
],
"connections": {
"Watch Google Drive": {"main": [[{"node": "Classify File Type", "type": "main", "index": 0}]]},
"Classify File Type": {"main": [[{"node": "Move to Folder", "type": "main", "index": 0}, {"node": "Log Action", "type": "main", "index": 0}]]}
},
"settings": {"executionOrder": "v1"},
"tags": [{"name": "file-management"}]
}
Customizations
Add more file types
The Code node’s classification logic is just a series of if/else statements. Add a line like:
else if (/.(zip|tar|gz)$/i.test(name)) folder = 'Archives';
for ZIP files, audio files, code files — whatever categories you need.
Use it as a shared team inbox
Share the Inbox folder with your team. Now anyone on the team can drop files and they’ll auto-sort into the right place. Works great for shared client deliverables, design assets, or contract PDFs.
Add Slack notification
Append a Slack node after Node 3:
"✅ {{$json.fileName}} → {{$json.targetFolder}}"
Great for team awareness when important files arrive.
Email attachment auto-saver
Pair this workflow with an n8n Gmail trigger that saves all attachments to the Inbox folder. Now every email attachment is automatically sorted by type and logged — your inbox clutter permanently solved.
Add AI-based naming
Replace the date prefix logic in the Code node with a call to the OpenAI or Claude API to generate a clean descriptive filename based on file content (for text-readable files). More complex but powerful for documents with generic names like scan001.pdf.
Why this compounds
Unlike a “clean up your files” session that you’ll undo in a month, this workflow runs silently forever. The longer it runs, the better your files are organized. Set it up once in 5 minutes, and your Drive is permanently sorted.
The audit log in Sheets also means you can easily answer: where did that file go? Search by filename, filter by date, done.
Get the full automation bundle
This workflow is part of our 15-template n8n automation bundle — each one covering a different business use case: lead capture, invoice generation, AI customer support, social media automation, price monitoring, and more.
Grab the full bundle at stripeai.gumroad.com — pre-tested, documented, ready to activate.
Built with n8n. Self-hostable, open source, no vendor lock-in.