Expose full Meta Pixel funnel, native breakdowns and creative metadata in /ads/tree
Following the recent addition of the top-level video retention fields (huge win, thanks) — there are still several native Meta Insights fields that we have to extract by string-matching inside metrics.actions[] / metrics.actionValues[]. This is fragile: Meta occasionally renames action types, and summing actions[] at campaign / ad set level corrupts the values (same reason you isolated videoAvgTimeWatchedActions as a dedicated field).
We'd like the same treatment for the following.
1. Full Pixel funnel as top-level fields (highest priority)
landingPageViews — landing_page_view
viewContent — view_content / offsite_conversion.fb_pixel_view_content
addToCart + addToCartValue
initiateCheckout
purchases + purchaseValue
leads
Why: these are the core conversion events Meta exposes. Reading purchases and purchaseValue out of an array is the single most error-prone thing in the current response — one rename from Meta and ROAS goes to zero silently.
2. Click metrics as top-level fields
linkClicks
outboundClicks
uniqueLinkClicks
Why: unique link clicks is the only way to compute a deduplicated CTR when frequency is high. It's a native Meta field and can't be reconstructed from actions[].
3. Engagement metrics as top-level fields
postEngagements, postReactions, comments, shares, pageEngagement
Why: same rationale — dedicated fields, no array parsing, no rename risk.
4. Native Meta breakdowns (high priority)
Meta's Insights API supports breakdowns=publisher_platform, placement, age, gender, device_platform, country, region. Today /ads/tree returns totals only.
Ideal: an optional breakdowns query param on /ads/tree (and /ads, /ads/campaigns) that returns a breakdowns[] array per ad with the same metrics object per segment.
Priority for us: placement → age + gender → device_platform → country.
Why: without breakdowns, an ad shows only its aggregate performance. The whole diagnostic value of Meta Insights is being able to see where the performance concentrates (e.g. Reels vs Right Column, mobile vs desktop). Right now we have to hit Meta Graph directly to get this.
5. Configurable attribution window
Ability to request 1d_click, 7d_click, 1d_view, 7d_click_1d_view separately — either as a query param (?attribution=1d_click) or as parallel fields in the response.
Why: Meta's default mixes click + view attribution. Being able to isolate the click window is a standard Meta Insights capability that isn't currently exposed.
6. Creative metadata
videoPermalinkUrl / videoSourceUrl (HD)
thumbnailUrlHD (256px+ — current thumbnails are ~64px)
creativeType — explicit enum: VIDEO / IMAGE / CAROUSEL / DPA / COLLECTION
adPreviewUrl
Why: to render an ad in a UI today we have to make additional Meta Graph calls for playable video URLs and hi-res thumbnails. Bundling this into /ads/tree removes those extra calls and the rate-limit pressure they generate.
7. Extra video metrics missed in the last batch
videoContinuous2SecWatchedActions — Meta's official "2 continuous seconds" metric (different from video_view)
costPerThruplay
costPer2SecContinuousVideoView
Suggested implementation
Same pattern as the video retention batch:
Top-level key inside metrics (not inside metrics.actions) so aggregation is dedicated and safe.
0 for non-Meta platforms / non-applicable ads.
Included in metrics.daily[] when timeIncrement=1 is requested.
Breakdowns opt-in via query param, returned as metrics.breakdowns.placement[], etc.
Alternative
Add a generic insightsFields query param that accepts raw Meta Insights field names and passes them through. That way integrators can unblock themselves without waiting for each field, and it future-proofs against Meta adding new ones.
Log in to comment and vote
Comments2
Aug 6
PinnedHey Ezequiel, this is live.
Every metrics object in /v1/ads/tree and both analytics endpoints now carries metrics.funnel (landing page views, content views, cart adds, checkouts initiated, purchases, leads, registrations, app installs, messaging conversations) and metrics.engagementBreakdown (reactions, comments, shares, saves, page likes, video views, link clicks), plus costPerThruplay and a creativeType on ad nodes.
The part that matters most: each field picks a single member of Meta's action-type family instead of summing it, so you no longer risk the double counting you get from adding up actions keys yourself, and the numbers stay correct when rolled up to ad set and campaign.
The breakdowns, attribution windows and video retention metrics you asked for already existed on https://docs.zernio.com/ad-insights/get-ad-analytics (and its campaign-level twin), and those breakdown rows carry the new funnel fields too, so purchases per placement works today. The one thing still outstanding is outbound and unique clicks on the tree specifically, they live on the analytics endpoint for now.
Full field reference: https://docs.zernio.com/ad-campaigns/get-ad-tree.
Ezequiel Contestabile
Aug 6
Thanks; please confirm when the outbound clicks and unique clicks are ready.