Meta Ads Consultant Plan — One Engine, Every Dollar on Purchases
JITLearnings4Mgrs · June 5, 2026 · Account act_965346905657245 · Prepared from live Meta + Clarity + Stripe data · Panel: Pittman, Denney, Hormozi, Patel (+ Ben Heath cross-check) · Goal: sales + ROAS
1 · Executive summary
Recommendation: run a single purchase-optimized sales campaign at
$20/day containing only the two ads that have ever produced results, let Meta's delivery system allocate across cold and warm people inside it, and govern everything with spend-based kill rules and a ROAS-gated budget ladder.
Three findings force this design:
- Audience walls don't hold. The "warm" campaign spent 94% of its budget ($129.34 of $136.90) on brand-new people — Advantage+ expansion treats audience lists as suggestions. Separate temperature campaigns are paying structural overhead for a separation that doesn't exist.
- The optimization event is the real targeting. The same video optimized for cheap page-views bought 10,702 clicks and zero sales ($99); optimized for purchases it produced 43 leads and sales. Every ad set must optimize for Purchase.
- Signal is scarce — pool it. ~15 attributed purchases per month across the account vs ~50/week needed for learning-phase exit. Splitting that signal across 3-4 campaigns guarantees all of them stay starved.
2 · The live campaign (built, paused, ready to flip)
JIT v2 | SALES ENGINE | Purchase | $20d flip to ACTIVE
Campaign ID 120246748409250465 · open in Ads Manager
| Setting | Value | Why |
| Objective | Sales (OUTCOME_SALES) | Purchases are the goal; everything else is a proxy |
| Optimization | Purchase event · pixel 4235520640036275 | Finding #2 — buyers, not clickers |
| Budget | $20/day, campaign level (CBO) | Same total outlay as today, one pool (Finding #3) |
| Ad set | v2 | SCALE-A · ID 120246748419360465 | One ad set = one learning unit |
| Audience | Broad 25-65, US/CA/AU, Advantage+ on. Excluded: 3 purchaser lists | Cold + warm together (Finding #1); never pitch existing buyers |
| Placements | Automatic | Let delivery find the cheap pockets |
URL tagging (already on both ads): utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{placement}} — flows into Stripe attribution on the dashboard's Attribution tab.
3 · Spend plan — start, ladder, ceiling
| $/day | Expected purchase signal | When |
| $20 (start) | ~8-14 purchases/week — engine readable weekly | At flip — same total as current spend |
| $25 → $32 → $40 | 15-20/week — delivery stabilizes | +25% every 3 days, only while trailing-7d ROAS ≥ 2x |
| $50 | — | Account cap; revisit monthly |
| $85-130 | ~50/week — true learning-phase exit | Milestone, not a target; requires ROAS holding at every step |
Hormozi guardrail: never raise budget to cure starvation while economics are negative — a money-losing machine fed faster loses faster. Attributed AOV is ~$29 (OTOs attach ~3x the $9.95 front-end), so: CPA ≤ $29 = breakeven · CPA ≤ $15 = scale-worthy · CPA ≥ $29 for a full week = drop budget one rung, ship fresh creative.
Patel small-sample rule: judge on trailing 7 days minimum, never a single day. 14-day windows on this account swing from 0.5x to 2.4x on 4-6 purchases — checkpoints exist to prevent both panic-kills and euphoria-scaling.
4 · Kill / keep / iterate rules (standing policy)
| Trigger | Action | Source |
| Ad spends $15, 0 purchases, link CTR <1% | Pause | Denney — hook failed the entrance filter |
| Ad spends $30 (≈1x AOV), 0 purchases | Pause regardless of CTR | Hormozi — it ate a customer and returned nothing |
| Ad gets near-zero delivery (<$1/week) | Leave it running | Ben Heath amendment — zombies cost nothing, act as free creative options and possible hidden-funnel assists. (Supersedes the earlier "prune clutter" rule.) |
| Winner frequency >3.0 or ROAS halves with no changes | Ship a NEW iteration ad; never edit the winner | Denney — edits reset learning; fatigue shows in ROAS before frequency. Current frequencies: 1.49 / 1.30 lifetime — no fatigue anywhere yet |
| Anything pauses | Pause, never delete | Version control — paused ads keep their post, engagement, and history |
5 · How new creative enters (4-6 ads/month)
- One new ad at a time into SCALE-A, launched paused → activated at the Friday review. Meta auditions it automatically against the incumbents.
- Must be genuinely different — different talent, setting, or format. Color-grade tweaks and copy swaps look identical to Meta's classifier and never get a real audition.
- Kill rules from §4 decide its fate. A purchase at ≤$30 = it stays; the portfolio grows.
- Batch testing (3+ new angles at once): reactivate the shelved COLD-TEST campaign as a $5-10/day lab instead of flooding the engine.
6 · Shelved options — built, paused, with reactivation triggers
7 · Measurement & cadence
- Daily (10 seconds): dashboard Overview — spend + purchases ticking.
- Friday review (10 min): per-ad spend / purchases / link CTR / frequency vs §4 rules → pause or graduate; check the New/Engaged/Existing breakdown (Campaign Analysis view) to see whether warm people are buying inside the engine; cross-check Meta-attributed purchases against the dashboard Attribution tab (Stripe is the truth when they disagree).
- Budget ladder decisions: only at Friday reviews, only on trailing-7d ROAS, max +25% per step.
- Monthly: creative audit — which angles win (not just which ads); frequency trend on winners.
8 · Flip checklist (2 minutes)
- Ads Manager → activate JIT v2 | SALES ENGINE (campaign, then ad set, then both ads).
- Pause the 3 v1 campaigns: "Cold v3 SALES", "Cold_Trial_Winners SALES", "Warm Retarget | Playbook $9.95".
- Confirm: exactly 1 campaign ACTIVE, $20/day, 2 ads delivering. Everything else paused.
First checkpoint:
Friday June 12 — delivery started, no rejections, CPM and first purchases. First ladder decision possible
June 19.
Appendix · Entity registry
| Entity | ID | Status at handoff |
| Campaign · JIT v2 | SALES ENGINE | Purchase | $20d | 120246748409250465 | PAUSED — flip to active |
| Ad set · v2 | SCALE-A | 120246748419360465 | PAUSED — flip |
| Ad · v2_SCALE_POVTrust | 120246748434430465 | PAUSED — flip |
| Ad · v2_SCALE_TrialWinner_Top1pct | 120246748437490465 | PAUSED — flip |
| Campaign · [SHELVED] COLD-TEST (2 ad sets, 2 ads + Wiebe candidate) | 120246746951590465 | PAUSED — stays |
| Campaign · [SHELVED] WARM Purchase (1 ad set, 1 ad) | 120246747251990465 | PAUSED — stays |
| v1 history · Cold v3 / Trial_Winners / Warm Retarget + 6 older | — | ACTIVE until flip → then PAUSED forever (rollback) |
Full analysis trail: JIT_META_RESTRUCTURE_PLAN_2026-06-05.html · Change log EV-2026-06-05-01/-02 · Dashboard:
jit-dashboard.pages.dev (Paid Ads + Attribution tabs)