---
name: kill-underperforming-ads
description: "Stop ads that miss the agreed goal. Save the result so the next test can learn from it."
category: Dollar a Day Campaigns
stage: Promote
definitive_article: /dad
status: complete
---

# Kill underperforming ads

An ad can spend money without doing the job you gave it. This guide helps you stop weak tests and keep a clear record. Start with the goal, the test dates and the actual cost.

**The path:** Due test → checked rule → exact pause → saved lesson.

**Use this when:** A test reaches its decision date, or an active ad violates an already agreed safety or spending rule.

## Inputs
- Exact account/ad-set/ad IDs, current status, full-window report and target from the test plan.
- The pause/stop authority already granted, any early-stop rule, remaining budget and other workers’ current actions.
- A dated test log with the original creative, audience, changes, output evidence and next owner.

## First-run prompt

> Review these due ads against their agreed targets and stop rules. Name the exact records to pause and why. Apply only the pauses already authorized, re-read the status, and keep all history. Report recommendations separately if action authority or evidence is missing.

## Steps
1. Match each due row to the exact account and object ID. Check whether another worker already paused it or a current plan replaced the old instruction. Do not act from a similar display name alone.
2. Confirm the reporting window, goal, result definition and tracking state. Separate poor measured performance from an absent or broken measurement. Use the original target, not a threshold chosen to make the desired verdict fit.
3. At the planned seven-day review, stop ads that fail the agreed rule. The method often retires about 90% across a portfolio; this is not a requirement to force nine losses from ten or remove a qualifying winner to meet a quota.
4. Act sooner on wrong destinations, unauthorized delivery/spend or other agreed safety conditions. Record the early-stop reason and partial window. A seven-day test is not permission to ignore a harmful error.
5. Pause the exact relevant ad or ad set within authority, preserving historical records. Check the campaign hierarchy so a broader pause does not stop unrelated work. Do not delete the evidence or silently replace the creative mid-test.
6. Read back the saved effective status and timestamp. A reported pause and zero future delivery are separate observations; reports and billing may include activity from before the pause. Escalate a failed state change to the campaign owner without blindly repeating it.
7. Record spend, results, reason and one lesson. Unspent money remains uncommitted unless the existing scope authorizes a specific reallocation. A pause does not itself authorize a new test or larger winner budget.
8. Send qualified winners and unresolved tracking rows to their separate next tasks. End with a clear stop/keep/hold list and an owner for each unresolved row.

## Definition of done (QA checklist)

- [ ] Every pause is tied to an exact ID, rule and current authorization.
- [ ] Full-window verdicts and early protective stops are distinguished.
- [ ] Paused state is read back; failed changes remain open.
- [ ] Historical metrics and creative/audience records are retained.
- [ ] No forced failure quota, deletion or unauthorized budget reallocation is claimed.

## Example(s)

**Fictional teaching example:** Three tests finish their week. A costs $1.40 per useful visit against a $2 target. B costs $3.50. C has broken tracking. The operator is authorized to pause failed or unmeasurable tests at the end date. B and C are paused by ID, then read back. C is labeled unknown outcome, not proven bad content. A’s existing end date still applies. The $7 that might have funded a new B test is not automatically moved to A.

## Handoff and Content Factory context

