Creative performance report template: top and bottom ads by CPA, hook and hold

A weekly creative performance report is one table of every ad above a minimum spend, with spend, impressions, CPA, CTR, hook rate and hold rate, sorted by CPA, plus the top five and bottom five ads and one action for each. The prompt below asks Claude to build it from your Meta Ads account through Hopkin's meta_ads_get_ad_creative_report tool. It reads your data and changes nothing.

The report layout

Five parts, in this order:

  1. Summary line: spend, results and CPA for the week, next to the week before.
  2. Top five ads by CPA (lowest first) among ads above your minimum spend.
  3. Bottom five ads by CPA (highest first) among the same ads.
  4. Video funnel for video ads: hook rate and hold rate.
  5. Actions: for each top and bottom ad, one of keep, scale, change the opening, change the body, pause.
Template layout. Fill it from your own account. Hook rate and hold rate stay blank for image ads.
Ad name Format Spend Impressions CPA ([CONVERSION_EVENT]) CTR Hook rate Hold rate Action
[ad name] [video or image] [spend] [impressions] [CPA] [CTR] [hook, video only] [hold, video only] [action]
[ad name] [video or image] [spend] [impressions] [CPA] [CTR] [hook, video only] [hold, video only] [action]
[ad name] [video or image] [spend] [impressions] [CPA] [CTR] [hook, video only] [hold, video only] [action]

Hook rate and hold rate are defined, with formulas, in our guide to hook rate, hold rate and thumbstop rate.3 This page uses hook rate = 3-second views / impressions and hold rate = ThruPlays / 3-second views.2

The prompt

Use my Meta Ads connection (read-only). Build a weekly creative performance report for ad account [ACCOUNT_ID].
Pull meta_ads_get_ad_creative_report for [YYYY-MM-DD] to [YYYY-MM-DD] with level ad_id, and again for the previous period of the same length. Leave action_types unset. Follow nextCursor until you have every row.
Use [CONVERSION_EVENT] as the result and spend divided by that event's count as CPA. Use the attribution window I use in Ads Manager: [ATTRIBUTION_WINDOW].
Only include ads with at least [MIN_SPEND] spend in the period.
For video ads, hook rate = video_view (3-second views, from the actions array) / impressions, and hold rate = ThruPlays / video_view. Leave both blank for image ads. Say which formula each column uses.
Output:
1. One summary line: spend, results, CPA this period vs the previous one.
2. The five lowest-CPA ads and the five highest-CPA ads, as a table with ad name, format, spend, impressions, CPA, CTR, hook rate, hold rate.
3. For each of those ten ads, one action: keep, scale, change the opening, change the body, or pause, with a one-sentence reason from the numbers.
Do not change anything in the account.

Notes on the data

  • Hopkin's creative report, meta_ads_get_ad_creative_report, returns spend, impressions, CTR and conversions for every ad, plus ThruPlays, 25/50/75/95/100% completions and average watch time for video.1 Its action_attribution_windows option lets you match the attribution window in Ads Manager.
  • Hopkin's docs do not name the 3-second row. We confirmed on 2026-11-06 that it comes back as video_view inside the actions array (details and limits on the hook rate guide). On the same account and window we also called it at the default ad_name level; the video_view row was there too. So the row comes back at both ad_id and ad_name; at ad_name it is summed across ads that share a name, and average watch time is left out because it cannot be summed. Passing action_types can remove it, so leave that unset.
  • The tool returns pages of rows. The prompt tells Claude to follow nextCursor so the report covers every ad.
  • Pick one conversion event and one attribution window and keep them fixed, so this week compares with last week.

How to read it

Our reading, not a sourced rule.

  • Start with CPA. It is the result you pay for.
  • If CPA is high and hook rate is low compared with your other ads, look at the first seconds. If hook rate is fine and hold rate is low, look at the body of the ad. If both are fine and CPA is still high, look at the offer or the landing page.
  • Judge each ad against your other ads in the same account and period. Skip ads under your minimum spend.

Running it every week

Set the dates to last Monday through Sunday, paste the prompt into Claude, and read the table. Keep [CONVERSION_EVENT], [ATTRIBUTION_WINDOW] and [MIN_SPEND] the same each week. Ten minutes covers the review and the list of changes.

Hopkin connects to your ad accounts read-only, so running the report does not change campaigns.

Frequently asked questions

What should a creative performance report include?

Spend, impressions, CPA or ROAS, CTR and, for video, hook rate and hold rate for each ad, plus the best and worst ads and an action for each.

How often should I run it?

Weekly is a common cadence for in-house teams. Use the same dates, conversion event and attribution window each time.

Can Claude build this from my Meta Ads data?

Yes, with a Meta Ads connection such as Hopkin. The prompt above pulls meta_ads_get_ad_creative_report and builds the table.

Does it work for image ads?

Spend, CPA and CTR work. Hook rate and hold rate need video, so they stay blank for image ads.

Will Claude change my campaigns?

No. Hopkin's connection to your ad data is read-only, and the prompt says not to change anything.

Sources

  1. meta_ads_get_ad_creative_report, Hopkin docs. Read .
  2. About video ad metrics on Facebook and Instagram, Meta Business Help. Read .
  3. Hook rate, hold rate and thumbstop rate, Hopkin. Read .