Assignment #11 · Paid · October 26, 2026 · 4 min
Your ads are talking to your customers
At a hand-dyed yarn brand, Meta could match only 65 to 76% of the customer list, so a third of existing buyers saw acquisition ads. In one month those ads were credited with 60% of Meta's revenue on 23% of its spend.
The question
“Our acquisition campaign excludes existing customers. Why are repeat buyers still showing up in its results?”
The assignment
Upload your full customer list to the ad platform and read the match rate. Then count last month's first-time customers from the store's own first-order dates and divide ad spend by that number, next to the platform's cost per new customer.
23% of spend, 60% of credited revenue
Meta ads shown to people who already buy, hand-dyed yarn brand, September 2026
A hand-dyed yarn brand, the small-batch studio from the acquisition case, lives on its regulars. They brought in 79% of revenue (share of store revenue) in the six months to July, and they reorder every month. New customers were getting harder to find, so the brand was spending on Meta to find them, with the existing customer list excluded from the acquisition campaign. Standard practice. It was not doing what everyone thought.
When I uploaded the purchaser list, Meta could match 65 to 76% of it (share of profiles matched, across uploads). The rest, about a third of the brand's existing customers, could not be excluded, because the platform did not know who they were. They saw the acquisition ads like anyone else, and some of them bought, because they were going to buy anyway.
What the match rate does to the numbers
In September, ads shown to people who already buy, the audiences built on the matched customers, were credited with about 60% of Meta-attributed revenue on 23% of the spend. Those are the customers the platform could see. The third it could not see bought through the acquisition campaign and were counted as new. So the campaign's cost per new customer carried two errors in the same direction: some of its "new" customers were regulars, and the revenue those regulars brought made the campaign look efficient.
By Meta's own count, the most it could claim of August's first-time customers was about 40% (share of first-time customers, matched against the store). The rest arrived through search, the list, word of mouth, or nothing anyone could see. A platform that can only see 40% of the outcome it is paid for, and cannot exclude a third of the people it is paid not to reach, is not a number to plan on.
The number I judged offers on instead
The store's orders. GA4 at this brand was missing 26% of revenue (share of store revenue, audit), so I read paid from the store too: first-order dates by month, next to spend. That gives one number that cannot be gamed by a match rate: cost per first purchase, spend divided by the people whose first-ever order landed in the month.
Every acquisition offer was judged on it. A free pattern looked cheapest on cost per lead, until we priced in that most patterns pay the designer about half the list price per copy. The brand's birthday gift had been running as an ad to new people, and only 6% of its 740 redemptions over 13 months were first-ever orders (count), with baskets 38% smaller than the store average because the gift had no minimum. On cost per lead both looked fine. On cost per first purchase one was a giveaway to regulars and the other paid the designer for every lead.
The offer that won was one free DK mini, in a colorway the person can reorder, because people choose yarn by feel and the first purchase is the sample in their hands. The brand runs its own ads and raised spend over the same months, so the rise in first-time customers is shared work, and I say so on the case page.
What this changes in the account
- Exclusions are partial, so treat them that way. The matched share is the ceiling. Rebuild and re-upload the customer list on a schedule, because the matched share decays as emails change.
- Read acquisition from the store. First-order dates by month, next to spend. The platform's cost per new customer is a draft.
- Price the offer on cost per first purchase, not cost per lead, because a lead who was already a customer costs you the offer and brings nothing.
- Put a minimum on anything free. The birthday gift with no minimum cut the basket by 38%. The same gift aimed at lapsed customers, with a minimum, is a winback.
Do this Monday
- Export your full customer list from the store, every email that has ever ordered, and upload it as a custom audience. Write down the match rate.
- Subtract. The unmatched share is the share of your customers your acquisition ads can still reach.
- Count last month's first-time customers from the store's first-order dates. Not the platform's, the store's.
- Divide last month's spend by that count. Put it next to the platform's cost per new customer. The gap is how much the match rate flattered it.
- Price every acquisition offer on the same number, cost per first purchase, and move anything that mostly reaches regulars to a lapsed-customer audience with a minimum spend.
In one line: the platform can only exclude the customers it can match, so read cost per new customer from the store's first-order dates, and price offers on what a first purchase costs.
Have a brand in mind?Ask Alen about your brand →
Yewgo. Every Monday.
One assignment a week, in your inbox before Monday.
More from the Library
- What Black Friday taught you · 4 min
- The reorder gap · 3 min
- Pause is a second exit · 4 min