Unpopular opinion: your best BFCM ROAS is probably your least accurate one.

During BFCM, lots of returning customers buy because they already know you and because you’re also hitting them with email/SMS a ton. And if any of those people saw or clicked a Meta ad recently, Meta may claim credit for the purchase, even if they were going to buy anyway.

BFCM is approaching which leaves us about 4 weeks so here’s how I’d use them.

1. Clean up your purchase signal, starting with rebills

Subscription renewals are basically automated, so they shouldn't count as ad conversions. Right now, most setups just push every Shopify order to Meta as a "Purchase." If that customer happens to have seen an ad recently, Meta grabs the credit, which messes up your ROAS and tricks the algorithm into thinking it should target people who are already subscribed. During BFCM, when CPMs are at their highest, existing subscribers are the last place you want that budget going.

Except for the first subscription, you should still send that first subscription purchase to Meta.

If you're on Aimerce, system-generated renewals are already excluded from your Purchase event by default. If you’re not on Aimerce, check whether your tracking tool can block recurring orders.

If you use a custom-built subscription app, let us know so we can confirm its renewal orders are recognized.

While you're there, if you process exchanges as $0 orders, turn on "Skip $0 Purchase (exchange) Events" too. Otherwise every exchange counts as a purchase.

2. Let Shopify decide who’s new, not Meta

My rule is simple. If they’re in your Shopify customer list, they’re returning. If they’re not, they’re new.

If you turn on Aimerce's "Enable New/Returning Customer Purchase" setting, Aimerce checks every purchase against your Shopify customer list and tags it as a new or returning customer purchase.

The setup guide for these columns is linked right under the toggle in your Aimerce settings.

The end goal is to see new and returning customer purchases as separate columns in Ads Manager (NC purchases, NC ROAS, and cost per NC purchase). Then you can tell whether a campaign is actually prospecting or just retargeting.

3. Pull your baseline

Once rebills are out and the NC/RC setting is on, look at your last 30 days. If you only just turned on the NC/RC setting, give it a week or two of clean data first.

In Ads Manager, open Columns → Compare attribution settings and turn on 7-day click, 1-day engage-through, and 1-day view. Then add your NC/RC purchase columns next to them.

If these numbers look different from what you're used to, that's expected. Since March 2026, Meta only counts link clicks as "click." Likes, shares, saves, and short video views moved to engage-through, which has a 1-day window. Now check where your view and engage-through credit is actually going. If most of those sales are returning customers, Meta is basically taking credit for the work your email and SMS are already doing.

4. Lock your structure by mid-November, then leave it alone

You will spend on returning customers during BFCM, and that’s fine. Just do it on purpose in its own ad set with its own budget. Email and SMS reach these people for free.

On prospecting, use Meta's new customer acquisition setting, or exclude your existing customer audience. If you use the setting, it only works as well as the Existing customers definition in your Meta audience settings, so check what's in it. Add a customer list upload of your Shopify customers, then use your NC/RC columns to check that prospecting ad sets are really bringing in new customers.

If your baseline shows a ton of view-through or engage-through sales from existing customers, try switching your prospecting ad sets to 7-day click only. The standard setting is fine for most brands. But you'll see a lot of view-based credit if you have:

  • A big organic channel (TikTok, IG Reels)

  • Lots of manually drafted orders

  • Lots of organic returning customers, or a big email and SMS list

In those cases, Meta is probably taking credit for sales you would have gotten anyway. Going click-only forces the algorithm to find people who show intent by clicking, instead of piggybacking on your other marketing.

5. Test incremental attribution before you lock

If you're looking for an alternative to the click-only setup, try playing around with Meta's incremental attribution. Instead of just grabbing credit for every sale in a set window, it uses predictive modeling to focus on conversions your ads actually drove. It's a great move if you've got high AOV or lots of repeat buyers who take a while to decide, but you're probably better off sticking to the standard model if you're selling cheaper impulse buys or don't have much conversion volume.

Just know that you can't switch a campaign's attribution model after it goes live, and you can't use bid controls with it. If you want to see the numbers first without changing delivery, go to Columns → Compare attribution settings and add Incremental Attribution as a column.

6. Watch new customers

The number you’ll wanna check every morning is new customer purchases by channel. Aimerce’s NC/RC chart shows whether Meta or Google is driving new purchases each day, based on your attribution model. 7-day last click is a good default.

If your sales double but you’re seeing way fewer new customers than you did in October, it means your ads are just tagging along on the traffic your emails are already bringing in. If that happens, shift your budget toward prospecting in small steady tweaks instead of retargeting.

This playbook is part of our BFCM Klaviyo & Meta Academy, a free series for DTC brands running through mid-December. New sessions drop every week.

✌️Here to help you win,

Yiqi

Reply

Avatar

or to participate