---
title: "Weekly Google Analytics report by AI to email and Telegram"
kind: "Kit"
category: "Marketing & SEO"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/d1c107b2-23a1-49c6-96dd-27f39873390c"
updated: "2026-11-12"
---

# Weekly Google Analytics report by AI to email and Telegram

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that compares the last 7 days of a Google Analytics property with the same days a year earlier. An OpenAI model writes the summary and a table, sent by email every Monday and as plain text to Telegram.

Weekly Google Analytics report by AI to email and Telegram is an n8n workflow in the Marketing \& SEO category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow sends a weekly Google Analytics report. Every Monday at 7:00 it reads the last 7 days of a GA4 property and the same days a year earlier, then totals each set. An OpenAI model writes a short summary and a table of the changes. The report goes out as an HTML email, and a plain text copy goes to Telegram. Thirteen nodes do the work, beside one sticky note.

### Who it suits

Shop owners, marketers and small teams who want a weekly read on traffic and sales without opening Google Analytics. Skip it if you need several properties in one report or charts. It reports one property, as text and a table.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| E-commerce | Shop owners | Check traffic and revenue against last year every Monday | An owner reads that revenue per purchase fell while sessions rose, before the weekly meeting. |
| Travel | Marketing managers | Share one traffic summary with the whole team | A manager forwards the Monday email to the booking team. |
| Agencies | Account managers | Send clients a standing weekly report | A manager points the email at a client’s address and reads the Telegram copy on a phone. |
| Publishing | Editors | Watch views and users against the same week last year | An editor sees page views ahead of last year and plans more of the same topics. |

You need a little n8n: import a file, add up to four credentials and choose your Google Analytics property.

### Where to use it

Any n8n that can reach Google, OpenAI, a mail server and Telegram will run it. The report arrives by email and, if you keep that branch, in a Telegram chat.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file and steps
- Email only: delete the two Telegram nodes
- Another site: pick its property in both Google Analytics nodes

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Four accounts are involved, and the Telegram one is optional.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| Google Analytics | A GA4 property and a Google account that can read it, for a Google Analytics OAuth2 credential |
| OpenAI | An API key, for an OpenAI credential |
| Email | The SMTP details of a mailbox that can send, for an SMTP credential |
| Telegram | A bot token and your chat ID, for a Telegram credential (optional) |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Open `Google Analytics: Last 7 days`, add a Google Analytics OAuth2 credential and choose your GA4 property. Do the same in `Google Analytics: Past 7 days of the previous year`.
3. Open `Processing for email` and `Processing for Telegram` and add an OpenAI credential with your key.
4. Open `Send Email`, add an SMTP credential, and replace `<YOUR_FROM_EMAIL>` and `<YOUR_TO_EMAIL>` with real addresses.
5. Open `Telegram`, add a Telegram credential and replace `<YOUR_TELEGRAM_CHAT_ID>` with your chat ID. Delete this node and `Processing for Telegram` if you only want email.
6. Press Execute workflow once and check the email. Then press Publish so the Monday schedule runs.

### How to use it

Nothing to press after that. Each Monday at 7:00 the workflow reads both periods, and the report arrives by email with a short text copy in Telegram. Execute workflow sends one at any other time.

What to change for a different result

