Skip to main content

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.

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 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.
QuadrantMeaningAction
High ROAS, High Spend (top right)Winners, already well-fundedScale further
Low ROAS, High Spend (top left)Danger zoneReview immediately, likely pause
High ROAS, Low Spend (bottom right)Underinvested performersStrong case for more budget
Low ROAS, Low Spend (bottom left)Low priorityMonitor
Attribution model: Last Click (default) — best for closing campaigns. First Click — initiating campaigns. Linear — full-funnel.
If UTMs are configured at ad level, switch Level to Ad Level Attribution to see Storefront Net ROAS and Contribution Margin per individual creative.
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 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 roasstorefront_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 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.
  • Googlegoogle_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.
For Google campaigns, demographic bid adjustments remain useful — Google still supports manual bid modifiers by age and gender.
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 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).
  • Googlegoogle_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

Creative performance

Title/body/asset patterns, formats, placements, search terms.

Back to overview

All categories and the quick reference table.