Skip to content

Creative

The Creative page breaks your ad performance down by individual creative, not just by campaign. It pairs each creative’s numbers with tags like hook type, format, and audience temperature, so you can see which creative attributes are actually driving results.

Open Creative in the left navigation to see it. Inside the product the page header reads “Creative Intelligence”; the sidebar label is just Creative. It has four tabs: Overview, Attributes, Lifecycle, and Gallery.

Like the other Dashboard pages, Creative has an “Analytics range” bar at the top with a sales-channel filter and a date range picker. The date range picker sets the reporting window for the Overview, Attributes, and Gallery tabs. See Dates and comparisons for how the presets, custom ranges, and comparison periods work.

The sales-channel filter only affects Shopify sales data. It has no effect on the ad metrics shown on this page.

A KPI row across the top shows four numbers for the selected period:

  • Spend
  • ROAS
  • CPA
  • New this period (creatives that are new within the selected window)

Below that:

  • A media mix line summarizing how many of your creatives are video versus image, with a total count.
  • Top performers: your best creatives by ROAS.
  • Fatigue alerts: creatives showing signs of wear, each with a severity badge labeled “freq” followed by the creative’s Meta ad frequency for the selected period.
  • A best-hook or best-format callout at the bottom. Click it to jump to the Gallery tab, pre-filtered to that hook or format.

Four cards break performance down by attribute: Hook type, Format type, Media type, and Audience temperature. Each card pairs a bar chart with a table.

Table columns:

| Column | What it shows | |---|---| | Value | The attribute value, for example a specific hook type | | Creatives | Number of creatives with that value | | Spend | Total spend | | ROAS | Return on ad spend | | First 14d | ROAS during each creative’s first 14 days live, with the change versus its ROAS for the selected date range | | CTR | Click-through rate |

Rows in the Hook type and Format type cards are clickable. Clicking one jumps to the Gallery tab, pre-filtered to that value.

Audience temperature (Cold, Warm, or Retargeting) is auto-detected by Kreel. You can override it per campaign from the Meta Ads table on Paid Ads.

The Lifecycle tab tracks creatives through five stages: Testing, Scaling, Winner, Fatiguing, and Dead.

Two views, switched with an inner tab:

  • Stage board: a kanban-style board with one column per stage. Click a stage header to jump to the Gallery tab, filtered to that stage.
  • Batch timeline: a timeline view of your creatives grouped by launch batch.

In either view, click a creative to open a detail view with more information about it.

If nothing ran in that 30-day window, this tab shows “No creative delivery in this period.”

The Gallery is a card grid of every individual ad creative, with thumbnails.

Controls above the grid:

  • All campaigns: narrow the gallery to one campaign.
  • Sort: Spend, ROAS, Revenue, CTR, CPM, CPC, Conversions, or CPA, with a direction toggle between high-to-low and low-to-high.

A row of filter pills below that lets you narrow by:

  • Status (Active or All)
  • Audience temperature (Cold, Warm, Retargeting, or Untagged)
  • Hook type
  • Format type
  • Lifecycle stage (Testing, Scaling, Winner, Fatiguing, or Dead)
  • Product (plus an “Unlinked” option for creatives not tied to a product)

A live count shows how many creatives match your current filters. A Clear filters link appears once any of them differ from the default and resets them all at once.

  1. Open Creative, then the Gallery tab.
  2. Pick a campaign from All campaigns, if you want to narrow to one.
  3. Choose a metric from the Sort dropdown and set the direction.
  4. Use the filter pills to narrow by status, audience, hook, format, stage, or product.
  5. Click a creative’s card to see more detail, or Clear filters to start over.

The gallery loads creatives in batches of 48. Click Show more to load the next batch.

If no creatives match your filters, the gallery shows “No creatives match your filters…”. If there is no creative data at all for the period, it shows “No creative data available for this period.”

Kreel tags every ad creative it syncs so you can slice performance beyond the campaign level:

  • Hook type: how the creative opens.
  • Format type: the creative’s format.
  • Media type: image or video.
  • Audience temperature: Cold, Warm, or Retargeting, auto-detected by Kreel with a manual override available per campaign on Paid Ads.
  • Lifecycle stage: Testing, Scaling, Winner, Fatiguing, or Dead.

These are the same attributes used across the Overview, Attributes, Lifecycle, and Gallery tabs above, so a filter or breakdown you see in one place lines up with the others.

Overview shows aggregate rates, Attributes shows rates per group, and creative Detail shows the video funnel. Counts are added before division, so larger contributors carry their delivery weight; rates are never summed or averaged.

| Metric | Formula | | --- | --- | | Hook rate / thumbstop | 3-second video plays ÷ impressions | | Hold rate (ThruPlay: 15s or completion) | ThruPlays ÷ 3-second video plays |

Meta ThruPlay means 15 seconds or completion for a shorter video. It is not a separate true 15-second play count. The API names this measurement thruplay_hold_rate, rather than implying an exact 15-second hold rate.

MCP get_creatives and DSL creatives expose hook_rate, its identical alias thumbstop, and thruplay_hold_rate as four-decimal fractions: 0.3 means 30%. The dashboard renders percentages. The gallery’s existing hook_rate field retains its percentage unit; its new thumbstop and thruplay_hold_rate fields are fractions. Missing measurements or nonpositive denominators produce null (shown as “—”); measured zero with a positive denominator displays 0.0%. If any contributing daily row lacks a measurement, that aggregate measurement is unavailable, rather than a partial sum.

For compatibility, the nested MCP fatigue.hook_rate still uses 30-second views ÷ impressions, and fatigue.hold_rate uses p100 views ÷ 30-second views. The legacy gallery hold_rate retains the latter definition in percentage units. These older fields differ from the canonical metrics above.

Use MCP get_creatives(group_by=["asset"]) or the agent REST comma-separated group_by=asset; combine asset with hook_type and format_type if needed. Confirmed single images with nonblank Meta image hashes share an asset group, including across selected accounts in the same brand. Meta’s image_hash is not a downloaded-file checksum. Videos, carousels, unknown media, blank hashes, and absent asset metadata fall back to account-scoped creative ID; missing creative IDs fall back to account-scoped ad ID. Shared video thumbnails never establish video identity, and this feature does not deduplicate video re-uploads. creative_count retains its existing meaning: number of contributing ads.

DSL metadata-only queries retain their original projection and grain. Selecting, filtering, ordering, or grouping on performance fields activates a fixed lookup through ads to daily performance, with a default of seven inclusive days ending yesterday. Use a filter-only date equality or a bounded gte/lte date range to override it. Metadata without matching performance retains null metrics.

The MCP coverage block includes hash availability by media type (over the returned page for individual rows, or all contributors for asset groups). Numerical coverage depends on the selected dataset and window; no approved live dataset was reachable during implementation. Reproduce a read-only report from backend/ against an approved database:

Terminal window
.venv/bin/python -m scripts.report_creative_hash_coverage \
--client-id BRAND_ID --start 2026-08-01 --end 2026-08-31

The report counts unique synced creative identities represented in that daily performance window: metadata matches, nonblank hashes, usable image hashes, fallbacks, and duplicate usable-hash groups, by media type.

The same creative data is available to your AI agent through the get_creatives MCP tool. Once you connect MCP or the CLI, you can ask your agent about creative performance directly instead of browsing the gallery by hand.

Email support@kreel.ai.