On a schedule
Start the day with yesterday's numbers
Each morning you get yesterday's key figures by channel and three plain-English lines on what stood out.
- Runs
- On a schedule
- Apps
- Google Analytics
- AI
- Yes, uses the built-in AI allowance
- Access
- analytics.readonly
Send this to your assistant
Create a ClickRuntime automation: every day at 7am, email me yesterday's GA4 users, sessions and conversions by channel with a 3-line AI summary.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
The owner of an online course business opens Google Analytics each morning, scans the channel table and tries to decide whether yesterday was good. Sessions look up, but is that from the newsletter, a social post or a one-off bot spike? Without a quick read, the numbers stay numbers, and the days when organic search quietly dropped get noticed late.
On the schedule you set, ClickRuntime runs a GA4 report for yesterday split by channel and has its built-in AI write a short plain-English summary of what the figures say. The email opens with those few sentences, followed by the numbers behind them, so you understand the day before you have finished your coffee.
It is also popular with founders who do not live in analytics and just want to know if anything needs attention.
What you get out of it
Meaning, not just numbers
A sentence like "organic search fell 18 percent while email held steady" tells you where to look. You skip the squinting and go straight to the cause or the follow-up.
Daily awareness without opening GA4
The email arrives where you already read, so you stay informed on days you would never log in. For a small team, that habit alone catches issues sooner than weekly check-ins.
Channel shifts show up quickly
Because yesterday is broken down by channel, a drop in paid or organic traffic is visible the next morning. You can pause a campaign or check a ranking before the loss compounds.
Easier to share with non-analysts
A partner or investor can read the paragraph without knowing what a session is. That makes it simple to forward the day's email when someone asks how the launch is going.
Consistent snapshot to compare against
Each day follows the same structure, so changes stand out against the previous emails. Over a few weeks you learn what a normal Tuesday looks like for your site. That familiarity makes odd days easy to spot.
How it works
What happens, step by step
Every morning at 7, ClickRuntime pulls yesterday's sessions, users and conversions from Google Analytics, split by channel such as paid search, organic and direct.
AI reads the figures and writes three plain-English lines on what stood out.
You get one email with the summary at the top and the figures for each channel below.
Before it runs live
- Connect Google Analytics
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
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Google Analytics steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, ai, notify
PROPERTY = "123456789"
@on_trigger
def run(event):
rows = http.post(f"https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY}:runReport",
headers={"Authorization": f"Bearer {credentials.connection('google', 'work')}"},
json={"dateRanges": [{"startDate": "yesterday", "endDate": "yesterday"}],
"dimensions": [{"name": "sessionDefaultChannelGroup"}],
"metrics": [{"name": "sessions"}, {"name": "totalUsers"}, {"name": "conversions"}]},
).json().get("rows", [])
table = "\n".join(f"{r['dimensionValues'][0]['value']}: " + ", ".join(v["value"] for v in r["metricValues"]) for r in rows)
summary = ai.generate(f"Channel: sessions, users, conversions\n{table}",
system="Write exactly three short plain-English lines on what stood out.", max_output_tokens=150).text
notify.email_me("Yesterday on the website", f"{summary}\n\n{table}")
return {"channels": len(rows)}FAQ
Common questions
How accurate is the AI summary?
Can the report include a specific key event, like purchases?
Does yesterday's data change after I receive it?
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 a weekly traffic report with commentary
Every Monday you see last week's sessions, users, top pages and sources against the week before, with a short explanation of what moved.
See how it worksGet a monthly channel report with insights
On the 1st you get last month's traffic by channel against the month before, with written takeaways.
See how it worksHear when yesterday's traffic falls short
You get an email only on days when sessions dropped well below the recent average.
See how it worksKeep exploring
Set up “Start the day with yesterday's numbers” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.