Kill, scale and test calls for 2026-10-14
Fernhill Skin Co. (fictional) · data through 2026-10-14 · currency USD
Goals: Grow new customers into the holiday season while keeping 7-day ROAS at 2.0 or better.
Recommendations only. This tool reads exported reports and cannot change anything in your ad account. A person applies each step in Meta Ads Manager.
Judged on 2026-10-08 to 2026-10-14 (7 days), on ROAS: target ROAS 2.00x, target CPA $32.00 (from average_order_value / target_roas), break-even ROAS 1.47x. Rules are in sample-input/media-buyer.ini; each call names the one it used. Budgets live on the ad set (business.meta_budget_level).
2 kill, 1 scale, 2 test; 7 held by the learning guard. The kill calls cover $487.42 a week of spend above what your target allows.
Ranked by weekly impact
| # | Action | Where | Key metric | Impact / week |
|---|---|---|---|---|
| R1 | TEST | PROS | Broad | Purchases > Broad 25-54 US · Audience Network · Native, banner and interstitial + Facebook · Right column + Messenger · Inbox | ROAS 0.71x on $1,774.50 | $456.74 |
| R2 | SCALE | PROS | Broad | Purchases > Broad 25-54 US | ROAS 3.00x on $4,423.68 | $442.37 |
| R3 | KILL | PROS | Broad | Purchases > Interest - Clean beauty | ROAS 1.12x on $744.65 | $326.07 |
| R4 | KILL | PROS | Broad | Purchases > Broad 25-54 US > Static - 20% off first order | ROAS 0.35x on $195.72 | $161.35 |
| R5 | TEST | PROS | Broad | Purchases > Broad 25-54 US > Video - Texture close-up 15s | CTR 1.04%, freq 1.86, hook 25.77% | $116.19 |
R1 · TEST · ad set: PROS | Broad | Purchases > Broad 25-54 US · Audience Network · Native, banner and interstitial + Facebook · Right column + Messenger · Inbox
Do this: In Meta Ads Manager, duplicate ad set “Broad 25-54 US” (campaign “PROS | Broad | Purchases”). In the duplicate only, open Placements, switch to Manual placements and untick Audience Network · Native, banner and interstitial and Facebook · Right column and Messenger · Inbox. Keep the original running unchanged so its learning is not reset. Give the duplicate a budget of about $126.39 a day and compare the two once the duplicate has spent $50.00; keep the one with the better ROAS.
Why: placements Audience Network · Native, banner and interstitial (P1 in work/breakdowns.json: $1,252.59 at ROAS 0.62x, $722.73 below break-even); Facebook · Right column (P3 in work/breakdowns.json: $313.15 at ROAS 0.99x, $102.41 below break-even); Messenger · Inbox (P4 in work/breakdowns.json: $208.76 at ROAS 0.85x, $88.34 below break-even), 2026-10-01 to 2026-10-14. Rule placement_below_break_even.
Numbers, 2026-10-01 to 2026-10-14: spend $1,774.50, conversions 20.0, ROAS 0.71x, CPA $88.72, CTR 1.51%, CPM $6.89.
Impact: $456.74 a week (spend below break-even in those placements, per 7 days), an estimate.
Placement data is campaign-wide in this export; the duplicate goes on the biggest ad set that is out of learning.
The duplicate starts in learning. About $126.39 a day is 20% (rules.scale_step_pct) of the original's daily spend, so the test stays small.
Source: work/recommendations.json R1; rows S73, S77, S81; export meta-placement-2026-10-01_to_2026-10-14.csv lines 7, 9, 10.
R2 · SCALE · ad set: PROS | Broad | Purchases > Broad 25-54 US
Do this: In Meta Ads Manager, open ad set “Broad 25-54 US” (campaign “PROS | Broad | Purchases”) and edit its daily budget. Average daily spend was $631.95. If the daily budget sits near that, raise it by up to 20% to about $758.34, in one edit. Then leave the budget alone for 3 days (rules.scale_wait_days). The next step, only if ROAS is still at or better than 2.00x by then, is up to another 20% to about $910.01. If the budget is already well above what it spends, delivery is not budget-limited and a raise will not change much; leave it.
Why: ROAS 3.00x clears the scale line 2.40x (target 2.00x plus 20%) on 211 conversions. Rule scale_roas_above_target_pct = 20.
Numbers, 2026-10-08 to 2026-10-14: spend $4,423.68, conversions 211.0, ROAS 3.00x, CPA $20.97, CTR 1.27%, CPM $13.25, frequency 1.17, hook rate 26.52%, hold rate 13.60%.
Impact: $442.37 a week (extra weekly spend x (ROAS / target ROAS - 1), per 7 days), an estimate.
One step of at most 20% (rules.scale_step_pct). Larger jumps tend to push Meta back into learning; efficiency usually drops as spend rises.
“Video - Texture close-up 15s” inside it shows creative fatigue (F1). More budget pushes its frequency up faster; start the refresh test first.
Source: work/recommendations.json R2; rows N652-N656, N667-N671, N682-N686, N697-N701, N712-N716, N727-N731, N743-N747; export meta-ads-2026-09-15_to_2026-10-14.csv lines 313, 314, 315, 316, 317, 328, 329, 330, 331, 332 and 25 more.
R3 · KILL · ad set: PROS | Broad | Purchases > Interest - Clean beauty
Do this: In Meta Ads Manager, open the Ad sets tab, find ad set “Interest - Clean beauty” (campaign “PROS | Broad | Purchases”) and switch it off.
Why: ROAS 1.12x is at or under the kill line 1.30x (target 2.00x minus 35%). Rule kill_roas_below_target_pct = 35.
Numbers, 2026-10-08 to 2026-10-14: spend $744.65, conversions 13.0, ROAS 1.12x, CPA $57.28, CTR 1.01%, CPM $15.54, frequency 1.19, hook rate 25.88%, hold rate 11.12%.
Impact: $326.07 a week (spend - purchase value / target ROAS, per 7 days), an estimate.
This ad set is in learning (13 conversions in 2026-10-08 to 2026-10-14, under rules.learning_min_conversions = 50). Switching it off ends it; it does not edit anything still learning.
Covers 2 ads inside it; they get no separate call.
Source: work/recommendations.json R3; rows N657-N658, N672-N673, N687-N688, N702-N703, N717-N718, N732-N733, N748-N749; export meta-ads-2026-09-15_to_2026-10-14.csv lines 318, 319, 333, 334, 348, 349, 363, 364, 378, 379 and 4 more.
R4 · KILL · ad: PROS | Broad | Purchases > Broad 25-54 US > Static - 20% off first order
Do this: In Meta Ads Manager, open the Ads tab, find ad “Static - 20% off first order” (campaign “PROS | Broad | Purchases”, ad set “Broad 25-54 US”) and switch it off.
Why: ROAS 0.35x is at or under the kill line 1.30x (target 2.00x minus 35%). Rule kill_roas_below_target_pct = 35.
Numbers, 2026-10-08 to 2026-10-14: spend $195.72, conversions 1.0, ROAS 0.35x, CPA $195.72, CTR 0.80%, CPM $12.06, frequency 1.07.
Impact: $161.35 a week (spend - purchase value / target ROAS, per 7 days), an estimate.
Source: work/recommendations.json R4; rows N653, N668, N683, N698, N713, N728, N744; export meta-ads-2026-09-15_to_2026-10-14.csv lines 317, 332, 347, 362, 377, 392, 408.
R5 · TEST · ad: PROS | Broad | Purchases > Broad 25-54 US > Video - Texture close-up 15s
Do this: In Meta Ads Manager, duplicate ad “Video - Texture close-up 15s” in ad set “Broad 25-54 US” (campaign “PROS | Broad | Purchases”) and change one thing: the first three seconds (hook), the main visual or the headline. Keep the original running until the new ad has spent $50.00, then keep the one with the better ROAS.
Why: creative fatigue (F1 in work/fatigue.json): frequency rising, CTR falling, hook rate falling. Frequency 1.38 to 1.86 (+34.8%), CTR 1.43% to 1.04% (-27.3%), hook rate 33.20% to 25.77% (-22.4%), 2026-10-01 to 2026-10-07 against 2026-10-08 to 2026-10-14. Rule fatigue_ctr_drop_pct = 20.
Numbers, 2026-10-08 to 2026-10-14: spend $425.59, conversions 13.0, ROAS 1.81x, CPA $32.74, CTR 1.04%, CPM $14.35, frequency 1.86, hook rate 25.77%, hold rate 16.00%.
Impact: $116.19 a week (weekly spend x CTR drop), an estimate.
Source: work/recommendations.json R5; rows N551, N566, N581, N596, N611, N626, N641, N656 and 6 more ranges; export meta-ads-2026-09-15_to_2026-10-14.csv lines 316, 331, 346, 361, 376, 391, 407.
Held by the learning guard
An ad set with fewer than 50 conversions in the last 7 days (rules.learning_min_conversions) is treated as in learning. These calls would otherwise have been made; nothing here needs doing today.
| # | Would be | Where | Key metric | Impact / week | Why held |
|---|---|---|---|---|---|
| H1 | KILL | TEST | Creative sandbox | Purchases > Broad - creative tests > Static - Dermatologist quote | 0.00x on $157.30 | $157.30 | the ad set is in learning (14 conversions in 2026-10-08 to 2026-10-14, under rules.learning_min_conversions = 50); pausing an ad inside it is a significant edit that restarts learning. Re-check once the ad set has 50 conversions in 7 days, or if the ad set itself is switched off. |
| H2 | KILL | PROS | LAL 2% purchasers | Purchases > LAL 2% purchasers 180d > Video - Unboxing 20s | 0.00x on $142.54 | $142.54 | the ad set is in learning (38 conversions in 2026-10-08 to 2026-10-14, under rules.learning_min_conversions = 50); pausing an ad inside it is a significant edit that restarts learning. Re-check once the ad set has 50 conversions in 7 days, or if the ad set itself is switched off. |
| H3 | TEST | RT | Visitors 30d | Purchases > Site visitors + ATC 30d > Carousel - Reviews | 1.69x on $374.44 | $83.87 | the ad set is in learning (29 conversions in 2026-10-08 to 2026-10-14, under rules.learning_min_conversions = 50); adding or swapping an ad is a significant edit. Brief the replacement now (/briefs) and launch it when the ad set exits learning, or in a new ad set. |
| H4 | TEST | PROS | LAL 2% purchasers | Purchases · Audience Network · Native, banner and interstitial + Facebook · Right column | 0.66x on $284.14 | $78.41 | every delivering ad set in campaign “PROS | LAL 2% purchasers | Purchases” is in learning, so its placement mix has not settled. Re-check when one of them exits learning. |
| H5 | SCALE | PROS | LAL 2% purchasers | Purchases > LAL 2% purchasers 180d | 2.66x on $891.58 | $58.84 | the ad set is in learning (38 conversions in 2026-10-08 to 2026-10-14, under rules.learning_min_conversions = 50); a budget edit restarts learning and the ROAS is not settled yet. Re-check once it has 50 conversions in 7 days. |
| H6 | TEST | RT | Visitors 30d | Purchases · Audience Network · Native, banner and interstitial | 0.68x on $160.75 | $43.19 | every delivering ad set in campaign “RT | Visitors 30d | Purchases” is in learning, so its placement mix has not settled. Re-check when one of them exits learning. |
| H7 | TEST | TEST | Creative sandbox | Purchases · Audience Network · Native, banner and interstitial | 0.60x on $97.17 | $28.91 | every delivering ad set in campaign “TEST | Creative sandbox | Purchases” is in learning, so its placement mix has not settled. Re-check when one of them exits learning. |
Ad sets and learning
| Ad set | Conversions | Spend | Status |
|---|---|---|---|
| PROS | Broad | Purchases > Broad 25-54 US | 211 | $4,423.68 | out of learning |
| PROS | Broad | Purchases > Interest - Clean beauty | 13 | $744.65 | in learning |
| PROS | LAL 2% purchasers | Purchases > LAL 2% purchasers 180d | 38 | $891.58 | in learning |
| PROS | LAL 2% purchasers | Purchases > LAL 5% engagers | 3 | $81.68 | in learning |
| RT | Visitors 30d | Purchases > Site visitors + ATC 30d | 29 | $653.01 | in learning |
| TEST | Creative sandbox | Purchases > Broad - creative tests | 14 | $409.49 | in learning |
Held: judged, no change
| Where | Spend | ROAS | CPA | Reason |
|---|---|---|---|---|
| PROS | Broad | Purchases > Broad 25-54 US > UGC - Morning routine 30s | $2,666.22 | 3.63x | $17.09 | ROAS 3.63x clears the scale line 2.40x (target 2.00x plus 20%) on 156 conversions; budgets are set per ad set, so any scale call is made there |
| RT | Visitors 30d | Purchases > Site visitors + ATC 30d | $653.01 | 2.83x | $22.52 | ROAS 2.83x clears the scale line 2.40x (target 2.00x plus 20%) on 29 conversions; not scaled because the campaign name matches never_scale_name_contains (brand, RT |) |
| PROS | Broad | Purchases > Broad 25-54 US > Founder story 45s | $649.75 | 2.22x | $30.94 | ROAS 2.22x is between the kill line 1.30x and the scale line 2.40x |
| PROS | Broad | Purchases > Broad 25-54 US > Static - Before and after | $486.40 | 2.73x | $24.32 | ROAS 2.73x clears the scale line 2.40x (target 2.00x plus 20%) on 20 conversions; budgets are set per ad set, so any scale call is made there |
| RT | Visitors 30d | Purchases > Site visitors + ATC 30d > Carousel - Reviews | $374.44 | 1.69x | $37.44 | ROAS 1.69x is between the kill line 1.30x and the scale line 2.40x |
| PROS | LAL 2% purchasers | Purchases > LAL 2% purchasers 180d > UGC - Morning routine 30s | $336.03 | 3.42x | $17.69 | ROAS 3.42x clears the scale line 2.40x (target 2.00x plus 20%) on 19 conversions; budgets are set per ad set, so any scale call is made there |
| RT | Visitors 30d | Purchases > Site visitors + ATC 30d > Static - Free shipping | $278.57 | 4.38x | $14.66 | ROAS 4.38x clears the scale line 2.40x (target 2.00x plus 20%) on 19 conversions; budgets are set per ad set, so any scale call is made there |
| TEST | Creative sandbox | Purchases > Broad - creative tests > UGC - Skincare myths 25s | $252.19 | 3.41x | $18.01 | ROAS 3.41x clears the scale line 2.40x (target 2.00x plus 20%) on 14 conversions; budgets are set per ad set, so any scale call is made there |
| PROS | LAL 2% purchasers | Purchases > LAL 2% purchasers 180d > Carousel - Bestsellers | $240.42 | 2.83x | $21.86 | ROAS 2.83x clears the scale line 2.40x (target 2.00x plus 20%) on 11 conversions; budgets are set per ad set, so any scale call is made there |
| PROS | LAL 2% purchasers | Purchases > LAL 2% purchasers 180d > Static - Ingredient list | $172.59 | 3.16x | $21.57 | ROAS 3.16x clears the scale line 2.40x (target 2.00x plus 20%) on 8 conversions; budgets are set per ad set, so any scale call is made there |
Not judged yet
| Where | Spend | Days live | Reason |
|---|---|---|---|
| PROS | LAL 2% purchasers | Purchases > LAL 5% engagers > Static - Gift set | $81.68 | 2 | delivered on 2 day(s); needs 3 |
Mark each call done in the CSV next to this file (done_by, done_on) so the next run can be read against what changed.