Send an eligible winner to [scale winners by increasing budget gradually](https://local-service-spotlight.github.io/task-library/?task=scale-winners-by-increasing-budget-gradually#task-scale-winners-by-increasing-budget-gradually). Send measurement gaps to [set up digital plumbing pixels tracking](https://local-service-spotlight.github.io/task-library/?task=set-up-digital-plumbing-pixels-tracking#task-set-up-digital-plumbing-pixels-tracking) and the campaign owner. The content owner gets the specific failed hypothesis for future organic work.

This task is in Promote within the [Content Factory](https://blitzmetrics.com/content-factory/). Produce gathers real source material; Process makes useful assets; Post places and checks them; Promote distributes suitable work within its own scope. Use the proof and checked posts from earlier stages; a Promote task does not automatically redo all four stages. Use the actual next step above; catalog neighbors are not prerequisites.

## When this runs

Run at each test’s agreed due date and whenever an existing stop rule triggers. An automatic pausing rule requires explicit configured scope, permissions, state and a verified trigger; this guide does not create one.

## First-run setup and continuity

Open the supplied task file and its linked source. Verify the project’s real inputs, account, access and output folder before work. This Markdown file is a guide; it does not install an app, connect an account, supply a subscription or create a schedule. Carry out work already authorized; do not ask for the same approval again. Keep any unsupplied destination or new action outside that scope clearly pending.

Save source IDs, versions, decisions, checked outputs and next owner in the project tracker. Before a retry, check the saved state and other workers’ changes. A model name does not guarantee memory or a running timer. Repeated work needs an actual configured trigger and durable state; one-off work can be started by the prompt above.

Keep agent media muted with volume zero before playback. If mute cannot be verified, use captions, metadata or still frames. State the limit: silent visual checks do not prove spoken-word accuracy or audio quality. Do not start sound through the user’s speakers unless explicitly asked.

## Write up the real run

For every actual attempt, [write its meta article](https://blitzmetrics.com/meta-article-prompt/) with this recipe and revision, trigger, steps performed, output evidence, measured result, gaps and next owner. Failed, blocked and partial attempts also get a written record. A draft can satisfy writing; publishing it follows the existing job scope.

Keep one stable execution ID across retries and edits. A separately scoped child task may have its own ID linked to its parent. Writing the parent’s meta record is part of that run, not an endless new chain. The [recipe and meta-article guide](https://localservicespotlight.com/meta-articles/) explains this distinction. Teaching examples are not real executions and must not enter the run count.


<!-- factory-layer:start -->

## Factory chain (do not treat this as isolated)

- **Phase:** Promote
- **Importance:** 5/5 `●●●●●` — frequency 5, revenue 5, gating 4 (runs every factory cycle or weekly; ads/revenue path; gates a phase)
- **Suggested previous station:** `analyze-cost-per-result-and-engagement`
- **Suggested next station:** `scale-winners-by-increasing-budget-gradually`
These stations are generated neighbors, not verified prerequisites or handoffs. Follow the task’s actual Inputs and Handoff sections.
- **Handoff:** Organic metrics CSV (or Ads Manager export), pixel ID, creative filenames, kill/scale log. Next week's ranking starts from this file.

## Model routing (same factory, any engine)

- **This task's lane:** `computer` — Logged-in UI (Meta Ads Manager, Descript, GSC, wp-admin when REST is blocked). Requires a supported browser tool and the right account access.
- **Single-engine path:** Use the capable AI app you already have. Check its required tools and access before starting. Pass the actual result and proof to the next task.
- **Optional multi-engine:** A tested local model may draft; a stronger model may review facts and voice. Use supported tools for approved actions. Pick models from observed quality and cost; a model name does not prove it can run this task.
- **Never** store the working state in one vendor's memory. Files in the Content Library are the bridge.

<!-- factory-layer:end -->
## Definitive article & links

- Maintained method: https://blitzmetrics.com/dollar-a-day/
- Source mapping needs reconciliation: the preserved `definitive_article: /dad` points to the coaching program. The method page above is `/dollar-a-day/`; this record does not certify the coaching page as a task recipe.
- Exact task: [Kill underperforming ads](https://local-service-spotlight.github.io/task-library/?task=kill-underperforming-ads#task-kill-underperforming-ads)
- Writing standard: [Article Guidelines](https://localservicespotlight.com/article-guidelines/)
- [Dollar-a-Day method](https://blitzmetrics.com/dollar-a-day/)
- [Metrics, Analysis, and Action](https://blitzmetrics.com/maa/)
- [Meta significant-edit help](https://www.facebook.com/business/help/316478108955072)

## Review and evidence still needed

The source contributor status is preserved. It is not certification of this draft or proof of account access, completed work or a live outcome. The worked example teaches the method and is explicitly fictional.
- Actual stop thresholds, account access and pause receipts must come from the real campaign.
- Meta’s significant-edit help was login-blocked; the old claim that all edits reset learning is not treated as verified.