This is the internal reference for anyone who runs the sales TV board, sets targets, or needs to dig into closed-won numbers for a specific week, rep, or deal. It covers the TV dashboard end to end, plus the unlisted Sales Detail page that sits behind it.
Start here
What is this
The Topco Sales TV Dashboard is the closed-won sales board that runs on the office TV — three interchangeable layouts (Boardroom, Leaderboard, Signal Wall) plus a Performance Thresholds/gamification wall, all pulling live from one published Google Sheet of closed-won deals. A second, unlisted page — Sales Detail — gives a plain scrollable view of that same data for digging into specific weeks, reps, brands, or individual deals.
One Google Sheet is the single source of truth. Every board, and Sales Detail, read the same "Deals" tab — there's nothing to keep in sync between them.
Where things live
The TV dashboard and the Sales Detail page are on unlisted links that aren't published in this manual. Ask the dashboard owner for them.
Start here
Connecting your Google Sheet
One published Google Sheet feeds every board and Sales Detail. Put one row per closed-won deal in a tab — the dashboard reads a specific tab by name or gid, which can be changed without touching code.
-
Add a "Deals" tab
One row per closed-won deal. Header order doesn't matter, names do — see the column table below.
-
(Optional) Add a "Targets" tab
Two columns — Period and Target — with a row each for Week, Month, and Quarter.
-
Share the sheet
"Anyone with the link → Viewer" (or File → Share → Publish to web). Without this, every board falls back to sample data.
-
Point the dashboard at it
Either bake the sheet URL into datasource.jsx, or append ?sheet=<url>&gid=<dealsGid> to the dashboard URL — no code change needed.
Deal columns it reads
Matching is case-insensitive and several aliases are accepted per column.
| Column | Reads from (aliases) | Notes |
|---|---|---|
| Date | date, close date, closed date, won date, date won | ISO (2026-06-18) or DD/MM/YYYY |
| Client | client, name of client, company, account, deal name | |
| Brand | brand, event, event brand, product group | Falls back to "Other" if blank |
| Platform | platform | Separate from Brand — e.g. "Publication" |
| Edition | edition, edition/event no., event no., event number | |
| Product | product, line item, line item name / product, item | |
| Rep | rep, sales rep, owner, deal owner, salesperson | Falls back to "Unassigned" |
| Amount | amount, total, total (ex vat), value, ex vat, amount (ex vat) | R, spaces and commas are ignored |
| Status | status, account status, payment status | Optional — Paid / Partial / Outstanding |
Silent drop
A row with no Date, or an Amount of 0/blank, is excluded automatically with no error shown. If a deal isn't showing up anywhere, this is almost always why — check those two cells first.
Run the dashboard
The four board layouts
Open the live URL and you land on a design canvas — every period (Today / This Week / This Month / This Quarter / This Year) shown against all four layouts, stacked on one scrollable page for comparing side by side. Press TV Mode (see below) to turn it into an actual rotating slideshow.
Headline total, target donut, trend chart, and top reps/brands at a glance — the summary board.
Rep-by-rep ranked bars — the "who's winning" board.
Brand/event breakdown wall.
Traffic-light bands (red / green / super green) plus the rep gamification wall — levels, achievements, streaks — for Month, Quarter, and Year.
Run the dashboard
TV Mode & rotation
TV Mode turns the design canvas into a fullscreen slideshow that auto-advances every 20 seconds — Boardroom → Leaderboard → Signal Wall for each period, then one Performance Thresholds slide, looping forever.
| Key / action | Does |
|---|---|
| T | Toggle TV Mode on/off — works from the design canvas or a running slideshow |
| → / ← | Jump to the next / previous slide |
| Esc | Exit TV Mode back to the design canvas |
| Click a progress dot | Jump straight to that slide |
For an actual TV/kiosk
Point the kiosk browser at the live URL and press T — the sheet re-pulls itself every 5 minutes on its own, no further interaction needed. Use the kiosk browser's own autoplay/fullscreen settings to have it land there and press T automatically on boot.
Run the dashboard
Goals & Targets
The gear icon (bottom-right, next to the TV Mode button) opens Goals & Targets — the one place to set targets and hide noise. It's saved centrally, so it's the same on every device pointed at the dashboard, not just the browser that set it.
Period targets
Overrides the Targets tab in the sheet for Today / This Week / This Month / This Quarter / This Year. Leave a field at 0 to keep whatever the sheet says.
Performance thresholds
Red floor / Green target / Super green $ tiers for Month, Quarter, and Year — these are what colour the Performance Thresholds board's traffic-light bands.
Rep & Brand targets
Per-rep and per-brand targets, per period, each with a checkbox to show or hide that rep/brand across every board. Setting a Month target auto-fills Quarter (× 3) and Year (× 12) — editing either of those by hand overrides the auto-fill from then on, even if Month changes again later.
Saved to the cloud
Targets save to a small hosted API (shared across every device automatically). If that API is unreachable when you hit Save, the values still save to that one browser's local storage as an offline fallback — the modal's subtitle tells you which happened.
Run the dashboard
Sales Detail — the hidden page
A second, plain scrollable page for digging into the same live sheet at deal-level detail — not meant for the TV, meant for someone at a desk.
Unlisted, not locked
Not linked from the TV dashboard, the site manifest, or any navigation — reachable only by direct URL. There is no password on it: anyone with the link can open it, the same as any other file in the hosting bucket. Treat the URL itself as the access control, and don't post it anywhere public.
What's on it
- KPI tiles — total, deal count, average deal size, and weekly average, scoped to whatever date range is currently active.
- Date range — two date pickers, defaulting to the last 8 weeks. Pick any custom "from"/"to" and every section below recalculates against it; a "Reset to last 8 weeks" button appears once you've changed either date.
- Multiselect filters — Brand, Platform, Edition, and Status, plus a free-text search across client, rep, brand, product, edition, and platform. Each dropdown is a checkbox list, so more than one value can be selected at once.
- Weekly breakdown — collapsible per-week sections with subtotals, most recent weeks open by default. Capped at 20 weeks for very wide custom ranges — the full table below still has every matching row regardless.
- Full sortable table — every deal in the selected range and filters, one row each; click any column header to sort by it.
Reference
Data source & status badges
Every board (and Sales Detail's header) shows a small badge for what it's actually displaying.
| Badge | Meaning |
|---|---|
| LIVE · N DEALS | Sheet loaded successfully — N is how many valid deal rows were read. |
| CONNECTING… | First load in progress. |
| SAMPLE DATA | No sheet configured — showing the built-in placeholder numbers. |
| SAMPLE DATA · SHEET OFFLINE | A sheet is configured but the last fetch failed — check sharing settings and column headers. |
Refresh timing
The TV dashboard re-pulls the sheet every 5 minutes on its own. Sales Detail pulls once when the page loads — refresh the tab to pick up anything added to the sheet since.
Reference
Hosting & deploying changes
Fully serverless, region af-south-1. S3 + CloudFront serve the static dashboard; a small Lambda + API Gateway + DynamoDB stack stores Goals & Targets centrally so they survive restarts and are shared across every device.
Deploy commands and the hosting account details are kept in the internal runbook; ask the dashboard owner.
Reference
Troubleshooting
| Symptom | Check this first |
|---|---|
| "A deal isn't showing up" | Check its Date and Amount cells aren't blank or zero — both are required, or the row is silently dropped. |
| "Board says SAMPLE DATA / SHEET OFFLINE" | Confirm the sheet is shared "Anyone with the link → Viewer" (or Published to web), and that the tab/gid still matches what's configured (or the ?sheet=/&gid= URL params, if used). |
| "A rep/brand/edition isn't in a filter dropdown" | It only appears once at least one deal for it falls inside the currently selected date range — widen the range. |
| "Numbers look right in Sales Detail but wrong on the TV boards" | Goals & Targets can hide specific reps/brands from the TV boards only — check the gear icon for anything unchecked. Sales Detail always shows everything, regardless of that setting. |
| "Targets/thresholds didn't save everywhere" | If Goals & Targets' subtitle doesn't say "Saved to the cloud", the settings API was unreachable and the values only saved to that one browser — check the browser console for the warning. |
Reference
Support
This manual covers day-to-day use of the dashboard and Sales Detail. For anything platform-level — a new layout, a column the parser doesn't understand yet, or infrastructure changes — reach out to whoever manages the dashboard build rather than trying to work around it.