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

# Marketing & ad spend

> Triggers in Ocular for platform-vs-storefront ROAS, demographics, dayparting, and geo performance — to diagnose marketing efficiency and ad spend waste.

For each trigger below: **what happened, where to go, how to read it, the decision you're making.**

## Is my ad spend actually working — or just looking good in Ads Manager?

**Trigger:** You're scaling spend, the platform says ROAS is strong, but the P\&L isn't reflecting it. You suspect over-attribution.

**Go to:** **Ad & Campaign Performance** {/* TODO: relink to /use-your-data/ad-and-campaign-performance once that page is published. */}

Ocular surfaces two ROAS numbers side by side for every campaign:

* **Ad Platform ROAS** — what Meta or Google reports
* **Storefront Net ROAS** — revenue from your storefront attributed via GA4 + UTMs

**The bubble chart** — X-axis: Platform ROAS · Y-axis: Ad Spend · Bubble size: Revenue.

| Quadrant                            | Meaning                      | Action                           |
| ----------------------------------- | ---------------------------- | -------------------------------- |
| High ROAS, High Spend (top right)   | Winners, already well-funded | Scale further                    |
| Low ROAS, High Spend (top left)     | Danger zone                  | Review immediately, likely pause |
| High ROAS, Low Spend (bottom right) | Underinvested performers     | Strong case for more budget      |
| Low ROAS, Low Spend (bottom left)   | Low priority                 | Monitor                          |

**Attribution model:** Last Click (default) — best for closing campaigns. First Click — initiating campaigns. Linear — full-funnel.

<Tip>
  If UTMs are configured at ad level, switch Level to **Ad Level Attribution** to see Storefront Net ROAS and Contribution Margin per individual creative.
</Tip>

**Chart Builder:** Meta or Google Ads · Measures: `roas`, `storefront_roas`, `ad_spend` · Dimension: `campaign_name` · Sort by `ad_spend` descending.

**Decision:** Which campaigns are genuinely profitable on storefront data — scale, maintain, or pause?

***

## Why is my ROAS different from what Meta / Google reports?

**Trigger:** A campaign reports 5× ROAS in Ads Manager but the revenue isn't visible in Shopify. You need to understand the gap.

**Go to:** **Ad & Campaign Performance → Campaign Table → Revenue & Profitability columns** {/* TODO: relink to /use-your-data/ad-and-campaign-performance once that page is published. */}

The gap between platform ROAS and storefront ROAS shows over-attribution per campaign. Common causes:

* **View-through attribution** — platform counts conversions where the ad was seen, not clicked
* **Overlapping attribution windows** — both Meta and Google claim the same conversion
* **Cross-device conversions** — purchase on a different device than the click

**Chart Builder:** Meta Ads · Measures: `roas`, `storefront_roas`, `conversion_value` · Dimension: `campaign_name` · Table. Campaigns where `roas` ≫ `storefront_roas` are over-attributed; campaigns where they match are your most trustworthy signals.

**Decision:** Which campaigns can I trust the platform numbers on, and which require storefront ROAS for budget decisions?

***

## Which demographic should I be targeting more — or less?

**Trigger:** You want to know who your best customers are by age and gender, and whether ad spend is aligned to where the return sits. Or you're running broad targeting and need to validate algorithm delivery.

**Go to:** **Marketing → Meta Ads → Demographic Performance Matrix** {/* TODO: relink to /use-your-data/marketing once that page is published. */}

Heatmap of age × gender. Switch the metric:

* **ROAS** — most efficient segments
* **CPA** — cheapest acquisition
* **Spend** — where the budget is actually flowing

**Chart Builder (deeper):**

* **Meta** — Age & Gender breakdown · Measures: `roas`, `cpa`, `conversions` · Dimension: `age_range` · Breakdown: `gender` · Pivot.
* **Google** — `google_ads_age` and `google_ads_gender_datamodel` · Measures: `roas`, `cpa`, `conversion_rate`.

**Use this for creative, not targeting.** Meta's Andromeda handles audience delivery automatically — fragmenting campaigns by demographic hurts performance. If 25–34 Female converts best, brief creatives for that audience rather than building a dedicated ad set.

<Note>
  For Google campaigns, demographic bid adjustments remain useful — Google still supports manual bid modifiers by age and gender.
</Note>

**Decision:** Which segments should I brief new creatives for (Meta), and adjust bids on (Google)?

***

## What time of day should I be spending on ads?

**Trigger:** Setting up dayparting rules or evaluating whether ad scheduling matches engagement. Or CPMs spike at specific hours and you want to know if off-peak is more efficient.

**Go to:** **Marketing → Meta Ads → Best Time to Advertise** {/* TODO: relink to /use-your-data/marketing once that page is published. */}

Heatmap of CTR, CPM, or CPC by hour × day. Bid higher in high-CTR windows, pull back in low-engagement ones.

**Chart Builder:** Meta Ads — Audience Hour breakdown · Measure: `ctr` or `cpa` · Dimension: `hour_of_day` · Breakdown: `day_of_week` · Pivot — for exact numbers per time slot.

**Decision:** Which hours/days should I bid up, and which should I reduce or pause?

***

## Which geographic markets are generating the most ad-driven conversions?

**Trigger:** Planning geo expansion or contraction. Maybe you're launching in a new city, or justifying whether a regional campaign is pulling its weight.

**Chart Builder:**

* **Meta** — Region breakdown · Measures: `conversions`, `roas`, `ad_spend` · Dimension: `region` · Bar (sorted by conversions).
* **Google** — `google_ads_geo_datamodel` · Measures: `conversion_value`, `roas`, `cpa` · Dimension: `city`.

**What to look for:**

* High `conversion_value` + high `cpa` → generating revenue but at cost
* High `roas` + low `ad_spend` → underinvested, room to scale

**Decision:** Which cities to scale into, maintain, or pull back from?

## Next

<CardGroup cols={2}>
  <Card title="Creative performance" icon="wand-magic-sparkles" href="/overview/start-with-the-question/creative-performance">
    Title/body/asset patterns, formats, placements, search terms.
  </Card>

  <Card title="Back to overview" icon="circle-question" href="/overview/start-with-the-question">
    All categories and the quick reference table.
  </Card>
</CardGroup>
