Docs · Reference
TRMG Executive Dashboard Standard
Dealer digital performance
Executive View
Build reference for AgencyAnalytics · one dashboard per rooftop · v1.1, September 2026
The Rogers Marketing Group. Phase 1 ships now · Phase 2 adds CRM next month.
Layout note: the source is a dashboard mock-up, one card per widget. Here each group of cards is a table. The grey mono line under each card (the widget spec) is shown in code style. "Account" and "Client" are the tags the cards carry.
Build key
| Key | Meaning |
|---|---|
Source · grouping · filter | The grey mono line on each card is the widget spec. Place exactly that in the app. |
| [Brackets] | Client inputs or fields to pull. Never leave one showing on a client-facing view. |
| Account | Custom metric built once at account level. Appears on every client automatically. Universal formulas only. |
| Client | Built per rooftop. Anything that needs a per-client constant, name, or connection. |
01 Scorecard
Pace and digital demand at a glance, every source connected today
| Card | Tag | Value | Note | Widget spec |
|---|---|---|---|---|
| Paid media spend | Client | [pull] | Meta plus Google, media only | Meta spend + Google Ads cost · MTD · markup OFF |
| Budget pace | Client | [pull]% | against [days elapsed]% of month | Custom metric · paid spend ÷ [approved budget] |
| Platform leads | [pull] | [Meta] Meta · [Google] Google | Meta leads + Google lead conversions · MTD | |
| Blended cost per lead | Account | [pull] | Both paid channels together | Custom metric · (Meta + Google spend) ÷ (Meta + Google leads) |
| Site lead forms | [pull] | All sources, submitted forms only | GA4 · lead form events · MTD · never total conversions | |
| Local actions | [pull] | [calls] calls · [directions] directions | GBP · call clicks + direction requests · MTD |
02 Sales
Everything working for the sales floor: Google, Meta, and how that traffic behaves on the site
Sales campaigns, both channels
| Channel · campaign | Objective | Spend | Leads | CPL | Traffic | Reach signal |
|---|---|---|---|---|---|---|
| Google · Search: branded | Conversions | [pull] | [pull] | [pull] | [clicks] | [impr. share] |
| Google · Search: geo, dealer near me | Conversions | [pull] | [pull] | [pull] | [clicks] | [impr. share] |
| Google · Performance Max | Conversions | [pull] | [pull] | [pull] | [clicks] | [impr. share] |
| Google · Vehicle Listing Ads | Conversions | [pull] | [pull] | [pull] | [clicks] | [impr. share] |
| Meta · Demand gen: inventory | Leads | [pull] | [pull] | [pull] | [LPVs] | [frequency] |
| Meta · Instant Forms | Leads | [pull] | [pull] | [pull] | [LPVs] | [frequency] |
| Meta · Conversion, retargeting | Leads | [pull] | [pull] | [pull] | [LPVs] | [frequency] |
| Total sales | [pull] | [pull] | [pull] | [pull] |
Google Ads · group by campaign · Meta · group by campaign · exclude "Service" · Objective column is mandatory
Read Objective before Leads
A Traffic or Awareness row with zero leads is by design. A Leads or Conversions row with zero leads is a problem. Never let the two sit unlabeled in the same table, or the room reads the whole channel as failing.
Leads by day, by type
[Chart in the artifact: a line chart with one line per lead type and no data. Legend: Google conversions, Meta Instant Form, Website leads. The drawing does not translate to markdown.]
A flat website line means the site lead event is not firing. Check that before reading anything else on this page.
Google Ads + Meta · group by date · one line per lead type
Focus inventory
| Line | Plan | Spend | Leads | CPL |
|---|---|---|---|---|
| [Focus model 1] | [plan] | [pull] | [pull] | [pull] |
| [Focus model 2] | [plan] | [pull] | [pull] | [pull] |
| [Focus model 3] | [plan] | [pull] | [pull] | [pull] |
| All new | [plan] | [pull] | [pull] | [pull] |
| Pre-owned | [plan] | [pull] | [pull] | [pull] |
Meta · group by ad set · Google · group by asset group · plan column entered manually from the IO
Site lead forms by source
| Source / medium | Sessions | Lead forms | Rate |
|---|---|---|---|
| google / cpc | [pull] | [pull] | [pull] |
| [social platform] / paid | [pull] | [pull] | [pull] |
| google / organic | [pull] | [pull] | [pull] |
| (direct) / (none) | [pull] | [pull] | [pull] |
| referral | [pull] | [pull] | [pull] |
GA4 · group by source/medium · filter event: submitted lead forms only · never total conversions
| Card | Value | Note | Widget spec |
|---|---|---|---|
| VDP views | [pull] | Engagement, not a conversion | GA4 · VDP view events · by source |
| Paid session quality | [pull] | engaged rate · [time] avg | GA4 · paid social vs paid search · engaged sessions, avg engagement time |
Top sales ads
brief for next month's refresh
| Ad | Channel | Leads | CPL | Freq. |
|---|---|---|---|---|
| [Top ad by leads] | [channel] | [pull] | [pull] | [pull] |
| [Ad 2] | [channel] | [pull] | [pull] | [pull] |
| [Ad 3] | [channel] | [pull] | [pull] | [pull] |
| [Ad 4] | [channel] | [pull] | [pull] | [pull] |
| [Ad 5] | [channel] | [pull] | [pull] | [pull] |
Meta · group by ad · Google · group by asset group · sort by leads descending · frequency above 3 is the refresh signal
03 Service
[Service offer] · [Market 1] and [Market 2] · paid runs to page views, owned runs to the database
| Card | Tag | Value | Note | Widget spec |
|---|---|---|---|---|
| Service paid spend | [pull] | [pct] of [service plan] · Meta [pull] · Google [pull] | Meta + Google · spend · filter: campaign contains "Service" | |
| Service page views | [pull] | [pull] per view · reach [pull] · freq. [pull] | Meta · LPVs, cost per LPV · filter: Service | |
| Schedule-service clicks | [pull] | [pull] from paid · [pull] organic and direct | GA4 · schedule service click event · by source | |
| Owned service | Client | [pull] | [Lifecycle platform] sends · opens · clicks | Lifecycle platform · only if connected · else omit the card |
Service page traffic by source
| Source / medium | Service sessions | Schedule clicks | Rate |
|---|---|---|---|
| [social platform] / paid | [pull] | [pull] | [pull] |
| google / cpc | [pull] | [pull] | [pull] |
| google / organic | [pull] | [pull] | [pull] |
| (direct) / (none) | [pull] | [pull] | [pull] |
GA4 · filter: page path contains "service" · group by source/medium · schedule click event
Service optimizes to page views on purpose
Scheduling tools do not fire lead events reliably, so a service campaign on a Leads objective starves for signal. Paid service will look like traffic without conversions. That is expected. The real measure is offer redemptions on the RO opcode, which lands in Phase 2. Until then, read schedule-service clicks and page traffic by source as the leading indicators, and set that expectation with fixed ops before the first report.
04 Organic and local
How the store shows up when nobody is paying for the click
| Card | Value | Note | Widget spec |
|---|---|---|---|
| Organic clicks | [pull] | [change] vs prior period | Search Console · clicks · vs prior period |
| Average position | [pull] | [change] vs prior period · lower is better | Search Console · avg position · vs prior period |
| Organic lead forms | [pull] | from [pull] organic sessions | GA4 · filter: google / organic · lead form events |
| Profile calls | [pull] | [change] vs prior period | GBP · call clicks |
| Direction requests | [pull] | [change] vs prior period | GBP · direction requests |
| Profile website clicks | [pull] | [change] vs prior period | GBP · website clicks |
Top organic landing pages
| Landing page | Sessions | Lead forms | Engaged rate |
|---|---|---|---|
| [Top page] | [pull] | [pull] | [pull] |
| [Page 2] | [pull] | [pull] | [pull] |
| [Page 3] | [pull] | [pull] | [pull] |
| [Page 4] | [pull] | [pull] | [pull] |
| [Page 5] | [pull] | [pull] | [pull] |
GA4 · filter: google / organic · group by landing page · top 5 by sessions
Organic moves on a longer clock
Read Search Console against the prior period, not against a plan. A slide in average position over two or three months matters more than any single month's click count. Business Profile calls are often the largest count of real intent on the whole page; do not bury them under paid.
GA4: lead events only, deduplicated
Unfiltered GA4 conversions are inflated by VDP view tagging, often the large majority of the count. Filter every GA4 widget on this page to submitted-lead events. If the site runs more than one tag set (vendor, ASC, platform default), dedupe or the same form counts three times.
05 Commentary and decisions
TRMG's read, kept on the page so the numbers never travel alone
| Card | Content |
|---|---|
| What changed this month | [TRMG commentary] |
| What we are fixing | [TRMG commentary] |
| Decisions needed from [Dealer] | [TRMG commentary] |
| Measurement notes | Any definition that changed this month: a raised lead quality floor, a new conversion filter, a reconnected account. Write it here before the number moves, so fewer, costlier leads by design never read as decline. |
06 Phase 2: after the lead
Not part of the current build. Target: next reporting month.
What it adds
Appointments set, shown, and sold by lead source, next to the platform lead counts above. This is the question the dealer is actually asking, and no ad platform can answer it. The contact-to-appointment stage is where dealer funnels usually break.
What it needs
A monthly [CRM] export by lead source into a Google Sheet, connected to AgencyAnalytics as a data source. One person owns the export. Nothing else on this page waits on it.
month · lead source · leads · contacted · appointments set · shown · sold · bad leads
How to read it when it lands
Report by the month the lead arrived and judge at 30 days. CRM source is first touch, so it shows the mix of what arrived, not which channel did the persuading. Never use it to move budget between digital channels. Internet leads close at roughly a quarter the rate of walk-ins by nature; that is the funnel, not a failure.
07 Build sequence
Phase 1, in this order, for every rooftop. Nothing here needs the CRM.
Connect and configure
- Confirm every source is connected to the right account. GA4, Meta, Google Ads, Business Profile, Search Console. A $0 Google Ads read means the wrong account is linked, not that nothing ran.
- Turn agency markup off on every spend widget. Client-facing spend is media only.
- Build the ACCOUNT metrics once. Blended cost per lead. Instant Form share of Meta leads. They appear on every rooftop automatically; do not rebuild them per client.
Place and check
- Build the CLIENT metric: budget pace against the approved budget from the IO. The one universal formula that needs a per-client constant.
- Place widgets to the spec line on each card. Objective column on every campaign table. Every GA4 widget filtered to lead events and deduped.
- Review with TRMG before the dealer sees it. No bracket left showing. Section 03 header matches the offer actually running. Website lead line in 02 is not flat. Measurement notes written for anything that changed.
TRMG Executive Dashboard Standard v1.1. Widget specs target AgencyAnalytics. Phase 1 uses only sources connected today. Platform leads are not CRM outcomes; Phase 2 adds them. Replace every bracketed value before a client-facing share.
Notes on the canvas
Seven notes sit beside the artboard in the source. Their text, in the order they appear from top to bottom:
How to use this standard
One artboard per rooftop, built to this spec. Organized by what the dealer runs: Sales, Service, Organic and Local. Each section pulls every channel working for that department plus the site behavior for it. Phase 1 uses only sources connected today. Nothing in brackets ships.
Objective before leads
First-build lesson: 58% of a sales budget sat on a Traffic objective and read as zero leads next to an Instant Form row. Label every row. Traffic with zero leads is by design. Leads with zero leads is a problem.
GA4: lead events only
First-build lesson: unfiltered conversions were 92% VDP views, and three tag sets fired on the same forms. Every GA4 widget on this page filters to submitted leads and dedupes. VDP views are engagement, shown as such.
Service header must match reality
First-build lesson: the section title named a service offer that had been pulled a month earlier. Check the offer and markets in 03 against what is actually live before every share.
Local is real intent
Business Profile calls and direction requests are often the largest count of genuine buying signals on the whole page, and they cost nothing. Read them against the prior period. Organic position slides over two or three months matter more than one month's clicks.
Write the change before the number moves
When a definition changes (lead quality floor raised, new conversion filter, account reconnected), put it in 05 Measurement notes first. Fewer, costlier leads by design must never read as decline.
Phase 2 is next month, not now
Do not build the CRM bridge as part of the current rollout. It needs one owner for a monthly export and nothing else on the page waits on it. When it lands: cohort by lead-created month, judge at 30 days, and remember CRM source is first touch. Mix, yes. Channel budget allocation, no.