| To change | Where |
| --- | --- |
| The day and the hour | Trigger at Day and Trigger at Hour in \`Schedule Trigger\` |
| The numbers reported | The metrics in both Google Analytics nodes, then the names in both \`Assign data\` and both \`Summarize Data\` nodes |
| The wording and layout of the email | The prompt in \`Processing for email\` |
| The number format and the currency | The format lines in the prompt of \`Processing for email\` |
| The model | Model in \`Processing for email\` and \`Processing for Telegram\` |

### Example

A shop owner opens the email at 7:00 on Monday. At the top is a short summary of three sentences. Below it a table sets the last 7 days against the same days a year earlier, with a percentage change for each metric.

Telegram brings the same numbers as separate lines, such as total views, last year’s total views and the difference.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one runs the same steps twice, once for this week and once for last year, then hands both results to the model. Run it by hand first and open each box to see the numbers move along.

**For experts.** The year-earlier dates come from a Code node that moves today back one year, then back a further 7 days for the start. Both Google Analytics calls cover 8 calendar dates, since Last 7 Days runs from 7 days back up to today.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`Schedule Trigger\` | Schedule Trigger 1.2, weekly, on day 1 at hour 7 | The minute is 0, and the time follows the workflow’s time zone |
| \`Google Analytics: Last 7 days\` | Google Analytics 2, Report, Get, with eight metrics by date | Today is a partial day, and it returns at most 50 rows because Return All is off |
| \`Assign data\` and \`Summarize Data\` | Set 3.4 renames the columns, then Summarize sums or averages them | Output names look like \`sum\_Views\` and \`average\_Sessions\_per\_user\` |
| \`Calculation same period previous year\` | Code 2 returns \`startDate\` and \`endDate\` one year back | The second Google Analytics node reads them as a custom range |
| \`Processing for email\` | OpenAI 1.8, Message a model, with a Calculator tool | It reads both summaries by node name and writes the HTML |
| \`Processing for Telegram\` | OpenAI 1.8, Message a model | It turns that HTML into plain lines |

### Good to know

The two periods are not an exact like for like, and the report is only as good as your GA4 tracking.

- Models: OpenAI’s deprecations page, read on 12 November 2026, lists gpt-4o and gpt-4o-mini as shutting down on 14 January 2027, with \`gpt-6-luna\` as the replacement. The model’s page says Chat Completions supports function calling for it only with reasoning effort off, and the node has no setting for that. So \`Processing for email\`, which has a Calculator tool, uses \`gpt-5.6-terra\`, and \`Processing for Telegram\` uses \`gpt-6-luna\`
- Averages: sessions per user, session duration and revenue per purchase are averages of the daily values, not figures Google calculates for the whole week
- Partial day: this week’s range includes today so far, while last year’s range is complete
- No ecommerce events: purchases and revenue read zero when the property does not record them
- German settings: the original was set up for a German site, with German column names, euro amounts and German number formatting. Mindket’s copy has English column names. The euro sign and the number format stay in the prompt, so change them for your market
- Empty pickers: the author’s own property is gone, so choose yours in both Google Analytics nodes
- No review: the email goes out without anyone reading it first
- Billing: each run makes two model calls, and the email call may add more when it uses the Calculator
- Your data: your traffic and sales figures go to OpenAI, then to your mail server and to Telegram
- Credentials: the JSON holds none, so add the four credentials yourself

## README

```markdown
# Weekly Google Analytics report by AI to email and Telegram

An n8n workflow that sends a weekly Google Analytics report. Every Monday at 7:00 it reads the last 7 days of a GA4 property and
the same days a year earlier. It totals each set, and an OpenAI model writes a short summary and a table of the changes. The report
goes out as an HTML email, and a plain text copy goes to Telegram.

## What is inside

- `workflow.json`: the workflow as n8n exports it, thirteen working nodes and one sticky note. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

- The column names were German (`Aufrufe`, `Nutzer`, `Sitzungen` and so on). They are English now (`Views`, `Users`, `Sessions`,
  `Sessions per user`, `Session duration`, `Purchases`, `Revenue per purchase`, `Revenue`), in both `Assign data` nodes, both
  `Summarize Data` nodes and the email prompt. The first Google Analytics node was renamed to `Google Analytics: Last 7 days`.
- The second metric and the dimension of both Google Analytics nodes were left blank and filled in by n8n's defaults. They now say
  `totalUsers` and `date` outright.
- The email prompt read each summary with `.item`. Mindket's copy uses `.first()`, since each summary is one item built from many
  rows. The prompt's table divider had three columns for four headings, and its number examples contradicted its rules, so both
  were fixed.
