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.

Six related data models for creative A/B testing — each slicing performance by a different element of the ad (text copy, visual asset, or full creative package). Pick the one matching the element you’re testing.

Pick an asset to test

Body Asset

Primary ad copy. Slice by body_text.

Title Asset

Headlines. Slice by title_text.

Description Asset

Description text. Slice by description_text.

Image Asset

Individual images. Slice by image_hash.

Video Asset

Videos. Only one with native Video Views.

Creative Asset

Full ad as one unit. Slice by asset_id.

What they all share

Every asset breakdown carries the same near-complete metric set. The per-asset sections below cover only the slice-by dimensions and per-asset quirks. Metrics, grouped by category — every number you can compute, across all six asset types. Expand below for examples in each.
Dimensions, grouped by category — pick an asset type to slice the metric by, plus the standard hierarchy shared across all Meta Ads data models. Expand below for examples in each.

Common metrics

Need a metric not listed? See the Meta Ads metric availability matrix.
MetricFormula
Spend & revenue
Ad SpendSum of daily spend
Conversion ValueSum of reported revenue (see naming note below)
ROASConversion Value ÷ Ad Spend
ConversionsSum of reported orders
AOVConversion Value ÷ Conversions
Clicks & impressions
Clicks (All)Sum of clicks (inline + outbound)
ImpressionsSum of impressions
CTR (All)Clicks ÷ Impressions × 100
Link ClicksSum of inline link clicks (website-bound)
Link Click-Through RateLink Clicks ÷ Impressions × 100
Cost efficiency
CPC (All)Ad Spend ÷ Clicks
CPMAd Spend ÷ Impressions × 1,000
CPAAd Spend ÷ Conversions
Cost Per Link ClickAd Spend ÷ Link Clicks
Engagement
Landing Page ViewsSum
Post EngagementSum (reactions + comments + shares + clicks)
Page EngagementSum (Facebook Page likes, follows)
Post ReactionsSum (Like, Love, Haha, Wow, Sad, Angry)
Cost Per Landing Page ViewAd Spend ÷ Landing Page Views
Conversion funnel
View ContentSum
Add to CartSum
Checkouts InitiatedSum
Add Payment InfoSum
SearchesSum (on-site search actions)
Cost Per View ContentAd Spend ÷ View Content
Cost Per Add to CartAd Spend ÷ Add to Cart
Cost Per Checkout InitiatedAd Spend ÷ Checkouts Initiated
Cost Per Add Payment InfoAd Spend ÷ Add Payment Info
Three asset breakdowns — Title, Image, and Video — expose the four revenue metrics under a Channel Reported prefix instead of the standard name. Values are identical. See Channel-reported naming for the field-by-field mapping.

Common dimensions

Standard campaign hierarchy, time, account, and attribution dimensions — documented once on the Meta Ads Overview.

Body Asset

Grain: one row per date × ad × body_text. Slice by:
DimensionTypeDescription
body_textStringFull body copy text
body_asset_idStringUnique ID for the body text asset
Use it to answer:
  • Which messaging approach wins — benefit, feature, or urgency framing?
  • Which copy gets clicks but no conversions? (clickbait detection)
  • Does longer or shorter copy convert better per campaign objective?
Uses standard revenue metric names.

Title Asset

Grain: one row per date × ad × title_text. Slice by:
DimensionTypeDescription
title_textStringHeadline text
title_asset_idStringUnique ID for the title asset
ad_titleStringAd title (from creative data)
Use it to answer:
  • Which headline patterns drive CTR — questions, numbers, urgency?
  • What’s the right title length for each placement?
  • Which titles convert vs. which just attract clicks?
Uses Channel Reported naming for revenue metrics. Channel Reported ROAS here = ROAS everywhere else.

Description Asset

Grain: one row per date × ad × description_text. Slice by:
DimensionTypeDescription
description_textStringDescription text content
description_asset_idStringUnique ID for the description asset
Use it to answer:
  • Do longer descriptions with more detail outperform shorter ones?
  • Does benefit-focused or feature-focused framing convert better?
  • How does description copy affect funnel conversion rates?
Uses standard revenue metric names.

Image Asset

Grain: one row per date × ad × image_hash. Slice by:
DimensionTypeDescription
asset_idStringUnique asset identifier
image_hashStringContent hash — tracks the same image across multiple ads
image_asset_urlStringImage file URL
image_asset_nameStringImage file name
asset_typeStringIMAGE, CAROUSEL_IMAGE, STATIC_CARD
Use it to answer:
  • Which images perform best regardless of how they’re packaged? (use image_hash)
  • Which image style wins — lifestyle, product-shot, or promotional?
  • Where is creative fatigue setting in? (CTR decay by image over time)
Uses Channel Reported naming for revenue metrics. image_hash is the key thing here — it tracks the same source image across multiple ads.

Video Asset

Grain: one row per date × ad × video_id. Slice by:
DimensionTypeDescription
video_idStringVideo asset identifier
video_urlStringVideo file URL
thumbnail_urlStringVideo thumbnail URL
Use it to answer:
  • Which video creatives drive view-through and conversion?
  • What’s the winning video length and style?
  • Where does the View Content → Add to Cart funnel break for a given video?
Only data model with native Video Views (3-second threshold) and Cost Per Video View. For completion-percentage metrics (Video 25/50/75/100%, Hook Rate, Hold Rate), go to Platform & Device. Uses Channel Reported naming for revenue metrics.

Creative Asset

Grain: one row per date × ad × asset_id. Slice by:
DimensionTypeDescription
asset_idStringCombined creative asset identifier
image_asset_urlStringImage URL for the creative
video_idStringVideo ID if the creative uses video
Use it to answer:
  • Which full creative packages win? (image + copy + headline + CTA + format as one unit)
  • Which creative format scales best — single image, carousel, video, or collection?
  • What combinations should be promoted to top performers across campaigns?
Uses standard revenue metric names.

Channel-reported naming

Three asset breakdowns expose revenue metrics under a different name due to source-schema convention. Values are identical — only the field name differs.
Standard name (used in Body, Description, Creative)Channel Reported name (used in Title, Image, Video)
Conversion ValueChannel Reported Conversion Value
ROASChannel Reported ROAS
ConversionsChannel Reported Conversions
AOVChannel Reported AOV
When building cross-asset reports that combine all six, normalize to a single name in your query layer.
All asset breakdowns expose:ad_spend · clicks · impressions · link_clicks · reported_orders · reported_revenue · landing_page_views · add_to_cart · checkouts_initiated · view_content · add_payment_info · post_engagement · page_engagement · post_reaction · searchesVideo Asset additionally exposes: video_views_total · cost_per_video_view