Monday, nine in the morning. The owner of an online analytics school opens the Data Studio dashboard the marketer built from the end-to-end campaign report: twenty-three charts, from sessions and bounce rate to a pie chart of devices. The media buyer posts in the chat: "Meta this week: 52 leads at 2,308 ₸ each, best week yet." The owner scrolls through the screen and cannot answer the one question he opened it for: should Meta get more money? The numbers in this lesson are made up; it is the same school as in the GA4 and end-to-end analytics lessons.
The tool has nothing to do with it. Choosing between Data Studio, Power BI and Tableau is a separate job, and the rules below work the same in any of them.
One dashboard, one question
A dashboard starts with a sentence, not with charts: who opens it, when, and what they decide. For the school that is the owner on Monday morning, deciding how to split next week's 200,000 ₸ ad budget between Meta and Google. So the question for the screen is: what changed last week in leads and payments, in which channel, and what should be checked before money moves?
Anything that does not answer that question leaves the screen and goes where people actually work with it. CTR, CPM and frequency matter to the media buyer, who reads them in Ads Manager. Sessions and bounce rate matter to whoever works on the site. Tableau's dashboard best practices say the same: start from the purpose and the audience, put the most important view in the top left corner, and keep a dashboard to two or three views, building a second dashboard if you need more. It is one vendor's advice, but it holds just as well in Data Studio and Power BI. The school's first screen has two views, the main deviation and the channel table, and the ads and leads open on a click, as a second level.
The school's screen, top to bottom:
| Block | What it shows | Which question it answers |
|---|---|---|
| Header | The week, the sources and when each was last loaded | Which numbers can already be trusted |
| Main deviation | Share of leads paid for within the same week, against the week before | What changed |
| Channel table | Spend, leads, payments and spend per payment for each channel | Where it changed |
| Channel detail | The selected channel's ads and the list of its leads with CRM statuses, opened by a click | What to check next |
| Reconciliation | Leads in GA4 against leads in the CRM | Whether data collection broke |
The deviation and its context
The number the owner cares about is payments, and payments have a catch. Someone who submits the form on Friday may pay ten days later, just before the cohort starts. The 15 payments in the end-to-end report did not arrive at once: by the end of the week itself there were 10, and the other five came later. Compare a fresh week with the final 15 and the drop will look alarming no matter what happened.
So the dashboard uses a metric with the same time limit for every week: the share of leads paid for within the same week. The week before, that was 10 payments out of 65 leads, 15%. Last week it was 7 out of 84, 8%. That is the deviation: 19 more leads and three fewer payments. Three payments on numbers this small could also be chance: the tile shows where to look, it does not make a diagnosis. The one thing you can see with confidence is that leads went up noticeably while payments did not.
Next to the number goes everything people need to read it correctly.
- Definitions. A "lead" is a card in the CRM, not a
generate_leadevent in GA4. A "payment" is the "Paid" status in the CRM. Two lines of small print under the number save half an hour of argument at every Monday meeting. - The base of the percentage. Going from 15% to 8% is minus 7 percentage points. A "-7%" label is wrong: in points you write "-7 pp", and the relative drop is about 46%.
- Freshness of every source. Data Studio shows when the data was last refreshed in the bottom left corner of the report (how data freshness works), but that is when Data Studio last fetched the data, not the hour the data in the sheet runs up to. The CRM export of orders and payments reaches the sheet every day at 18:00, so on Monday morning it only has payments up to 18:00 on Sunday. Sunday evening's payments arrive with the next export, and the 7 could become 8 by evening.

