Skip to content

Executive daily dashboard

Business task

A business leader (CEO, CMO, commercial director) needs a morning summary of key metrics for the previous day and month-to-date: total ad budget, number of leads, number of sales, revenue, average order value, CPL, ROAS. The report needs to combine data from ad channels and the CRM into a single view. There's no time to dig through detailed reports — a single-screen dashboard is needed.

Dashboard architecture

This recipe is composite — it doesn't create new connections or reports, but describes how to assemble a dashboard from narrower recipes that have already been set up:

  1. Daily Meta Ads campaign performance — spend, impressions, clicks, CTR, CPC for Meta Ads
  2. Google Ads lead cost control — CPL, CPA, conversions for Google Ads
  3. Daily report on new leads from Kommo — inbound lead flow, distribution across managers
  4. Meta Ads + Kommo end-to-end analytics — ROAS based on CRM revenue

The dashboard aggregates key metrics from these four reports into a single summary.

Connections (via compose reports)

The dashboard itself does not contain any connections directly. All connections are already configured in the underlying recipes:

  • meta-ads — in recipes 1 and 4
  • google-ads — in recipe 2
  • kommo — in recipes 3 and 4

Check the statuses: all connections must be active. If any connection is expired or in error, the corresponding block of the dashboard will be empty.

Report settings

  • Name: Executive daily dashboard
  • Report type: composite — aggregates data from several source reports
  • Source reports: Daily Meta Ads campaign performance, Google Ads CPL control, New Kommo leads, Meta Ads + Kommo end-to-end analytics
  • Date range: yesterday for operational metrics, this_month for cumulative ones
  • Grouping: by data source (report) and date
  • Sorting: by metric importance (spend → leads → sales → revenue → ROAS)
  • Timezone: Europe/Moscow

Parameters

json
{
  "type": "composite",
  "source_reports": [
    "daily-campaign-performance",
    "lead-cost-control",
    "daily-new-leads",
    "meta-kommo"
  ],
  "date_range": "yesterday",
  "mtd_range": "this_month",
  "aggregate_by": ["source_report", "date"],
  "timezone": "Europe/Moscow"
}

How composite works: LightLead sequentially runs each source report, extracts key metrics (the first rows, total sums), normalizes them, and merges them into a single table. The output is a compact summary rather than thousands of rows of raw data.

Dashboard metrics

Summary table of key indicators:

BlockMetricTypeSource
Advertisingtotal_spendcurrencySum of Meta Ads + Google Ads spend
total_impressionsnumberTotal impressions across all channels
total_clicksnumberTotal clicks
avg_ctrpercentWeighted average CTR
Leadstotal_leadsnumberTotal number of new leads
avg_cplcurrencyAverage CPL = Spend / Leads
Salestotal_dealsnumberNumber of deals created
won_dealsnumberNumber of deals won
total_revenuecurrencyRevenue from won deals
PerformanceroaspercentROAS = Revenue / Spend * 100%
romipercentROMI = (Revenue - Spend) / Spend * 100%
avg_checkcurrencyAverage order value = Revenue / Deals

Calculated metrics (computed at the dashboard level):

json
{
  "calculated_metrics": [
    {
      "name": "roas",
      "formula": "IF([total_spend] > 0, ROUND([total_revenue] / [total_spend] * 100, 1), 0)"
    },
    {
      "name": "cpl",
      "formula": "IF([total_leads] > 0, ROUND([total_spend] / [total_leads], 2), 0)"
    },
    {
      "name": "avg_check",
      "formula": "IF([won_deals] > 0, ROUND([total_revenue] / [won_deals], 2), 0)"
    }
  ]
}

Filters

No filters are applied at the dashboard level — each source report uses its own filters, as described in the corresponding recipes.

Write mode

Mode: Replace

A composite report always uses Replace, since it doesn't store its own data but aggregates the results of source reports on every run.

Schedule

json
{
  "schedule": {
    "enabled": true,
    "interval": "daily",
    "time": "09:15",
    "timezone": "Europe/Moscow",
    "retry_on_failure": true,
    "max_retries": 2
  }
}

Running at 9:15 AM gives a buffer after all source reports have run (6:30, 7:00, 7:30, 8:00, 8:30). By this time, all the data is guaranteed to be ready. Only 2 retries — if all sources ran successfully, the dashboard shouldn't fail.

Important: the run order matters. Make sure each source report's schedule is set earlier than the dashboard's (at least 15 minutes earlier). Otherwise the dashboard will run before the sources refresh their data and will show stale numbers.

Expected result

  • Status: completed (all source reports ran successfully)
  • Format: a compact table with 10-15 rows — key metrics for yesterday and month-to-date
  • On a single screen: the CEO sees: spent $X, got Y leads, Z sales, revenue $W, ROAS = N%
  • Comparison: a column with the previous day and previous month for trend evaluation
  • Export: automatic delivery of the dashboard to Google Sheets or Telegram every morning
  • Alerts: if ROAS drops below 100% or CPL rises 30%+, the cell is highlighted in red

Screenshot

[Screenshot]

[Screenshot]

Maintained by the LightLead Documentation Team · Last verified: 2026-07-26