Every 15 minutes
File new uploads by year and month
Anything dropped in your inbox folder is moved into a dated archive folder, created when needed.
- Runs
- Every 15 minutes
- Apps
- Dropbox
- AI
- Not needed
- Access
- files.metadata.read, files.content.write
Send this to your assistant
Create a ClickRuntime automation: whenever a file lands in /Inbox in Dropbox, move it to /Archive/<year>/<month> based on when it was added, creating the folder if it doesn't exist.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A shared Dropbox inbox folder is where everything lands: receipts from a phone camera, client uploads, exports from other tools. Within a month it holds hundreds of unsorted files, and finding last March's invoice means scrolling through everything. Sorting by hand is the sort of task that nobody wants to do and everyone benefits from, so it gets done once a year or never.
Every 15 minutes the automation looks for new files in your inbox folder, works out the right destination based on the date or file type, creates the folder if it does not exist, and moves the file there. By the time you next look, your files are already in folders such as 2026/03 or PDFs.
Bookkeepers, photographers, small agencies and anyone who receives files from many sources will appreciate it.
What you get out of it
Files are findable when needed
With year and month folders, you can open last March directly. Finding a document takes seconds, and nobody has to remember what it was called or who uploaded it, which is how files usually go missing.
The inbox stays empty
New files are moved out as they arrive, so the inbox only ever shows what has just come in. That makes it obvious when something unusual arrives, because it is the only thing in the folder.
Consistent structure for the team
Everyone's files end up in the same folder pattern, so colleagues know where to look. Shared folders with a predictable structure are much easier to work in than ones that reflect each person's own habits.
Month-end and tax time are easier
Receipts and invoices already sorted by month can be handed to an accountant in minutes. The scramble to find paperwork at the deadline is gone, along with the risk of a missing document.
No manual filing habit to maintain
Filing by hand is a habit that lapses in busy weeks. A scheduled automation keeps working during the weeks when nobody has time for it, which are exactly the weeks when files pile up fastest.
How it works
What happens, step by step
Every 15 minutes, ClickRuntime checks your Dropbox folder for newly added files.
For each one it works out the matching year and month folder, such as 2026/10.
If that folder doesn't exist yet, it creates it.
The file is moved into it.
Before it runs live
- Connect Dropbox
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Dropbox steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime
from clickruntime import on_trigger, report_fetched, state, http, credentials
API = "https://api.dropboxapi.com/2/files"
@on_trigger
def run(event):
auth = {"Authorization": "Bearer " + credentials.connection("dropbox", "main")}
cursor = state.get("cursor") or http.post(f"{API}/list_folder/get_latest_cursor", headers=auth, json={"path": "/Inbox"}).json()["cursor"]
page = http.post(f"{API}/list_folder/continue", headers=auth, json={"cursor": cursor}).json()
files = [e for e in page["entries"] if e[".tag"] == "file"]
report_fetched(len(files))
if not files:
return {"summary": "Nothing new in /Inbox"}
for f in files:
added = datetime.fromisoformat(f["server_modified"].replace("Z", "+00:00"))
folder = f"/Archive/{added:%Y}/{added:%m}"
resp = http.post(f"{API}/create_folder_v2", headers=auth, json={"path": folder, "autorename": False})
if resp.status_code not in (200, 409): # 409: folder already exists
resp.raise_for_status()
http.post(f"{API}/move_v2", headers=auth, json={"from_path": f["path_lower"], "to_path": f"{folder}/{f['name']}", "autorename": True}).raise_for_status()
state.set("cursor", page["cursor"])
return {"moved": len(files)}FAQ
Common questions
How does it decide which folder a file goes in?
What if a file with the same name already exists in the destination?
Does it touch files that are already organized?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get told when files land in a Dropbox folder
You get an email listing new files shortly after they show up in the folder.
See how it worksGet a summary of each new note or document
When a text, Markdown or PDF file is added, you get the key points by email.
See how it worksRead invoices saved to Dropbox and post the details
Each invoice PDF in the folder is read and its vendor, date, total and due date are posted for finance.
See how it worksKeep exploring
Set up “File new uploads by year and month” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.