- The models changed. `Processing for email` went from `gpt-4o` to `gpt-5.6-terra`, and `Processing for Telegram` from
  `gpt-4o-mini` to `gpt-6-luna`. See Good to know.
- The Google Analytics property, the two email addresses and the Telegram chat ID were the author's own. They are now an empty
  property picker and `<YOUR_FROM_EMAIL>`, `<YOUR_TO_EMAIL>` and `<YOUR_TELEGRAM_CHAT_ID>`.
- The sticky note was rewritten without the author's contact line.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- A Google Analytics 4 property and a Google account that can read it.
- An OpenAI API key.
- The SMTP details of a mailbox that can send, and the address the report goes to.
- Optional: a Telegram bot token and the chat ID the text copy goes to.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Open `Google Analytics: Last 7 days`, add a Google Analytics OAuth2 credential and choose your GA4 property. Do the same in
   `Google Analytics: Past 7 days of the previous year`.
3. Open `Processing for email` and `Processing for Telegram` and add an OpenAI credential with your key.
4. Open `Send Email`, add an SMTP credential, and replace `<YOUR_FROM_EMAIL>` and `<YOUR_TO_EMAIL>` with real addresses.
5. Open `Telegram`, add a Telegram credential and replace `<YOUR_TELEGRAM_CHAT_ID>` with your chat ID. Delete this node and
   `Processing for Telegram` if you only want email.
6. Press Execute workflow once and check the email. Then press Publish so the Monday schedule runs.

## How a run goes

1. `Schedule Trigger` fires on Monday at hour 7.
2. `Google Analytics: Last 7 days` reads eight metrics by date: page views, total users, sessions, sessions per user, average
   session duration, ecommerce purchases, average purchase revenue and purchase revenue.
3. `Assign data` gives the columns their report names, and `Summarize Data` sums the totals and averages the rest.
4. `Calculation same period previous year` works out the start and end dates one year back.
5. `Google Analytics: Past 7 days of the previous year`, `Assign data1` and `Summarize Data1` repeat steps 2 and 3 for those dates.
6. `Processing for email` (OpenAI, with a Calculator tool) gets both summaries in its prompt and writes the summary and the table
   as HTML.
7. `Send Email` sends that HTML. `Processing for Telegram` turns it into plain lines, and `Telegram` sends them.

## Change the look

- The day and the hour: Trigger at Day and Trigger at Hour in `Schedule Trigger`.
- The numbers reported: the metrics in both Google Analytics nodes, then the names in both `Assign data` and both
  `Summarize Data` nodes.
- The wording and layout of the email, the number format and the currency: the prompt in `Processing for email`.
- The model: Model in `Processing for email` and `Processing for Telegram`.

## Good to know

- OpenAI's deprecations page, read on 12 November 2026, lists `gpt-4o` and `gpt-4o-mini` as shutting down on 14 January 2027,
  with `gpt-6-luna` as the replacement. That model's page says Chat Completions supports function calling for it only with
  reasoning effort off, and the OpenAI node has no setting for that. So the email node, which has a Calculator tool, uses
  `gpt-5.6-terra`.
- Sessions per user, session duration and revenue per purchase are averages of the daily values. Google would calculate a
  weekly value differently.
- This week's range includes today so far, while last year's range is complete.
- Purchases and revenue read zero when the property records no ecommerce events.
- The euro sign and the German number format in the prompt come from the original. Change them for your market.
- The report goes out without anyone reading it first, and your traffic figures go to OpenAI.
```

## What is in it

3 files, 24 KB, downloaded as a zip.

```text
NOTICE.md  675 B
README.md  5 KB
workflow.json  19 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 12 steps, starting on a schedule
- AI: 2 steps call an AI model: Processing for email and Processing for Telegram
- Sign-ins: Signs in to: Google Analytics, Email and Telegram
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 8 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/d1c107b2-23a1-49c6-96dd-27f39873390c)
- [Its page on Mindket](https://mindket.com/p/d1c107b2-23a1-49c6-96dd-27f39873390c)
