Skip to main content

Expose Meta Ads video retention metrics in /ads/tree

We are using Zernio’s Meta Ads integration through the /ads/tree endpoint for an external ecommerce analytics platform.

Today, /ads/tree returns video_view inside metrics.actions, but it does not expose the native Meta video retention percentile fields.

We need the following Meta Insights fields to be included in the response for video ads, ideally inside metrics.actions at the same level as video_view:

  • video_p25_watched_actions

  • video_p50_watched_actions

  • video_p75_watched_actions

  • video_p100_watched_actions

  • video_thruplay_watched_actions

  • video_avg_time_watched_actions

These are native Meta Marketing API Insights fields and can be requested through the fields parameter.

Why this matters:

Basic video views are not enough to diagnose creative performance. With these fields, analytics platforms can calculate:

  • Hook hold rate

  • Sustain rate

  • Video retention curve: 0% → 25% → 50% → 75% → 100%

  • Drop-off points inside the video

  • Whether a video has a strong hook but loses users before the offer or CTA

This is especially important for ecommerce ad diagnostics, where a video can have good 3-second views but still fail to convert because retention drops before the product benefit, offer, or CTA.

Suggested implementation:

Expose these fields as raw action metrics inside metrics.actions for each video ad in /ads/tree, alongside the existing video_view action.

Alternative:

Add an option to request additional/custom Meta Insights fields for ads analytics endpoints.

Status: Completed2 comments

Log in to comment and vote

Comments2

  • Miquel Palet López

    Team•

    Jul 6

    This is now done:

    • /ads/tree (plus /ads, /ads/campaigns and campaign analytics) now returns all 9 Meta video fields per ad/ad set/campaign: plays, 30s, thruplay, p25–p100 and avg time watched. Also in thedaily[]series with timeIncrement=1

    • They’re top-level keys inside metrics, not inside metrics.actions. Reason: actions are rolled up by summing them, which would corrupt videoAvgTimeWatchedActions. Since it is a dedicated field, we aggregate it at every level using play-weighted aggregation

    • Zero for non-video ads / non-Meta platforms. OpenAPI is updated

    • Ezequiel Contestabile

      •

      Jul 6

      Thanks!