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:
- Daily Meta Ads campaign performance — spend, impressions, clicks, CTR, CPC for Meta Ads
- Google Ads lead cost control — CPL, CPA, conversions for Google Ads
- Daily report on new leads from Kommo — inbound lead flow, distribution across managers
- 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 4google-ads— in recipe 2kommo— 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:
yesterdayfor operational metrics,this_monthfor cumulative ones - Grouping: by data source (report) and date
- Sorting: by metric importance (spend → leads → sales → revenue → ROAS)
- Timezone:
Europe/Moscow
Parameters
{
"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:
| Block | Metric | Type | Source |
|---|---|---|---|
| Advertising | total_spend | currency | Sum of Meta Ads + Google Ads spend |
total_impressions | number | Total impressions across all channels | |
total_clicks | number | Total clicks | |
avg_ctr | percent | Weighted average CTR | |
| Leads | total_leads | number | Total number of new leads |
avg_cpl | currency | Average CPL = Spend / Leads | |
| Sales | total_deals | number | Number of deals created |
won_deals | number | Number of deals won | |
total_revenue | currency | Revenue from won deals | |
| Performance | roas | percent | ROAS = Revenue / Spend * 100% |
romi | percent | ROMI = (Revenue - Spend) / Spend * 100% | |
avg_check | currency | Average order value = Revenue / Deals |
Calculated metrics (computed at the dashboard level):
{
"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
{
"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]