← All free resources

The two winner tests

The ad with the prettiest numbers usually isn't my winner. A strange visual can stop almost anyone mid-scroll: cheap clicks, long watch time, a few sales at a lovely cost. Then it gets real money and goes quiet. A low cost per sale on the first few hundred dollars only tells you the ad found the easiest buyers.

So before I call an ad a winner, it has to pass two tests. One: Meta keeps putting money behind it as the budget grows. Two: most of its sales come from people who have never bought from you.

Example used below: a joint supplement brand spending $5,000 a day on Meta, the week after a 20% budget increase. The numbers are made up to show the method.

Claude skill

Get the Claude skill

I turned my testing rules into a Claude skill. Attach your Ads Manager exports and it runs both winner tests, tells you what to fix on the ads that fail, and works out how many new ads your account can test.

To install: in Claude.ai, go to Settings > Capabilities > Skills and upload the zip. In Claude Code, unzip it into ~/.claude/skills/

Winner check · example accountmade-up numbers
  • C03Runner with sore kneesV02

    Winner

    Cost per sale

    $38

    Spend share

    18% → 31%

    Past buyers

    22%

  • C05Grandma back on the floorV01

    Winner

    Cost per sale

    $44

    Spend share

    12% → 19%

    Past buyers

    35%

  • C01Label readV04

    Resells to past buyers

    Cost per sale

    $21

    Spend share

    26% → 27%

    Past buyers

    74%

  • C07Strange visualV01

    Meta won't spend

    Cost per sale

    $19

    Spend share

    9% → 3%

    Past buyers

    41%

  • C02Founder storyV03

    Fails both

    Cost per sale

    $52

    Spend share

    15% → 9%

    Past buyers

    63%

What Claude gives back for the example account. Cost per sale is the week before the budget went up. Spend share is the ad's share of its ad set's spend, week before to week after. Past buyers is the share of its sales from existing customers; the line marks 50%.

The two cheapest ads both fail. Meta kept spending on the label read, but three of every four of its sales came from people who already buy from you. And Meta pulled money off the strange visual as soon as it had more to spend.

  1. Step 01 · Ads Manager, once

    Tell Meta who your existing customers are

    In your ad account's Advertising settings, find Audience segments. Under Existing customers, add your customer list and a website purchasers audience. Meta then splits every result three ways:

    Audience segments
    New audience: people who have not interacted with your products or services
    Engaged audience: people who have interacted with your business but have not bought
    Existing customers: the customer list and purchasers you add here

    Do it before the week you judge, so that week is split. New and engaged audience together are the people who have never bought from you.

  2. Step 02 · Ads Manager

    Pull two reports

    Wait a full week after the budget increase. New spend sells late, so I never judge sooner.

    Report settings
    Ads Manager > Ads tab
    Columns: Ad name, Ad set name, Amount spent, Purchases, Cost per purchase, Impressions, 3-second video plays
    
    Report A: the 7 days before the budget increase. No breakdown.
    Report B: the 7 days after it. Breakdown > By delivery > Audience segments.
    
    Export each one: Reports > Export table data > .csv
  3. Step 03 · Claude

    Run both tests

    Attach both exports to Claude and paste:

    Step 03 prompt
    I'm attaching two Meta Ads Manager exports, both at ad level.
    Report A = the 7 days before my last budget increase.
    Report B = the 7 days after it, broken down by audience segment.
    
    Run two tests on every ad with at least 3 purchases in Report B.
    1. Spend test: the ad's share of its ad set's spend in Report A and in Report B. It passes if the share held or grew.
    2. New buyer test: the share of the ad's Report B purchases that came from "Existing customers". It passes if that share is under 50%.
    
    Give me one table sorted by Report B spend: ad name, cost per purchase in Report A, spend share A -> B, % of purchases from existing customers, verdict.
    Verdicts: WINNER (passes both), RESELLS TO PAST BUYERS (passes the spend test only), META WON'T SPEND (passes the new buyer test only), FAILS BOTH, NOT ENOUGH DATA (fewer than 3 purchases).
    Never judge an ad on cost per purchase alone.
    
    Then list the failed ads with the highest 3-second video plays divided by impressions. Their openings stopped people, so I want to reuse them.

    If you use the skill above, you only attach the two files.

  4. Step 04 · You

    Act on each verdict

    What I do with each verdict
    WINNER                  -> make versions of it: new face, new format, new edit, same reason to buy.
    RESELLS TO PAST BUYERS  -> leave it running, but don't scale on it. It isn't adding buyers.
    META WON'T SPEND        -> keep it on its test budget. Don't build the next batch on it.
    FAILS BOTH              -> turn it off. Keep what stopped people for the next idea.
    NOT ENOUGH DATA         -> one more week before any call.

    The pretty one isn't wasted. Whatever made people stop, the visual or the first line, goes into the next idea I write, on a new reason to buy.

    My winner is the ad that takes the money and keeps finding new buyers.

Done for you

Want me to run this for your brand?

Book a call and I’ll tell you what I’d test first in your account.

Book a call