Per-client reporting, compiled from the sources — not from screenshots.
GA4, Search Console and the store's own orders, read per client on a schedule, reconciled, and written to that client's ledger next to every action taken on their behalf. The monthly report builds itself from the ledger. Revenue drops are a policy: checked every morning, notified only when something moved.
Already have an account? Set this up on a client store →
Yesterday's revenue €9,180 vs. 7-day average €13,300. Sessions flat (GA4); conversion rate 1.4% vs. 2.1%. Drop concentrated in the Bestsellers collection — 2 of 5 top SKUs show 0 stock.
Ten clients, three dashboards each, one report a month that takes days.
GA4 was built for analysts. Search Console has its own view. Every store admin has another. The numbers rarely agree, so month-end is someone pulling screenshots into a deck — and nobody looks at any of it between month-ends, which is when revenue actually drops.
Report day eats the week
Six clicks for weekly traffic in GA4, per property, per client. Multiply by ten and the monthly report is a two-day job done under deadline.
Sources disagree
Engaged sessions vs. sessions vs. active users; GA4 revenue vs. the store's. Without a fixed definition per client, every report argues with the last one.
Drops surface late
A checkout bug or a stock-out on a top SKU shows up in the monthly report, three weeks after it cost the client money. Nobody was watching on a Tuesday.
A reporting policy per client. Alerts are a notify step, not a chat.
Schedules are triggers. A daily policy compares yesterday to the trailing week for each client and notifies the right channel only when a threshold is crossed. A monthly policy compiles the report from the ledger. Both are deterministic; the agent only adds the why.
- Scoped to one client — its GA4 property, its Search Console, its store. Definitions are fixed per client so the numbers stop arguing.
- Thresholds are field expressions you set; a quiet day fires nothing.
- The agent step runs on autopilot because it only reads: it pulls the breakdown and writes the explanation into the alert.
- The notify step is direct — Slack channel, email, or both. Slack is a delivery target here, not a place to chat with data.
Schedule → policy → agent → ledger.
Every morning, every client
The policy reads GA4 sessions and conversion, Search Console clicks and impressions, and the store's orders and revenue for the previous day. No one opens a dashboard.
Compare, threshold, route
Yesterday against the trailing average, per metric, per client. Below threshold, the policy continues; otherwise it records the numbers and stops.
The why, in plain sentences
Where a drop crossed the line, the Reporting agent breaks it down — channel, landing page, collection, SKU — and writes the explanation: “conversion fell, sessions didn't; two bestsellers are out of stock.” Charts only where they help.
The month writes itself
Daily numbers, alerts, and every action taken on the client's store — refunds, fixes, published posts, who approved — sit on one ledger. The monthly report exports from it per client, as a PDF or a shareable page.
Typed reporting actions — reads compiled, alerts delivered.
Reporting is read-only on the sources, so it runs without sign-off. The writes are deliveries: a Slack message, an email, a published report. Each one is on the ledger with its recipients.
- toolRead GA4 traffic, conversion and revenue per property
- toolRead Search Console clicks, impressions and positions
- toolRead store orders, revenue and top products
- toolDaily threshold checks with a notify step
- toolCompile the monthly client report from the ledger
- toolExport as PDF or publish a shareable report page
Put every client's reporting on a schedule.
Connect GA4, Search Console and the first store, attach the daily revenue check and the monthly report policy. Free for one store; agency plans from the second.
Free for one store · 14-day trial on paid plans · no card · bring your own AI key