This block will not tell you whether the week paid off: that needs final payments, which are known only by the cohort start. They live on a second page of the dashboard, in the same table as the end-to-end report. There you can see that at 120,000 ₸ of spend, Meta needs 8 payments a week to break even.
Breakdown: where it changed
The overall number shows that something moved but not where to look. The next block splits it by channel. The cells hold counts, not just percentages, because a percentage hides the fact that there are only two payments behind it.
| Channel | Weekly spend | Leads: week before → last week | Paid within the same week | Spend per such payment |
|---|---|---|---|---|
| Meta | 120,000 ₸ | 34 → 52 | 4 → 2 | 30,000 → 60,000 ₸ |
| Google Ads | 80,000 ₸ | 18 → 19 | 4 → 4 | 20,000 → 20,000 ₸ |
| School's Telegram channel | 0 ₸ | 8 → 9 | 1 → 1 | - |
| No tags | 0 ₸ | 5 → 4 | 1 → 0 | - |
| Total | 200,000 ₸ | 65 → 84 | 10 → 7 | 20,000 → 28,571 ₸ |
Almost all of the growth came from Meta: 18 of the 19 extra leads, with the cost per lead down from 3,529 to 2,308 ₸. That is what the media buyer is celebrating. But Meta brought fewer payments, and spend per payment doubled. Google is exactly where it was.
Two payments against four say nothing about the cause: a gap of two payments can easily be chance. What the table gives you is an address. The change is in Meta, so that is where you look next.
The first breakdown follows the decision. The school splits its budget by channel, so it breaks the numbers down by channel. Cities or devices can wait until there is a decision about them. The "No tags" row stays visible: if it grows, a form or a link somewhere has stopped passing the tags.
The route to the cause
Clicking the Meta row filters the block below it down to that channel's ads. They are named the same as utm_content in the school's tagging scheme, so leads from the CRM line up with them without manual matching.
The filter has to be readable too. When clicking Meta has filtered the lower block, the screen says "Showing: Meta" and offers a way to clear the selection. If the overall share tile at the top still covers all channels, it says so; otherwise the school-wide 8% gets read as Meta's 8%.
| Ad | Week before: leads / paid | Last week: leads / paid | Manager reached them, last week |
|---|---|---|---|
video_teacher | 20 / 3 | 22 / 2 | 18 of 22 |
carousel_program | 14 / 1 | 30 / 0 | 11 of 30 |
The growth came from the carousel: 30 leads instead of 14. It brought zero payments, but that number is too small to claim anything either. So the table includes an earlier step with more cases: whether the manager managed to talk to the person by phone or on WhatsApp. For the teacher video he reached 18 people out of 22; for the carousel, 11 out of 30. That gap is already noticeable, and it is where the check begins.
The last link in the route is a list: the 30 carousel leads, each with its number, CRM status and the manager's comment. Phone numbers and names stay off the dashboard; the manager can open the card in the CRM by lead number. From here the questions go to people. What does the carousel promise, and what does someone see on the page after the click? What did the 11 people he reached say? If they were expecting a free webinar, the problem may be the ad's promise and lead quality. Until the manager has read through his notes, it is a hypothesis.
The decision this screen supports is humbler than "best week yet": do not raise the carousel budget until the manager has gone through its leads, and judge Meta on final payments by the cohort start.
GA4 and the CRM on one screen
In the week from the end-to-end report, GA4 counted 69 generate_lead events: 40 from Instagram, 20 from Google, 9 from Telegram. The CRM had 65 leads for the same week: 34 from Meta, 18 from Google, 8 from Telegram and 5 without tags. Put both numbers on the dashboard labelled "Leads" and every Monday will start with an argument about which one is right.
Numbers for decisions come from the CRM, because only there does a lead have a payment status. GA4 moves to the bottom, into a reconciliation line: "GA4: 69 events, CRM: 65 leads". A small gap is normal. GA4 counts tag firings, including repeat form submissions and colleagues' tests (how GA4 counts leads), and it assigns channels by its own rules, so the rows will not match one for one; you reconcile the totals. But if the gap suddenly widens, say GA4 shows 70 and the CRM 40, fix the form or the lead hand-off to the CRM first, and only then read the rest of the screen.
What to leave off the dashboard
- Ad platform metrics: impressions, CTR, CPM, frequency. The media buyer needs them to work on the ads; they will not help the owner choose between channels.
- Sessions, bounce rate, devices and a visitor map. That is a screen for working on the site.
- Exotic charts for variety: gauges, bubble charts, 3D. A number to be reconciled with the CRM reads best in a table, a comparison between channels on bars that start at zero, and a weekly trend on a line with the last, incomplete week marked separately.
- A target that does not exist. A "70% complete" bar without an agreed plan draws a threshold nobody set.
- Red and green without labels. Growing leads will be painted green even though payments fell. Colour shows whether something is better or worse for the decision, with a sign or a word next to it.
Metric definitions, on the other hand, stay on the screen even when space is tight. Without them the owner will compare GA4 leads with CRM leads and decide based on two different numbers that share a name.
Exercise: show the dashboard to its reader
Take a dashboard you maintain for a client, or build a simple one from your own end-to-end report from the Start track.
If the reader says "more leads, all good", the main deviation is in the wrong place or payments are missing next to leads. If they compared 7 payments with 15 and panicked, the screen does not show that the weeks were measured over different periods. If they said "Meta is broken, switch it off", the screen is passing off a two-payment difference as a conclusion: keep counts next to percentages so it is obvious how few cases are behind them. And if they found both the deviation and the channel but could not tell what to do next, the last link is missing: the list of records and the person who will go through them.
Video: the rules of a good dashboard
Anna Shestopalova on dashboard rules, with examples in Power BI (in Russian).