Overview
System-defined reports are fully configuration-driven — no backend code changes required. A new report is created entirely by inserting records into the appropriate tables. The reporting engine flow:Step-by-Step Process
Create Source
Table:
source_masterAdd the platform under the category.- Set
client_id = 0for system/global sources
Add Metrics and Dimensions
Table:
This step defines what data exists.
report_data_dictionaryInsert metrics (clicks, spend, impressions) and dimensions (account, campaign). For each entry define:| Field | Description |
|---|---|
source_table | Database table to pull from |
source_column | Column name in source table |
entry_type | Set to System |
level | Account, Campaign, AdSet, Ads, Orders |
attribute | For custom dimensions |
Map Metrics to Source
Table: This ensures only valid metrics appear for that source and enables safe query generation.
report_custom_fieldsCreate the mapping between dictionary entries and sources:Create Report
Table:
This generates a
report_masterInsert a new report record:| Field | Value |
|---|---|
report_name | e.g., “LinkedIn Ads” |
report_type | System |
report_id used in subsequent steps.Map Report to Source
Table: This tells the engine which data sources feed this report.
report_source_masterLink the report to its data source:System Report Constraints
System-defined reports follow these rules:| Rule | Detail |
|---|---|
| Aggregation | Always aggregated (no granular drill-down) |
| Granularity | Always daily |
| Level behavior | Varies by source type (see below) |
Level by Source Type
| Source Type | Level Used |
|---|---|
| Paid Media | Account |
| Shopify | null |
| Analytics | Analytics Report |
| Mission Control | null |
report_template_master for system reports..png?fit=max&auto=format&n=Frm2GFbmok4D-yJA&q=85&s=93c3ebd47542af65d1cd06d8563a7f6e)