Hourly
Get a Slack alert when PostHog sign-ups dip
If an hour's sign-ups are 30% below the same hour last week, you know before the day is over.
- Runs
- Hourly
- Apps
- PostHog
- AI
- Not needed
- Access
- query:read
Send this to your assistant
Create a ClickRuntime automation: every hour, count sign-ups in PostHog for the last hour and message me in Slack if they're 30% or more below the same hour last week.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Product metrics rarely fall off a cliff in a way a person happens to notice. A signup form breaks after Tuesday's deployment, an error rate doubles after a release, or the checkout page stops loading in one browser. The charts bend slowly at first, and by the time someone opens PostHog and sees the gap, hours of lost signups or user-facing errors have piled up, along with a pile of support tickets.
Every hour, a query pulls recent counts of signups or errors from PostHog. The result is compared with the value stored from earlier checks, and if a metric moves beyond the range you set, a message is posted to Slack with the metric, the old figure and the new one. When everything looks normal nothing is sent, so a message in the channel always means something moved.
It helps small engineering teams without dedicated monitoring staff, and for growth teams whose month depends on signups staying healthy.
What you get out of it
Broken signups found in hours, not days
A form that stops working costs money for every hour it stays broken. An hourly comparison against recent values limits the damage to a morning instead of a long weekend of lost registrations.
Error spikes are tied to the release
When the alert lands soon after a deployment, the likely cause is obvious. Rolling back or patching quickly protects users and keeps the support queue from filling with the same complaint over and over.
Quiet unless something truly moved
Messages appear only when a metric leaves its normal range. That keeps the channel readable and makes each alert worth opening, rather than training the team to mute yet another noisy integration.
Basic cover without a monitoring team
Small companies cannot afford someone watching dashboards all day. A simple hourly check on the few numbers that matter provides a safety net that a busy founder or lead engineer can actually maintain.
A rough timeline for postmortems
The time of each alert gives a starting point when reviewing an incident. Teams can see how long a problem lasted before anyone reacted, and use that gap to decide whether checks should run more often.
How it works
What happens, step by step
Every hour, ClickRuntime counts sign-ups in PostHog for the hour that just ended.
It compares that with the same hour last week.
If this hour is 30% or more lower, a message goes to your Slack channel with both counts.
Before it runs live
- Connect PostHog
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 PostHog steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify
PROJECT_ID = 12345
def hogql(query):
resp = http.post(f"https://us.posthog.com/api/projects/{PROJECT_ID}/query/",
headers={"Authorization": f"Bearer {credentials.secret('POSTHOG_API_KEY')}"},
json={"query": {"kind": "HogQLQuery", "query": query}})
resp.raise_for_status()
return resp.json()["results"]
@on_trigger
def run(event):
(now, week_ago), = hogql("""
SELECT countIf(timestamp > now() - INTERVAL 1 HOUR),
countIf(timestamp BETWEEN now() - INTERVAL 169 HOUR AND now() - INTERVAL 168 HOUR)
FROM events WHERE event = 'user signed up' AND timestamp > now() - INTERVAL 169 HOUR
""")
if week_ago and now <= week_ago * 0.7:
notify.slack(f"Sign-ups down {1 - now / week_ago:.0%}: {now} in the last hour vs {week_ago} "
"the same hour last week.", channel="#growth")
return {"last_hour": now, "week_ago": week_ago}FAQ
Common questions
How does it decide a movement is large?
Will quiet overnight hours cause false alarms?
Can several metrics be watched in one run?
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 yesterday's PostHog numbers
Each morning you get daily active users and sign-ups with the change from the same day last week.
See how it worksGet a Monday summary of your saved PostHog insights
Each week you read a short write-up of how your saved insights moved, instead of opening each one.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Get a Slack alert when PostHog sign-ups dip” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.