Tutorials

Answer the Monday Question With a Grok Bot Template for Analytics Reporting

Taras Shynkarenko
Taras Shynkarenko
4 min read
How to use a Grok bot template for analytics reportingHow to use a Grok bot template for analytics reporting

TL;DR, Quick Answer

4 min read

GET /breakdown takes 25 dimensions and 15 filters, so a follow-up question is another call rather than another dashboard. Install the template, paste a flow_ws_ workspace token, and ask for last week against the week before, split by channel.

Most weekly reports die because the second question is expensive. A Grok bot template for analytics reporting fixes the second question, not the first. Traffic totals were never hard to get. "Why is that number down, and which campaign did it?" is where the dashboard clicking starts, and where one more API call ends it.

The short version: install the template, paste a flow_ws_ workspace token, then ask "last week against the week before, split by channel". The bot calls GET /overview twice and GET /breakdown?dimension=channel.

What is a Grok bot template for analytics reporting?

A Grok bot template for analytics reporting is a share link that copies a configured Grok Bot, plus a skill describing Flowsery's public REST API, into your own Grok Bot app. SpaceXAI enabled template sharing on 28 August 2026. The template carries the profile, the skill text and the routines. It never carries the creator's workspace token or their websites.

It is the reporting-specific companion to the Grok bot template for web analytics guide.

Why does the breakdown endpoint matter more than the dashboard?

GET /breakdown takes 25 dimensions and 15 filters, so almost any follow-up question is one more call rather than a new screen. That is the mechanical reason a chat beats a dashboard for exploratory work.

The 25 dimensions, grouped
Content
  • page, entry_page, exit_link
  • hostname, goal
Acquisition
  • referrer, channel, campaign
  • source, ref, via
  • utm_source, utm_medium, utm_campaign, utm_term, utm_content
Audience
  • country, region, city
  • device, browser, browser_version
  • os, os_version
Every one of those is also a filter, so "organic traffic from Germany on mobile" is a single request rather than three clicks and a saved segment.

In practice a Monday review runs like a conversation:

You:  Last week against the week before, all sites.
 
Bot:  GET /overview?startAt=...&endAt=...   (x2)
      -> sessions down 8%, conversions flat
 
You:  Which channel dropped?
 
Bot:  GET /breakdown?dimension=channel&startAt=...&endAt=...   (x2)
      -> organic down 19%, paid up 4%, direct flat
 
You:  Which pages, inside organic only?
 
Bot:  GET /breakdown?dimension=page&filter_channel=organic&...
      -> three docs pages account for most of it

Three questions, no dashboard, and the third one is the answer you actually wanted.

What can the bot read, and what can it change?

Flowsery's public API has 26 operations and 21 of them only read. Five can change data, and the reporting skill uses none of them.

What the reporting template touches
Read operations used9 of 21
Write operations used0 of 5
A reporting bot that cannot write is a reporting bot you never have to supervise.

The nine it uses are /overview, /timeseries, /breakdown, /pages, /referrers, /channels, /campaigns, /goals and /realtime.

How do I install and test it?

Installing the Flowsery Grok bot template takes four steps: open the share link in Grok Bot, create a flow_ws_ workspace token, paste it into the credential field, and ask for last week's overview as a read-only test.

From share link to first report
1
Open the link on a device with Grok Bot installed. Press "Add to Grok Bot" on x.ai/bot/tOP05p0n0XVUcpJDfPH0k.
2
Create a workspace token at flowsery.com/api-tokens. It starts with flow_ws_.
3
Paste it into the credential field, not the chat. Anything typed into a message stays in the conversation.
4
Ask "list my websites, then last week's overview for the first one". That exercises GET /websites and GET /overview and writes nothing.
Every call in this guide is read-only, so there is no unsafe first test to worry about.

What should the weekly routine actually say?

A good routine names the comparison, the dimension to split by, and what to do on a quiet week. The template ships with this one:

Name:      Monday traffic review
Schedule:  every Monday 08:00
What:      GET /overview for last week and the week before, per website.
           If sessions or conversions moved more than 10%, run
           GET /breakdown?dimension=channel for both weeks and name the
           channel responsible. Then GET /breakdown?dimension=campaign
           filtered to that channel.
Report:    one paragraph per site, numbers first, no recommendations.
If flat:   say "no material change" and stop.

"Numbers first, no recommendations" is there on purpose. A weekly bot that editorialises gets ignored by the second month; one that states the delta and stops gets read.

Can it report on UTM campaigns specifically?

Yes, and this is where the dimension list earns its keep. utm_source, utm_medium, utm_campaign, utm_term and utm_content are each their own dimension and their own filter, so a campaign post-mortem is a handful of calls rather than a spreadsheet export.

GET /campaigns gives the summary view, and GET /breakdown?dimension=utm_content&filter_utm_campaign=... drills into which creative did the work.

What about real-time?

GET /realtime returns live visitor counts, which is the one call worth having in a chat during a launch. Ask the bot to check it every few minutes during a release and it will, without you keeping a tab open.

Flowsery
Flowsery

Start FREE Trial

Real-time dashboard

Goal tracking

Cookie-free tracking

Interval on /timeseries takes hour, day, week or month, so the same launch can be reviewed hour by hour the next morning.

What breaks in the first week?

A 404 on most endpoints means the bot skipped websiteId. It is required nearly everywhere, and GET /websites is how the bot gets it, which is why the install test starts there. The other one is timezone: startAt and endAt without a matching timezone compute against the server's day boundaries, so a "yesterday" report can silently cover the wrong 24 hours.

Frequently asked questions

Can the Grok bot change my analytics data?

No. The reporting skill uses nine endpoints and every one of them is read-only. Goals and payments can be modified elsewhere in the Flowsery API, but this template's skill text does not include those calls.

Does this replace the Flowsery dashboard?

No. The dashboard is better for scanning and for anything visual. The bot is better for a specific question and its follow-ups, which is a different job and the one that used to take the most clicks.

Can it compare more than two periods?

Yes. Each period is a separate GET /overview or GET /timeseries call with its own startAt and endAt, so the bot can line up four quarters as easily as two weeks.

How is this different from connecting Flowsery over MCP?

MCP is the better route if your client speaks it natively. The Grok bot template exists because Grok Bot works from a skill and a credential field rather than an MCP config, and it wraps the same REST API either way.

Where do I find other Grok bot templates?

groktemplates.dev indexes Grok bot templates by use case. On this blog, the session analysis guide covers the per-visitor side of the same template.

Install the Flowsery Grok bot template and run your first Monday review from a chat, or read the API docs first.

Sources: the Flowsery OpenAPI spec, x.ai/bot, and @bot on X (28 August 2026). Checked 30 August 2026.

Was This Article Helpful?

Let us know what you think!

See us more often in Google

One click marks Flowsery as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.

Before you go...

Flowsery

Flowsery

Revenue-first analytics for your website

Track every visitor, source, and conversion in real time. Simple, powerful, and cookie-free.

Real-time dashboard

Goal tracking

Cookie-free tracking

Related Articles