---
name: set-up-dynamic-creative
description: >-
  Builds a Meta Dynamic Creative (DCO) ad set: one asset feed, multiple images/videos, multiple
  primary texts, multiple headlines, multiple CTAs, assembled via mads_create_creative so Meta
  auto-combines components per viewer instead of running one fixed creative. Good for early, broad
  exploration when components are cheap to vary and the axis that matters isn't known yet; trades
  away clean single-combination attribution in exchange for that breadth, unlike Advantage+
  creative's automatic standard enhancements (brightness, music, templates, text) applied to one
  fixed asset. Builds the ad set PAUSED, previews multiple component combinations, and requires
  explicit approval before commit. Reach for it for early exploration or thin production budgets
  that need to cover many combinations at once. It ends at a live-but-paused DCO ad set, it does
  not run the clean, single-variable comparison DCO can't give
  (run-creative-testing-framework) or produce the underlying assets (produce-ugc-creative-brief).
---
# Set Up Dynamic Creative (DCO)

## Purpose
Dynamic Creative lets one ad set mix a feed of asset components, several images/videos, several
primary texts, several headlines, several CTAs, and Meta auto-assembles and serves whichever
combinations perform best per person. It trades clean single-variable attribution (you can't cleanly
say "headline B won") for breadth: a small set of components covers a lot of combinatorial ground
before enough is known to run tighter tests. This skill sets that ad set up correctly and draws the
line at when to use it instead of a discrete ABO test.

## When to run
- Early exploration on a new audience or offer where components are cheap to vary but it isn't yet
  known which axis (image, hook, CTA) actually matters.
- Production budget is thin and a handful of components need to cover many combinations rather than
  fully producing separate ads for each.
- The account wants Meta's algorithm to handle component-level optimization instead of manual,
  ad-level testing.

## When NOT to run
- The goal is a clean read on ONE variable, discrete ABO cells in `run-creative-testing-framework`;
  DCO cannot cleanly attribute a single component's contribution.
- Components aren't ready, fewer than 2 images/videos or 2 primary texts isn't worth the setup;
  build them in `produce-ugc-creative-brief` first.
- The need is automatic standard enhancement (brightness/music/template/text variations) applied to
  existing fixed creative, that's Advantage+ creative, a different mechanism from a mixed asset
  feed.

## Prerequisites
- At least 2 (ideally 3-5) images or videos, 2+ primary text variations, 2+ headlines, and a CTA
  choice ready to feed in.
- A single ad set's worth of audience, budget, and placement already decided, DCO lives inside one
  ad set.
- Agreement with the user that per-component attribution will be limited, set before building, not
  discovered after.

## Procedure
1. **Confirm DCO is the right call.** Check against Decision rules, if a clean single-variable read
   is actually what's needed, stop and route to `run-creative-testing-framework` instead.
2. **Assemble the asset feed.** Collect images/videos, primary texts (bodies), headlines (titles),
   descriptions, and CTA options. More components than needed wastes production; fewer than 2 per
   axis isn't dynamic, it's just one ad with extra steps.
3. **Build the creative.** `mads_create_creative` with the multi-component asset feed (images or
   videos, bodies, titles, descriptions, call-to-action options) rather than a single fixed
   `object_story_spec`, this is what makes it Dynamic Creative instead of a normal creative.
4. **Create the ad set flagged for Dynamic Creative, status PAUSED.** `mads_create_adset` with the
   already-agreed audience/budget/placement and the dynamic-creative setting enabled on the ad set
   itself (not the campaign, not the ad).
5. **Attach the ad.** `mads_create_ad` referencing the dynamic creative, status PAUSED.
6. **Preview before submitting.** `mads_preview_creative` against a few representative component
   combinations, not just the first one, different pairings can read very differently.
7. **Summarize and get explicit approval.** Plain-English recap: which components are in the feed,
   roughly how many combinations that implies, and the attribution tradeoff, then commit.
8. **Let it run past the learning phase** (the same ~50-events/7-days floor as any ad set) before
   drawing conclusions, and read results at the ad-set level (cost per result) rather than expecting
   clean per-image or per-headline attribution.
9. **Harvest signal without over-reading it.** Where Meta's asset-level breakdown is available,
   treat it as a hint for the next discrete test's hypothesis, not a final verdict on any single
   component.

## Decision rules
- **Clean attribution needed →** discrete ABO cells (`run-creative-testing-framework`), not DCO.
- **Broad early exploration, cheap components, unclear which axis matters →** DCO.
- **Fewer than 2 variants on an axis** (image, text, or headline) means that axis isn't actually
  being tested, add a variant or drop it from the "dynamic" framing.
- **A promising DCO signal graduates** into a discrete, single-variable ABO test to confirm before
  any scaling decision is made off it alone.
- **Standard automatic enhancement of one fixed creative** (brightness, music, template) is
  Advantage+ creative, a different mechanism, do not conflate it with Dynamic Creative's
  multi-component feed.
- **Done means:** the asset feed (images/videos, bodies, titles, CTAs) is built, the ad set is
  created PAUSED with Dynamic Creative enabled, preview covered multiple combinations, and the user
  approved before commit.

## Common failure modes
- **Treating DCO output as a clean per-component result** and scaling a single "winning" headline
  off mixed-combination data.
- **Feeding in only 1 variant per axis**, no actual dynamic behavior, just setup overhead.
- **Skipping the attribution-tradeoff conversation**, so the user later expects ad-level answers DCO
  was never built to give.
- **Never graduating a DCO signal into a discrete test**, so nothing observed is ever confirmed.
- **Mixing DCO with Advantage+ creative enhancements** and losing track of which mechanism produced
  which result.

## Related skills
- Before: `produce-ugc-creative-brief` (supplies the component pool).
- After: `run-creative-testing-framework` (confirms a DCO signal with a clean single-variable test).
- Related: `select-formats-and-placements` (per-placement asset customization interacts with a DCO
  feed's component set).
