Ads Manager · mockup
Creation Lock V3

← all mockups

Creation v3 — one step per level (Birch's stepper + Meta's tree at review)

Merged from your screenshots + the Meta-flow research: creatives first (async), objective gates everything, each hierarchy level is its own step with "apply to all → override per item", and Review renders the Meta-style tree with batch validation. Save-as-template is always in the header — the flow itself is the template.

The flow — creative-first, level per step, template always saveable
New launch from template: T1-proven-winners💾 Save templateNext
✓ 1 · Creatives (async upload · library · promo-machine) ✓ 2 · Campaign (objective gates all) 3 · Ad sets 4 · Ads 5 · Review & publish
Step 1 also picks the launch mode: Creative testing (one ad set per creative — Birch's preset) or Custom (you set the structure). Objective + special-categories live in step 2 and are immutable after publish (Meta rule — changing = duplicate). Fields sit at the exact Meta level buyers know: budget at campaign only when CBO is on, audience/placements/schedule at ad set, identity/creative/copy/tracking at ad.
Step 3 · Ad sets — "apply to all" fan-out, then per-ad-set override tabs
Number of ad sets− 3 + · names: {{audience}}-{{geo_tier}} (preview: broad-T1 · editable per item at Review)
Apply the same settings to all 3 — ON · switch off to configure each; overrides win over the shared base
Shared basebroad-T1stack-T1 ·editedstories-9:16
AudienceAdvantage+ A+ ON · suggestions: T1 geos · 18–45 · excl. Purchasers 60d
PlacementsA+ ON (stories-9:16 tab overrides → manual: Stories + Reels)
Budget— campaign CBO $150/d (set in step 2)
Optimization → pixelPurchases · pixel Torix TV · 7d-click 1d-view
Schedulestart now · no end · tz: ad account
EU DSAbeneficiary Torix TV Ltd · payer same (required for EU-targeted)
Advantage+ per-lever toggles (audience / placements / budget) mirror Meta's 2026 posture — no master "manual mode". The per-ad-set tabs are the answer to "too many variables in one step": the shared base sets 90%, tabs hold the exceptions.
Step 4 · Ads = identity + tracking + the assignment matrix (kept, with Meta's caps) · Step 5 · Review = the Meta-style tree + batch validation
IdentityPage: Torix TV — Stunning Dramas · IG: none
TrackingPixel ✓ · App events: Torix Marketing API · URL params: utm_campaign={{campaign.name}}&… preview shown live
Creatives → ad setsthe assignment matrix (as locked) · caps enforced in-UI: ≤50 ads/ad set · ≤5 text/headline variations · format⇄placement warnings · "duplicate creative setup across ad sets" keeps copies editable
torix-fb-T1-…-cheffkiss-14.07 · SALES · CBO $150/d ✎ inline
├ + broad-T1 · A+ audience · 3 ads
├ + stack-T1 · 3 ads
└ + stories-9:16 · manual placements · 2 ads ! hover: "primary text exceeds 125 chars for Stories" · exclude & launch rest
Review = Meta's mental model: the full tree, every name and field inline-editable (Birch defers per-item names here too). Batch validation runs against provider requirements before anything is sent — red badge per failing item, hover for the exact reason, exclude-and-launch-the-rest instead of all-or-nothing. Publish creates everything PAUSED → per-item pipeline (processing → in review → active) tracked in the ledger/History.
A

Lock creation v3

Creative-first 5-step level-per-step flow · apply-to-all + per-ad-set tabs · A+ per-lever toggles · identity/tracking/DSA · assignment matrix with Meta caps · tree review with batch validation & exclude-and-launch. Round complete → spec update.

B

Adjust

Tell me in the terminal.