topcosales

Internal Team Manual

How to run and read the Topco Sales TV Dashboard, and the hidden Sales Detail page behind it.

Version 1 · 17 Aug 2026

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.

  1. Add a "Deals" tab

    One row per closed-won deal. Header order doesn't matter, names do — see the column table below.

  2. (Optional) Add a "Targets" tab

    Two columns — Period and Target — with a row each for Week, Month, and Quarter.

  3. Share the sheet

    "Anyone with the link → Viewer" (or File → Share → Publish to web). Without this, every board falls back to sample data.

  4. 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.

ColumnReads from (aliases)Notes
Datedate, close date, closed date, won date, date wonISO (2026-06-18) or DD/MM/YYYY
Clientclient, name of client, company, account, deal name 
Brandbrand, event, event brand, product groupFalls back to "Other" if blank
PlatformplatformSeparate from Brand — e.g. "Publication"
Editionedition, edition/event no., event no., event number 
Productproduct, line item, line item name / product, item 
Reprep, sales rep, owner, deal owner, salespersonFalls back to "Unassigned"
Amountamount, total, total (ex vat), value, ex vat, amount (ex vat)R, spaces and commas are ignored
Statusstatus, account status, payment statusOptional — 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.

A · Boardroom

Headline total, target donut, trend chart, and top reps/brands at a glance — the summary board.

B · Leaderboard

Rep-by-rep ranked bars — the "who's winning" board.

C · Signal Wall

Brand/event breakdown wall.

D · Performance Thresholds

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 / actionDoes
TToggle TV Mode on/off — works from the design canvas or a running slideshow
→ / ←Jump to the next / previous slide
EscExit TV Mode back to the design canvas
Click a progress dotJump 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.

BadgeMeaning
LIVE · N DEALSSheet loaded successfully — N is how many valid deal rows were read.
CONNECTING…First load in progress.
SAMPLE DATANo sheet configured — showing the built-in placeholder numbers.
SAMPLE DATA · SHEET OFFLINEA 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

SymptomCheck 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.