Skip to main content

Overview

The report_data_dictionary table is the single source of truth for all metrics, dimensions, and formulas used in system-defined and custom reports. Every metric — whether pulled from a source, calculated via formula, or manually entered — is registered here.

Schema

ColumnTypeDescription
idint (PK)Unique identifier
metricvarchar(100)Metric name (e.g., CTR, Revenue)
source_tablevarchar(100)DB table the metric is pulled from (null for formula/user metrics)
source_columntextColumn name in source table
column_labelvarchar(100)Human-readable name for UI display
descriptiontextExplanation of metric purpose
data_typevarchar(100)number, percent, currency, text, date
entry_typevarchar(100)System, Formula, User Data, Custom
client_idvarchar(100)Owning client (0 = system/global)
formulavarchar(255)Formula using dictionary IDs (e.g., 2/3 for clicks/impressions)
formula_labeltextDisplay label for formula in UI
levelvarchar(255)Dimension level: Campaign, AdSet, Ads, Account, Orders
planning_idintLinks to planning/target data
variancebooleanSupports variance calculation
is_decimalbooleanTreat as decimal for calculations
is_deletedbooleanSoft delete flag
is_agencybooleanAgency-specific metric
is_dimensionbooleanTrue if entry is a dimension
attributevarchar(255)Which attribute a custom dimension/metric is built on
agency_idintFor agency multi-tenancy
heatmap_reversebooleanTrue for “lower is better” metrics (CPA, CPM)
metric_configJSONAdditional config (thresholds, calculation rules, display)

Key Columns Explained

source_table

Specifies which database table the metric is pulled from. Only required for system metrics — formula and user metrics leave this null.
metricsource_tablesource_columnlevel
Clicksinteraction_insight_ads_trackerclicksAccount
Total Salesorders_newtotal_salesOrders
If the metric is formula-only, source_table should be null.

source_column

The exact column in source_table to pull values from. For derived metrics like ROAS, you can specify the calculation directly:
metricsource_tablesource_columnlevel
ROASinteraction_insight_ads_campaigntrackerconv_value / costCampaign
Revenueinteraction_insight_ads_campaigntrackerconv_valueCampaign
For derived system metrics (ROAS, CPA, CPC, CTR), you can set source_column as conv_value / cost. Also add the formula field (e.g., 2/3) for footer calculations.

attribute

Defines which attribute a custom metric or dimension is built on. This enables grouping and filtering.
Nameattributeis_dimension
Facebook Ads Paid Media Revenue (GA)sourceFALSE
Meta Prospecting Campaignscampaign_nameTRUE

level

Specifies which data level a metric belongs to. The same metric (e.g., Clicks) exists at multiple levels:
metriclevelsource_table
ClicksAccountinteraction_insight_ads_tracker
ClicksCampaigninteraction_insight_ads_campaigntracker
ClicksAdSetinteraction_insight_ads_adsettracker
ClicksAdsads_adtracker
The UI uses level for filtering — when a user selects a dimension, they see all metrics at that level.

Report Custom Fields

The report_custom_fields table maps metrics and dimensions to their associated sources.
  • A system metric is always associated with one source
  • A custom metric can be associated with multiple sources
  • An attribute can be associated with single or multiple sources
dictionary_idsource_idcategory_id
11 (Shopify)1 (Commerce)
22 (Google Ads)2 (Paid Media)
32 (Google Ads)2 (Paid Media)
33 (Facebook Ads)2 (Paid Media)

Design Principles

  • Single Source of Truth — All metrics, formulas, and dimensions originate from the data dictionary
  • Extensible — Adding a new system metric only requires inserting a row
  • Multi-Tenant — Metrics can be client- or agency-specific via client_id and agency_id
  • Soft Delete & Auditis_deleted plus timestamps ensure traceability
  • Metrics + Dimensionsis_dimension differentiates grouping dimensions from value metrics