Test Order (Trunk β Branch β Leaf)
- Test the highest-impact variable first: angle > awareness level > Lead/Headline/Image > format > copy length.
- Trunk = awareness Γ motivation; wrong here and no copy saves it. Lock this before anything else.
- Sequence: AwarenessΓMotivation β dominant desire β angle type β voice β ad type β creative format β lander β HL/Lead/Body/Image/CTA.
- Color-block winners are hypotheses, not winners; take top 3 straight into full ads to confirm.
- Never change two big variables at once: hold awareness while testing motivation; type before format; lander type before voice.
- Lander beat order (highest leverage first): Headline β Lead (first 200 words) β Body β Images β CTA.
- Sky House default control lander = Top 5 / Listicle; start there, don't re-prove it.
- Sophistication β awareness: if ~50 competitors run your mechanism, shift to a novel mechanism or identity β a new hook won't fix it.
Structure & Launch
- CBO + one broad ad set; broad targeting is mandatory β creative is the targeting, narrow fights the algo.
- Each testing ad set locks ONE variable = one hypothesis; write the hypothesis before building ads.
- Launch 15-20 genuinely diverse creatives; expect only 3-5 to get real delivery β that's normal.
- Max 6 ads/ad set in testing (clean signal), up to 12 in Control (scale + diversity).
- Never put new ads into a winning ad set (Pack System); build a fresh set instead.
- Deploy winners across ad sets via 'existing post' to keep Entity ID + social proof; duplicating resets both.
- 3Γ3 framework: 3 angles Γ 4 formats = 12 unique-Entity-ID ads (NOT Sky House's 4x4, which is 4 ad texts Γ 4 headlines).
- Budget split: 60-70% cold prospecting, 30-40% retargeting (retargeting only after 1,000+ audience).
Creative Diversity (Entity ID)
- Ads scoring >60% similar (visual+copy+audio) collapse to ONE Entity ID and split delivery β launch 100, only 10 deliver.
- Headline tweaks and color swaps are NOT new ads; repurpose winning MESSAGE across genuinely new formats.
- Score below 60%: differ on format, motivator, visual style, voice, and tone simultaneously β not one dimension.
- Same-body hook variation is dead; first-3-second clones count as the same ad.
- Run a portfolio across all 5 awareness levels; the broad audience contains all of them β let the algo match.
- Ongoing cadence: 5 new concepts/week across 2-4 formats; budget ~5-6 losers per winner (15-18% real win rate).
Kill Rules
- Never kill before 72 hours untouched; day-of-week skews 1-day data.
- PAUSE: CPC >$2.00 after $50 spend AND zero add-to-carts AND zero purchases.
- Kill/refresh: frequency >3.0 AND CTR drops 30%+.
- No meaningful delivery after 48-72h = Andromeda rejected it, kill.
- Kill ad set after 1x target CPA with no purchase; kill ad at CTR <1% after 1,000 impressions.
- Min-spend gate before judging (Buontempo): CPA<$100β3.5-4x Β· $100-149β3x Β· $150-249β2-2.5x Β· >$250β1.5-2x.
- Winner = hit min-spend gate + at/under target CPA + sustained over 7-day window (kills spike false-positives).
- Read aggregate POD/concept performance, not single-ad CPA β Meta sequences ads and one warms the converter.
Scaling
- Pre-scale gate: known LTV/AOV + backend bandwidth for 2x buyers + automations in place. Fail any = hold.
- Scale trigger: CPA at/below target 3 days + frequency <1.8 + 50+ events.
- Default rate: +20% every 3 days; go +25-30%/day only with full unit economics + 5 profitable days.
- Never raise budget >30% in one step β algo needs to relearn.
- Break-Even ROAS = 1/(1-COGS%-Overhead%); Scaling ROAS = Break-Even + 1.0. Between them = maintain, below = cut.
- Affiliate: break-even EPC=CPC, scale at EPC>2x CPC; track via network not pixel (reporting delay).
- Build a financial model BEFORE launch β without your true break-even CPA/CPC you'll kill winners early.
- Frequency >2.0 = pull back, audience fatigued.
Fatigue & Refresh
- Rising CPM is the PRIMARY fatigue flag; then declining CTR, frequency >3, rising CPA, dropping hook rate.
- Fatigue hits in 2-4 weeks; plan new creative every 1-3 weeks.
- Refresh by changing archetype/emotional driver/format with the SAME winning message β not color/headline tweaks.
- Don't kill winners for being 'old' β let the numbers decide.
- CPCQ + volume stable but lead quality dropping = audience pocket gone bad, not fatigue; pause CAPI feed + duplicate campaign to reset Meta's ML.
- Market saturation (CPMs rising niche-wide, competitor ad libraries converging) = change the angle/mass-desire entirely, not the hook.
KPI Benchmarks
- Hook rate: 20-25% good, 30%+ great, <15% cut. Hold rate: 20%+ good, <15% cut.
- Link CTR: 1.0-1.5% good, 2%+ great, <0.7% cut; big outbound-vs-link gap = clickbait.
- Healthy CTR band 0.90-1.60%; CPA cut at >3x target.
- Scale confirmation: ad set spent 5-10x AOV profitably.
- Build custom Meta columns: Hook Rate, Hold Rate, cost-per-10k-reach; save as preset.
- CAPI/Event Quality 8+ is mandatory in 2026 β pixel-only is broken (88% iOS opt-out).
- Direct call-out hooks look bad on hook rate by design (non-targets scroll) β judge on downstream conversion.
- Optimize for the deepest funnel event with volume (50/wk ideal, 20/wk minimum); wrong optimization event = most common audit quick-win.
β‘ When Stuck
- No clear winner + low CTR β go back one level, retest awareness or motivation.
- No winner but decent CTR, no conversions β move to lander testing early; it's a page/traffic problem.
- Signal too noisy β double spend to 2,000+ impressions/test before deciding.
- One ad hogs spend, one starves β force equal spend via separate campaigns, then compare.
- New offer, don't know what works β Format test (Reel/Static/Founder/Carousel, equal budget) or Marksman (3 different ANGLES, equal budget).