> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adriel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Widget is empty or missing rows

> A widget query ran and returned nothing, or fewer rows than expected. The cause is almost always a widget-level filter, a custom metric or breakdown scoping issue, or a blend join type.

An empty widget (or one with fewer rows than expected) rarely means the data is missing at the source. Almost always some part of the widget's configuration is hiding rows. Work through the checks in order.

## Quick checks

<Steps>
  <Step title="Click Refresh data in the dashboard header">
    Rules out a stale cache before deeper troubleshooting.
  </Step>

  <Step title="Compare against the widget totals on the ad-account level">
    If the ad-account total is normal but the breakdown total is low, the breakdown itself is missing rows — go to the custom breakdown section below.
  </Step>

  <Step title="Temporarily remove filters and breakdowns">
    If data appears, one of them is excluding the rows.
  </Step>
</Steps>

## Likely causes

<AccordionGroup>
  <Accordion title="A widget-level filter or override is hiding rows">
    Widget-level configuration frequently masks data:

    * **Widget-level date override** — disable it to inherit the dashboard period.
    * **Hide metric value** (also called hide-zero) hides rows whose spend is 0, so channels with only reserved-book activity or breakdowns with no spend in the period disappear.
    * A widget filter that specifies a channel, ad account, or campaign that no longer matches.

    → See [Filters](/dashboards/filters-and-dates/filters).
  </Accordion>

  <Accordion title="A custom breakdown label isn't catching every campaign">
    Custom breakdowns only sum campaigns that match a defined label condition. Any campaign not caught by a label is excluded, so the breakdown total is lower than the ad-account total. Common causes:

    * Case-sensitive label mismatch (labels are exact string matches).
    * Wrong level: an Ad-level condition against a Creative-level source finds nothing.
    * Auto-labels capped at 200 entries by default. Workspaces with much larger ad-set counts need the cap raised.
    * Ad-set conditions against Performance Max campaigns return 0 because PMax has no ad sets in the Google Ads API.

    The **Unlabeled Campaigns** panel shows which campaigns are missing from the labels.

    → See the [Breakdowns & metrics FAQs](/widgets/breakdowns-and-metrics/faqs).
  </Accordion>

  <Accordion title="A custom metric returns zero or blank">
    Most custom-metric mismatches trace back to formula configuration:

    * The widget must include every source referenced by the formula (a GA4-based custom metric returns zero if GA4 isn't added to the widget's sources).
    * Cross-channel inputs like `All Conversion (Google)` need per-source scoping filters to keep each source contributing only its own values.
    * Wrong variant (Meta `Lead` vs `Lead (Grouped)`; Google Search Ads 360 `(conv time)` variants).
    * Renaming a raw metric to the same name as a system metric causes formula collisions.
    * A formula that references the same source metric twice, or a spreadsheet field by the wrong tab or column, resolves incorrectly.

    A related quirk: a deleted custom metric leaves widgets that still reference it displaying the raw numeric ID. Recovery requires either restoring the metric from a backup or recreating it and re-linking it by ID.

    → See the [Breakdowns & metrics FAQs](/widgets/breakdowns-and-metrics/faqs).
  </Accordion>

  <Accordion title="A blended widget has the wrong join type">
    Data blending uses a left join by default: the blended source is scoped to values that also appear in a marketing source. If no marketing source is added, or the join keys don't overlap (leading space in a campaign name, `act_` prefix on a Facebook ad account ID, mismatched column names), the blended metrics collapse to nothing. Full join contributes rows of its own but enforces every mapped filter simultaneously.

    → See [Data integration FAQs](/data-sources/data-integration/data-integration-faqs).
  </Accordion>

  <Accordion title="The breakdown combination isn't supported by the platform">
    The most common case: Meta detail breakdowns (age, gender, country, platform, device, placement) combined with an ad-set filter return `INVALID_DIMENSIONS_COMBINATION`. Remove the ad-set filter to resolve. For placement specifically, switching a filter from `campaign name` to `campaign ID` uses a different data-fetch path that supports the combination.

    → See the [Meta Ads FAQs](/data-sources/g-n/meta-ads/faqs).
  </Accordion>

  <Accordion title="The list is capped at 200 ads">
    Ad-level breakdowns on large accounts are shortlisted to the top 100 highest-spend ads plus the top 100 most recent ads (max 200, minus overlaps). Widgets can legitimately display fewer than the total number of ads. Use Campaign → Ad breakdown with unfold to work around it.
  </Accordion>

  <Accordion title="A creative field is empty or Unknown">
    On DV360, some report configurations return `Unknown` for every row's creative value, so custom breakdowns generated by regex on the creative field return empty. Confirm the underlying report includes the creative fields (or remap `Creative` to `Ad Name` if it was mapped to a wrong field). LinkedIn Document Ads also don't render in the creative widget because Adriel doesn't currently support PDF creatives. Innovid SSI has no creative assets at all by design.
  </Accordion>

  <Accordion title="Cross-source breakdown compatibility filtered it out">
    Adriel checks breakdown compatibility across the data sources selected in a generic table. YouTube Analytics and Organic (Facebook/Instagram) are not compatible with each other for shared organic breakdowns, so when YouTube Analytics is included alongside Facebook or Instagram Organic sources, organic breakdowns are filtered out and can't be selected.
  </Accordion>
</AccordionGroup>

## Still stuck?

<Card title="Contact support" icon="life-ring" href="mailto:support@adriel.com">
  Email `support@adriel.com` with the dashboard URL, a screenshot of the widget's data settings panel, and the specific rows that are expected but missing.
</Card>
