Marketing

Monday-Morning KPI Dashboard: 8 KPIs in 1-Page Google Sheets (Gemini)

Monday-Morning KPI Dashboard: 8 KPIs in 1-Page Google Sheets (Gemini)
Contents

A CMO forwarded me a screenshot last month — 47 metrics on a 4-tab dashboard, and she still couldn't answer "are we winning this quarter?" in under 20 minutes. Her team had built it over six months. Nobody opened it on Mondays because it took the morning to interpret.

I rebuilt her dashboard in 90 minutes on one page. Eight KPIs. One Gemini =AI() cell per metric that writes the "what changed" sentence for you. It fits in a Slack screenshot and gets read every Monday at 8:05am. Here's the exact setup.

The 8 KPIs (and the formulas)

I run this as a single sheet, one row per KPI, with the data on a hidden tab. Headers in row 1, current week in column D, prior week in column C, the =AI() narrative in column E. Eight rows of data, the rest is the formula and the AI explanation.

KPI Definition Cell formula (column D)
Revenue Booked revenue, this week =SUMIFS(Revenue!B:B, Revenue!A:A, ">="&TODAY()-7, Revenue!A:A, "<"&TODAY())
MQL Marketing-Qualified Lead — new leads created =COUNTIFS(Leads!C:C, "MQL", Leads!A:A, ">="&TODAY()-7)
SQL Sales-Qualified Lead — MQLs accepted by sales =COUNTIFS(Leads!C:C, "SQL", Leads!A:A, ">="&TODAY()-7)
CAC Customer Acquisition Cost — spend / new customers =SUM(Spend!B:B)/COUNTIFS(Customers!A:A, ">="&TODAY()-7)
LTV Lifetime Value — avg revenue per customer, 12-mo =AVERAGE(Customers!LTV:LTV)
ROAS blended Revenue / total ad spend =SUM(Revenue!B:B)/SUM(Spend!B:B)
NPS Net Promoter Score — % Promoters − % Detractors =COUNTIF(Survey!B:B,"9-10")/COUNTA(Survey!B:B)*100 - COUNTIF(Survey!B:B,"0-6")/COUNTA(Survey!B:B)*100
Top channel share Top channel revenue / total =MAX(CHANNELS!B:B)/SUM(CHANNELS!B:B)

Eight is the cap. Once you hit nine, the dashboard stops being a screenshot and starts being a meeting. Every additional metric is borrowed attention from a number somebody is already going to ignore.

The =AI() prompt (paste this once in column E)

The trick isn't showing the number — it's making the reader understand "what changed since last week" without opening another tab. The native Gemini =AI() function (available on every Google Workspace plan since 2025) handles this. Drop this in E2 and drag down:

=AI("In one sentence, compare the value in D" & ROW() & " (this week) to C" & ROW() & " (last week). State the % change and the most likely cause. Plain English, no jargon. Under 140 characters.", C2:D2)

What comes back looks like: "MQL down 12% WoW — paid search budget cut Tuesday; recovery expected after bid adjustments." Not a chart, not a bullet list. One sentence, cause attached. That sentence is what your CMO actually reads on Monday.

One caveat: =AI() results are not cached. If you re-open the sheet and your data refreshes, the narrative can shift. Verify before pasting into a board deck.

The 90-minute build

  • 0:00–0:15 — Pull this week's data via three QUERY() calls from your CRM, ad accounts, and survey tool. Land them on a hidden "Data" tab.
  • 0:15–0:45 — Build the 8-KPI table above. The formulas reference the Data tab; the only thing visible is the 8 numbers.
  • 0:45–1:15 — Drop the =AI() prompt in column E, drag to row 9. Spend 20 minutes iterating on the prompt wording. The first version always over-explains; tighten to "under 140 characters, one cause only."
  • 1:15–1:30 — Conditional formatting: green if WoW up >5%, red if down >5%, gray otherwise. No other colors. Eight rows, three colors. Done.

The Slack-share workflow (the part that actually scales)

Print to PDF with the dashboard fitted to one page (Chrome → Print → Custom Scale 70%). Drop the PDF in your #monday-marketing channel at 8:05am. The whole team sees the 8 numbers and the 8 sentences in one image, no scroll. Leadership replies in-thread, not in a meeting. You just recovered 20 minutes a week, every week, across eight people — and you stopped the "can someone explain the dashboard?" question before it was asked.

The win isn't the dashboard. The win is killing the 20-minute meeting that existed to interpret it.