Skip to main content
This page answers the questions that come up most often about custom breakdowns and custom metrics — usually when a widget is producing numbers that don’t line up with what the source data says.

Custom breakdowns

A custom breakdown only sums the campaigns that match a defined label condition. Any campaign not caught by any label — an unlabeled campaign — is excluded from the breakdown total, which is why the breakdown total is lower than the ad-account total. The Unlabeled Campaigns panel on the custom breakdown shows which campaigns are missing from the labels so they can be added.
Label conditions are exact string matches, and capitalization counts. A label named google does not group under the same bucket as a Google Sheets Channel value of Google — the two are treated as separate rows and the widget can appear to double up. Update the label value so it exactly matches (including capitalization) the value in the source column being grouped on.
A label condition like “campaign name contains ‘Meta’” only fires against the field the source actually populates. On a GA4 data source where campaign name is mapped to sessionCampaignName, no rows contain the string Meta (only sessionSource does). The condition looks correct but never matches, so the row stays empty. Point the condition at the field where the value actually lives, or add a separate condition for that source.
Label conditions have to be defined at the level where the underlying source has data. A widget filter that combines a Campaign Name condition with an Ad Name condition against a source that only exposes Creatives (for example, Campaign Manager 360’s Creatives table) returns no matches, because there is no Ad-level row to test. Move the condition to the level the source actually has (for example, from Ad to Creative), and the rows come back.
If a label returns 0 spend, the campaigns with meaningful spend are almost certainly not tagged with the value the label is filtering on. For example, a CTV label filtering on Campaign Type only picks up campaigns whose Campaign Type field says CTV — Peacock or other CTV campaigns that aren’t tagged that way get filtered out. Adjust the label conditions to include the campaigns that should be counted.
Custom breakdowns run against the values in the mapped source column. If a Google Sheet or CSV has no rows matching the condition — for example, a Storygize Spend sheet with no rows tagged Destination > Planning — the breakdown label returns nothing. Verify the value exists in the source, and check that the impressions or spend field on the source is actually mapped so the widget has a metric to sum.
Auto-generated custom breakdown labels are capped at 200 entries by default. Workspaces with much larger ad-set counts — for example, thousands of ad sets across DV360 or Meta — will hit the cap and miss the trailing labels. The cap can be raised to 10,000 by an Adriel workspace flag; once raised, re-run the auto-label generation to pick up the additional labels.

Custom metrics

A custom metric only resolves when every data source referenced in its formula is added to the widget. A formula that references a GA4 field returns 0 when the widget doesn’t include GA4 as a source — the numerator or denominator is missing and the KPI resolves to 0 while other visuals on the same widget render normally. Add the missing source to the widget’s source list and the metric evaluates.
Some platforms expose more than one variant of the same conversion concept, and Adriel exposes each variant separately. On Google Search Ads 360, conversion metrics whose names end in (conv time) are different from the asterisked non-conv-time versions — a formula pointing at the asterisked version when the intended metric is the (conv time) version resolves to 0. On Meta, Lead and Lead (Grouped) are separate metrics. Update the formula to reference the intended variant.
A custom metric formula is not automatically scoped to one channel. A formula that uses a cross-channel input like All Conversion (Google) will pull values on non-Google channels too (for example, TikTok), producing an inflated total. Add a per-source filter on each single-metric condition inside the custom metric so each source contributes only its own values.
Renaming a raw metric to the same name as another metric in the formula causes collisions. For example, renaming a Meta Conversion Value field to Revenue and then writing a formula Revenue + Reddit: Conversion Purchase Total Value will sum both the renamed Meta field and the Reddit value on Reddit rows, inflating the result. Rename the metric back or remove one of the two references from the formula.
A custom metric formula that adds the same source metric twice — for example, gss:D2C New Customer One-Time Revenue + gss:D2C New Customer Subscription Revenue where both are mapped to the same underlying source column — will produce the wrong total. Verify each formula term points at a distinct source field and, for spreadsheet sources, at the correct tab and column.
Custom metrics do not currently support date-based conditions. A rule like “only count these events for campaigns whose name contains ‘June’” fires whenever the campaign name matches — even when the event date is in a later month. To scope behavior to a specific period, split the metric into two period-scoped versions and use them separately.
Once a custom metric is deleted, widgets that still reference it display the raw numeric ID, because the UI’s name map falls back to the metric key when no display name resolves. Recovery requires either restoring the metric from a database backup or recreating the metric and re-linking it by ID.
Occasionally a custom metric’s cached value doesn’t automatically reflect a recent refresh of its underlying source, even though the raw data collected fine. Clicking the refresh button at the top of the dashboard re-runs the metric against the latest cache and displays the correct value.
The custom-metric precision setting only applies to the value shown on the widget itself. The hover tooltip on Overview and Single metric widgets intentionally shows the raw, unrounded value so users can inspect the underlying data. This is designed behavior, not a precision bug.
The total row of a custom metric is computed by applying the formula to the aggregated inputs, not by summing the per-row results. For a multiplication-based custom metric — or for a formula like frequency, where the numerator and denominator both aggregate independently — the total will never equal the sum of the breakdown rows. To scope the total to only certain channels, apply a channel filter to the widget instead of expecting the total to match a row sum.
Related: Custom breakdowns · Custom metrics · Breakdowns · Metrics