Weekly
Email yourself a weekly CSV of a table
Every Sunday a CSV copy of one small table arrives in your inbox.
- Runs
- Weekly
- Apps
- Supabase
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every Sunday at 6pm, export my Supabase contacts table as CSV 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 small team keeps its customers, orders or a waitlist in a Supabase table and relies on the platform's own backups. Those are good, but they are not in the team's hands, may require a paid plan for point-in-time recovery and cannot be opened by a non-technical colleague. If someone drops a column or runs a bad update, there is nothing easy to restore from.
Once a week, ClickRuntime pages through the table you name, builds a CSV file from every row and emails it to you inline. You end up with a dated copy sitting in your own inbox that anyone can open in a spreadsheet, whether or not they have database access.
It suits founders, small ops teams and anyone with a modest table who wants an independent safety copy.
What you get out of it
You hold a copy independent of the platform
A CSV in your own mailbox survives an account problem, a billing issue or a mistaken project deletion. Having a copy outside the system you are protecting is the basic rule of sensible backups.
Mistakes become recoverable
If an update overwrites a column or someone deletes rows by accident, last week's file shows what the data looked like. Restoring from it takes an import rather than a frantic search for any record of the values.
Non-technical people can open the data
A CSV opens in any spreadsheet. A colleague in finance or support can search customer rows without needing database credentials, which reduces risky requests for direct access to production data.
Weekly snapshots show change over time
Comparing two weekly files tells you how many rows were added, which values changed and what was removed. That helps with audits, with debugging data problems and with answering questions about the past.
Backups happen without anyone remembering
Manual exports get skipped when a team is busy. A scheduled backup runs whether or not anyone thinks about it, and the arrival of the email is itself a quick reassurance that the job is working.
How it works
What happens, step by step
Every Sunday ClickRuntime reads every row of the Supabase table you chose.
It turns the rows into a CSV file.
The CSV arrives in your inbox, ready to open in a spreadsheet or restore from.
Before it runs live
- Connect Supabase
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 Supabase steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify
SUPABASE_URL = "https://your-project.supabase.co"
def sb_headers(**extra):
key = credentials.secret("SUPABASE_SECRET_KEY")
return {"apikey": key, "Authorization": f"Bearer {key}", **extra}
PAGE = 1000
@on_trigger
def run(event):
chunks, offset = [], 0
while True:
resp = http.get(f"{SUPABASE_URL}/rest/v1/contacts", params={"select": "*", "order": "id", "limit": PAGE, "offset": offset},
headers=sb_headers(Accept="text/csv"))
resp.raise_for_status()
lines = resp.text.splitlines()
chunks += lines if offset == 0 else lines[1:]
if len(lines) - 1 < PAGE:
break
offset += PAGE
notify.email_me(f"Supabase contacts backup ({len(chunks) - 1} rows)", "\n".join(chunks))
return {"rows": len(chunks) - 1}FAQ
Common questions
How large a table can it handle?
Does the CSV include sensitive columns?
Can I back up several tables in one email?
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
Fill a Supabase table from feeds on a schedule
New articles, prices or other public items land in your table every hour, with duplicates skipped.
See how it worksStop a free Supabase project from pausing
Your free project stays active, and you hear about it if the keep-alive query fails.
See how it worksGet yesterday's signups and orders by email
Each morning you see how many rows were added to your key tables the day before, compared with the day prior.
See how it worksKeep exploring
Set up “Email yourself a weekly CSV of a table” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.