Daily
Back up a monday.com board to CSV nightly
A CSV copy of the whole board, with every column, arrives in your inbox each night.
- Runs
- Daily
- Apps
- monday.com
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every night at 11pm, export all items and columns from my monday.com Inventory board to a CSV file and email it to me.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A monday.com board is often the only copy of a client list, a production schedule or an approval log. If someone bulk-deletes a group, an import overwrites a column, or an admin leaves and their boards are archived, the data is gone or very hard to reconstruct. Teams usually discover they have no backup at the moment they need one, usually right after an accidental change.
Every day ClickRuntime fetches all items and column values from the board you name, flattens them to a CSV file with one row per item and one column per field, and emails it as an attachment. The file's date is in its name, so you can find any day's state later.
It is a practical safeguard for anyone who treats a board as a system of record.
What you get out of it
A restore point from any recent day
If a column is overwritten on Wednesday, Tuesday's CSV still holds the old values. You can compare the two files and re-enter exactly what changed instead of guessing. Each file is named with its date, so choosing the right one takes seconds.
Protection against accidental deletion
Deleted groups and items can be hard to recover after the retention window. A copy in your own mailbox exists independently of monday.com and of whoever had permission to delete.
Data outside a single tool
A CSV opens in Excel or Google Sheets and imports elsewhere, so a move to another platform does not start from scratch. The export doubles as a migration file. Opening the file in a spreadsheet takes seconds, and the columns line up with your board for reference.
Evidence of past state for audits
When an auditor or client asks what the schedule looked like on the 3rd, a dated file answers it. Board history inside monday.com is not always enough to show that.
No manual export habit
Nobody has to remember to click Export on a Friday. The daily rhythm means the worst-case data loss is about one day of edits. Daily timing means the worst-case loss is one day of edits, and no one has to be the person who remembers.
How it works
What happens, step by step
Every night, ClickRuntime reads every item on your monday.com board, with all its column values.
It turns them into a spreadsheet file (CSV), one row per item.
The file is emailed to you, with the number of items in the subject line.
Before it runs live
- Connect monday.com
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
- Run it at a different time, more or less often, or only on weekdays
- 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 monday.com steps into one automation
Under the hood
The code that runs this automation
import csv, io
from clickruntime import on_trigger, notify, http, credentials
BOARD_ID = 1234567890 # your Inventory board
QUERY = """query ($board: [ID!], $cursor: String) { boards(ids: $board) { items_page(limit: 500, cursor: $cursor) {
cursor items { id name column_values { column { title } text } } } } }"""
@on_trigger
def run(event):
headers = {"Authorization": credentials.secret("MONDAY_API_TOKEN"), "API-Version": "2024-10"}
rows, cursor = [], None
while True:
page = http.post("https://api.monday.com/v2", headers=headers, json={"query": QUERY, "variables": {"board": [BOARD_ID], "cursor": cursor}}).json()["data"]["boards"][0]["items_page"]
rows += page["items"]
cursor = page["cursor"]
if not cursor:
break
titles = [c["column"]["title"] for c in rows[0]["column_values"]] if rows else []
buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(["id", "name"] + titles)
for item in rows:
writer.writerow([item["id"], item["name"]] + [c["text"] for c in item["column_values"]])
notify.email_me(f"Inventory backup: {len(rows)} items", buf.getvalue())
return {"items": len(rows)}FAQ
Common questions
Does the CSV include subitems and updates?
Is there a size limit on the attachment?
Can several boards be backed up?
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
Email yourself overdue monday.com items each morning
One morning email lists every item past its due date that isn't marked Done.
See how it worksSee the week's due dates grouped by owner
Each weekday morning you get everything due in the next seven days, sorted under the person responsible.
See how it worksList monday.com mentions you haven't answered
Each morning you see the updates that @mention you where you still haven't replied.
See how it worksKeep exploring
Set up “Back up a monday.com board to CSV nightly” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.