Skip to main content
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.
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: 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: 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: 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: 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: 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: 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. 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