The moment it happens
Store your app's events in Supabase
Every event your app sends to a secure link is saved as a row, and each week you get counts by event type.
- Runs
- The moment it happens
- Apps
- Supabase
- AI
- Not needed
- Access
- secret key (read+write)
Send this to your assistant
Create a ClickRuntime automation: give me a link my app can post events to. Check the shared secret header, insert each event into my Supabase events table, and every Monday email me counts by event type.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A developer has a payment provider, a form tool and a custom script all sending events somewhere, and nobody can answer simple questions like how many came in last week or whether yesterday's missing order ever arrived. Logs rotate, dashboards of each tool show only their own side and debugging an integration means asking three vendors for their delivery records.
ClickRuntime gives you a link that your apps can send events to. When one arrives, it verifies a token header so strangers cannot write to your data, inserts the payload as a row in Supabase and, once a week, emails a count of events by type. You get a durable, queryable record and a short report without building a collector.
It suits developers, integrators and small teams that need to see what their systems actually sent.
What you get out of it
You can prove what was sent and when
When a partner claims an event never arrived, a timestamped row in your table settles the matter. A reliable record makes debugging integrations and resolving disputes much faster. Vendors can then be asked precise questions.
All sources land in one place
Events from different apps and scripts end up in the same table, so you can search them together. Spotting that three tools failed within the same minute becomes easy instead of a separate hunt per vendor.
Only trusted senders can write
The token header check rejects requests that do not carry your secret. That protects your table from junk and from anyone who discovers the link, and the token itself is stored as a secret.
Weekly counts reveal silent changes
A drop from 400 order events to 40 shows up in the weekly report, even though nothing visibly broke. Catching changes in volume early tells you when a sender has changed or stopped.
Replays and analysis become possible
Raw payloads kept in Supabase can be reprocessed later, for instance to rebuild a report or test a new handler against real data. Storing them costs little and creates options you cannot get back afterward.
How it works
What happens, step by step
When your app sends an event to your private ClickRuntime link, the automation checks it carries your secret token and rejects anything that doesn't.
Each accepted event is saved as a new row in your Supabase table.
Once a week ClickRuntime counts last week's events by type and emails you the totals.
Before it runs live
- Connect Supabase
- Paste your automation's link into the other app's webhook settings
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 Supabase steps into one automation
Under the hood
The code that runs this automation
import hmac
from collections import Counter
from datetime import datetime, timedelta, timezone
from clickruntime import on_event, 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}
@on_event
def handle(event):
if not hmac.compare_digest(event.header("x-webhook-token") or "", credentials.secret("WEBHOOK_TOKEN")):
return {"ok": False}
body = event.json or {}
row = {"type": body.get("type", "unknown"), "payload": body, "event_id": event.event_id}
http.post(f"{SUPABASE_URL}/rest/v1/events", json=row, headers=sb_headers(Prefer="return=minimal")).raise_for_status()
return {"ok": True}
@on_trigger
def weekly(event):
since = (datetime.now(timezone.utc) - timedelta(days=7)).isoformat()
rows = http.get(f"{SUPABASE_URL}/rest/v1/events", params={"select": "type", "created_at": f"gte.{since}"},
headers=sb_headers()).json()
counts = Counter(r["type"] for r in rows)
notify.email_me(f"{len(rows)} events last week", "\n".join(f"{t}: {n}" for t, n in counts.most_common()))
return dict(counts)FAQ
Common questions
How do my apps authenticate with the link?
Is the whole payload stored or only some fields?
What does the weekly email show?
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 “Store your app's events in Supabase” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.