Daily
Copy yesterday's metrics from a sheet into a Notion daily report
Each morning, yesterday's campaign totals are added up from your metrics sheet and saved as an entry in your Notion daily-report database.
- Runs
- Daily
- Apps
- Google Sheets, Notion
- AI
- Not needed
- Access
- Sheet read; Notion insert
Send this to your assistant
Create a ClickRuntime automation: every morning, add up yesterday's spend, clicks and conversions from my Metrics sheet and create an entry in my Notion daily-report database.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A small marketing team exports ad results into a spreadsheet every day, but plans and discusses campaigns in Notion. Someone copies the totals across each morning, and on busy days the report is skipped.
Having yesterday's numbers appear in Notion every morning keeps the daily report reliable. Discussions start from the same figures and trends are easy to spot over weeks.
What you get out of it
The daily report always exists
An entry appears every morning without anyone copying numbers. Gaps in the record disappear.
Numbers where decisions are made
The team sees results next to campaign plans in Notion. Changes are made with the latest data in view.
No copy-paste mistakes
Totals are added up directly from the sheet. Typos and missed rows stop creeping into reports.
Trends over time
A database of daily entries can be charted or filtered by week. Slow declines are noticed early.
How it works
What happens, step by step
Every morning, ClickRuntime reads your Metrics sheet and picks out the rows dated yesterday.
It adds up spend, clicks and conversions across those rows.
A new entry with the totals is created in your Notion daily-report database.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
- Connect Notion and share the database you want it to use
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 Google Sheets and Notion steps into one automation
Under the hood
The code that runs this automation
from datetime import date, timedelta
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http
SHEET_ID, DB_ID = "your-spreadsheet-id", "your-notion-database-id"
@on_trigger
def run(event):
day = (date.today() - timedelta(days=1)).isoformat()
rows = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets().values().get(
spreadsheetId=SHEET_ID, range="Metrics!A2:D", valueRenderOption="UNFORMATTED_VALUE").execute().get("values", [])
mine = [r for r in rows if str(r[0]).startswith(day) and len(r) >= 4]
if not mine:
return {"rows": 0}
spend, clicks, conv = (sum(float(r[i] or 0) for r in mine) for i in (1, 2, 3))
http.post("https://api.notion.com/v1/pages", headers={"Authorization": f"Bearer {credentials.connection('notion', 'work')}",
"Notion-Version": "2022-06-28"}, json={"parent": {"database_id": DB_ID}, "properties": {
"Name": {"title": [{"text": {"content": f"Report {day}"}}]}, "Date": {"date": {"start": day}},
"Spend": {"number": round(spend, 2)}, "Clicks": {"number": clicks}, "Conversions": {"number": conv},
"Cost per conversion": {"number": round(spend / conv, 2) if conv else None}}})
return {"rows": len(mine), "spend": round(spend, 2)}FAQ
Common questions
Which metrics are included?
What if yesterday's data arrives late?
Can it compare with the day before?
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
Log news from your feeds to a sheet with a daily Notion report
Each day, new items from your RSS feeds are categorised and summarised by AI, added to a sheet and collected into a report page in Notion.
See how it worksTurn this week's saved links into a newsletter draft in Notion
Every Friday, the links you collected in your sheet become a newsletter draft page in Notion, ready to edit.
See how it worksPublish a weekly analysis of your sheet data in Notion
Every Monday last week's rows in your sheet are analysed and a report page with findings and likely causes is published in Notion.
See how it worksKeep exploring
Set up “Copy yesterday's metrics from a sheet into a Notion daily report” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.