Skip to content

On a schedule

Get a monthly channel report with insights

On the 1st you get last month's traffic by channel against the month before, with written takeaways.

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: on the 1st of each month, email me last month's GA4 traffic by channel compared with the month before, with AI insights on what changed.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

The marketing manager at a regional law firm must send a monthly traffic report to the partners. She exports channel data from Google Analytics, builds a chart, then tries to explain why organic search dipped while paid social grew. By the time the deck is done on the 4th, it is half a day of work for a report the partners skim in two minutes.

On the 1st of each month, ClickRuntime runs a GA4 report on sessions by default channel group for last month and the month before it. Its built-in AI turns the comparison into a few paragraphs of commentary on what grew, what shrank and what deserves attention, and emails both the figures and the writing.

Consultants use it to deliver a first draft to clients, then add their own recommendations on top.

What you get out of it

  • Report ready on day one

    The email is waiting on the first of the month, not after hours of assembly. The marketing team starts the month planning instead of reporting on the last one. Partners receive it before they ask for it, which builds trust in the marketing function.

  • Partners get a readable story

    Commentary explains movement in words that non-marketers follow. Leaders can agree on a response in the meeting itself, rather than asking for a follow-up note. That turns the report from a status update into a basis for decisions about budget and effort.

  • Channel mix changes stay in view

    Comparing each channel against the previous month highlights whether you rely too heavily on one source. Diversifying becomes a visible goal, not a vague intention. A healthy mix protects you if an algorithm change hits one source, and the monthly comparison keeps that risk in front of everyone.

  • Better use of consultant time

    An agency or freelancer starts from a drafted summary and adds expertise on top. The hours you bill go toward recommendations, which clients value more than data transcription. That makes each client engagement more profitable and more useful to the client.

  • Month-to-month history in the inbox

    Because every report follows the same format, the archive becomes a year-long narrative. Answering what happened in April takes a search instead of a new analysis. Annual reviews and budget planning become much easier with a year of consistent reports to read.

How it works

What happens, step by step

  1. On the 1st of every month, ClickRuntime pulls last month's traffic and conversions from Google Analytics for each channel, alongside the month before.

  2. AI compares the two months and writes three takeaways and two suggestions.

  3. You get one email with the written takeaways at the top and the figures for each channel below.

Before it runs live

  • Connect Google Analytics

What you get

RunsOn a schedule
Get a monthly channel report with insightstoday, 9:00Succeeded
Email · Marketing report: September 2026Organic search grew 22% and now brings half of all conversions. Suggestion: shift some paid social budget to the pricing page retargeting.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
monthly_marketing_report_with_ai_commentary.pyexample
from datetime import date, timedelta
from clickruntime import on_trigger, credentials, http, ai, notify

PROPERTY = "123456789"

@on_trigger
def run(event):
    end = date.today().replace(day=1) - timedelta(days=1)
    start = end.replace(day=1)
    prev_end = start - timedelta(days=1)
    rows = http.post(f"https://analyticsdata.googleapis.com/v1beta/properties/{PROPERTY}:runReport",
        headers={"Authorization": f"Bearer {credentials.connection('google', 'work')}"},
        json={"dateRanges": [{"startDate": str(start), "endDate": str(end), "name": "this"},
                             {"startDate": str(prev_end.replace(day=1)), "endDate": str(prev_end), "name": "previous"}],
              "dimensions": [{"name": "sessionDefaultChannelGroup"}],
              "metrics": [{"name": "sessions"}, {"name": "conversions"}]},
    ).json().get("rows", [])
    table = "\n".join(f"{r['dimensionValues'][0]['value']} ({r['dimensionValues'][1]['value']}): "
                      f"{r['metricValues'][0]['value']} sessions, {r['metricValues'][1]['value']} conversions" for r in rows)
    takeaways = ai.generate(table, system="Compare this month with the previous one by channel. Give 3 takeaways and 2 suggestions.", max_output_tokens=400).text
    notify.email_me(f"Marketing report: {start:%B %Y}", f"{takeaways}\n\n{table}")
    return {"rows": len(rows)}

FAQ

Common questions

Which channels does the report include?
It uses GA4's default channel groups, such as Organic Search, Paid Search, Direct, Email, Organic Social and Referral. If you have custom channel groupings in your property, those can be used instead, so the report matches how your team already thinks about sources.
Can the commentary mention conversions as well as traffic?
Yes. Add key events such as purchases or form submissions to the report, and the commentary will discuss how conversions moved by channel too. That matters when traffic rises but leads do not, which the AI can point out directly.
Why does it run on the 1st rather than the last day?
Reports need a full calendar month of data, and GA4 can finalize numbers a few hours after midnight. Running on the 1st means both months are complete and comparable, and the figures will not change after you read the email.
What permissions does it need?
analytics.readonly. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it runs (on a schedule). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Get a monthly channel report with insights” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.