
Quick Answer: Not every Shopify order should reach Meta as a Purchase event. Subscription renewals, $0 exchange orders, test orders, staff-created draft orders, wholesale and B2B orders, replacement and warranty reshipments, and marketplace orders routed through Shopify all look like purchases to a tracking tool, but none of them are sales your ads drove. When they're sent anyway, reported ROAS inflates, value-based bidding chases the wrong customers, and new-customer numbers get muddied. The fix is to filter these orders at the source, before they're sent, because once an event reaches Meta it becomes part of what the algorithm learns from.
Key Takeaways
- Meta's Purchase event should mean one thing: a customer bought something, and your ads may have influenced it. Anything else is noise the algorithm will learn from.
- Seven order types cause most of the problem: renewals, $0 exchanges, test orders, staff-created draft orders, wholesale and B2B orders, replacements, and marketplace orders that flow into Shopify.
- Some of these are worth sending somewhere else. Phone orders from ad-driven customers can go to Meta as offline events, and renewals can go as a separate event for lifetime value.
- Filter at the source. Meta doesn't give you a way to delete events after they arrive, so cleaning up in Ads Manager only changes what you see, not what the algorithm learned.
- A quick check: compare Meta's reported purchases with your Shopify Online Store orders, then look at how many orders came from other channels, carry exchange or subscription tags, or totaled $0.
Most tracking problems are about missing data. This one is the opposite. Your Meta Purchase count can be too high because the tracking is working perfectly, sending every order Shopify creates, including plenty that have nothing to do with ads.
I see this constantly in Shopify accounts that grew past a simple setup. A brand adds subscriptions, then an exchange app, then a wholesale channel, then starts selling on a marketplace that feeds orders back into Shopify. Each one is a reasonable business decision. Together, they quietly turn the Purchase event into a count of every order the store touches.
The cost isn't just a ROAS number that looks better than it is. Meta optimizes toward the people who trigger your Purchase event. If a chunk of those "purchases" are wholesale buyers, staff, or customers swapping a size, you're teaching the algorithm to find more of the wrong people.
Which Shopify orders shouldn't count as a Meta purchase?
1. Subscription renewals. A charge in month seven is a decision the customer made when they first subscribed, not something this week's ads earned. Sending renewals as purchases inflates ROAS and can pull optimization toward existing customers. If you want renewal data in Meta for lifetime value, send it as a separate event.
2. $0 exchange orders. Many exchange apps create a new $0 order when a customer swaps a size or color. To a tracking tool, that's a purchase with no revenue, which drags down average order value and adds a conversion that never happened.
3. Test orders. Every team runs test checkouts when launching a product, changing a theme, or debugging tracking. Shopify developers have reported test checkouts with draft orders firing the same checkout_completed event as real orders, which means they can show up in Meta as conversions.
4. Staff-created draft orders. When your team builds an order in Shopify admin for a phone sale, a VIP, or a customer service fix, merchants in Shopify's community forums have reported Meta counting those manual orders as conversions. Some of these are real sales, but they didn't happen on your website, and they shouldn't look like they did.
5. Wholesale and B2B orders. A single retailer's order can be worth more than a day of DTC sales. Counting it as a Purchase skews value-based bidding and makes campaign ROAS meaningless for that period.
6. Replacements and warranty reshipments. Orders created to replace a damaged item or honor a warranty claim are usually free or fully discounted. They're customer service, not acquisition.
7. Marketplace orders routed through Shopify. If you pull orders from another sales channel into Shopify for fulfillment, they can trigger your tracking like any other order. Merchants have asked on Meta's own developer forum how to stop exactly this. Those buyers never saw your ads, and you don't want Meta looking for more people like them.
Orders to keep out of Meta's Purchase event
| Order type | Why it distorts Meta | Send it anywhere? |
|---|---|---|
| Subscription renewals | Credits ads for a charge they didn't drive; inflates ROAS | Optionally, as a separate renewal event |
| $0 exchange orders | Adds conversions with no revenue; lowers average order value | No |
| Test orders | Fake conversions, often from your own team's devices | No |
| Staff-created draft orders | Looks like a website sale when it wasn't one | Phone sales from ad-driven customers can go as offline events |
| Wholesale and B2B orders | Huge order values skew value-based bidding | No |
| Replacements and warranty reshipments | Customer service orders counted as acquisition | No |
| Marketplace orders routed through Shopify | Teaches Meta to find buyers who never saw your ads | No |
Why filtering in Ads Manager doesn't fix it
It's tempting to clean this up after the fact, with a custom conversion that excludes certain values, or by mentally subtracting wholesale from your reports. That changes what you see. It doesn't change what Meta learned.
Once a Purchase event reaches Meta, it's part of the data the algorithm uses to decide who sees your ads, and Meta doesn't give advertisers a way to delete events after they arrive. The only fix that actually changes optimization is stopping the wrong orders before they're sent. That usually means filtering by order tag, sales channel, or order total in whatever sends your events to Meta.
The same applies to deduplication. An order that's counted twice and an order that shouldn't be counted at all cause the same damage: Meta learns from purchases that don't reflect real ad-driven demand.
How to check what you're sending
- Compare totals. Pull last month's purchases from Meta Events Manager and compare them with orders from your Shopify Online Store channel only. If Meta's number is meaningfully higher, something outside the website is getting through.
- Break Shopify orders down by channel. Filter orders by sales channel and see how many came from draft orders, POS, wholesale, or connected marketplaces.
- Filter for $0 orders. Sort orders by total and look at how many are $0 or fully discounted. Exchanges and replacements usually show up here.
- Check tags. Subscription apps and exchange apps usually tag their orders. A quick tag filter tells you how much volume they create.
- Ask your team about testing. Find out how often test orders are placed, from which devices, and whether they use a real payment method or a test gateway. Using one dedicated email address for every test order makes them easy to exclude later.
- Decide the rules, then write them down. For each order type, decide whether it's excluded, sent as a separate event, or sent as an offline event, so the next person to touch your tracking doesn't undo it.
How Aimerce handles this
Two of these are handled for you. Subscription renewals are excluded from your Meta Purchase event automatically using Shopify order tags, with no setup, while the first subscription order still goes to Meta. And if you process exchanges as $0 orders, the "Skip $0 Purchase (exchange) Events" setting keeps them out of Meta's purchase count.
Everything else on this list is sent by default. Aimerce sends a Purchase for every order Shopify reports, including draft orders, POS sales, and orders from other sales channels like TikTok Shop. If you tell us which ones to keep out, our team can exclude them for your store by order tag, sales channel, or customer email. For wholesale and B2B, that works best when those orders are tagged consistently.
Because Aimerce also separates new and returning customer purchases, it's worth cleaning up these orders first. A wholesale buyer or an exchange counted as a returning-customer purchase distorts that view too. Our guide to tracking new vs. returning customer ROAS in Meta Ads Manager covers setting that up.
Common mistakes to avoid
- Assuming more purchases is good news. A Purchase count that's higher than your website orders is a warning sign, not a win.
- Fixing it only in reports. Custom conversions and manual adjustments change what you see, not what Meta optimizes on.
- Treating all draft orders the same. A test order should be dropped. A phone sale from an ad-driven customer might deserve to be sent as an offline event.
- Forgetting new apps. Every exchange, subscription, or marketplace app you add can create a new kind of order. Re-check your rules whenever you install one.
- Testing on your live pixel without a plan. Use a test gateway, or make sure test orders are tagged so they can be excluded.
FAQ
Should subscription renewals be sent to Meta as purchases? Usually not as your main Purchase event. Automatic renewals aren't driven by ads, so counting them inflates ROAS and steers optimization toward existing customers. If you want renewal data in Meta for lifetime value, send it as a separate event.
Why are draft orders showing up as conversions in Meta? Draft orders created in Shopify admin, including those used for test checkouts, can trigger the same purchase events as real website orders. Merchants have reported Meta counting them as conversions. Filter them out before events are sent, by tag, sales channel, or order source.
Do $0 exchange orders affect Meta ads? Yes. A $0 exchange order sent as a Purchase adds a conversion with no revenue, which lowers average order value and gives Meta a false signal about who is buying.
Can I remove wrong purchase events from Meta after they're sent? Not in a way that changes what the algorithm learned. You can filter what you see in reports, but the fix that affects optimization is stopping the wrong orders before they're sent.
Should wholesale orders be sent to Meta? Generally no. Wholesale and B2B orders are large and not driven by your ads, so including them skews value-based bidding and makes campaign ROAS unreliable.
What's the fastest way to check if my Meta purchases are inflated? Compare last month's purchases in Meta Events Manager with orders from your Shopify Online Store channel only. A gap in Meta's favor usually means orders from other channels, exchanges, or tests are being sent.
Sources
[1] Shopify Community, "Tracking draft orders in a custom web pixel,"
[2] Shopify Community, "How to Exclude Specific Product Data from Meta Pixel Tracking?,"
[3] Meta for Developers Community, "How do I exclude specific orders from event tracking in Meta?,"
[4] Aimerce, "How To Track New Vs. Return Customers' ROAS on Meta Ads Manager,"
[5] Aimerce, "How to Fix Event ID Deduplication Errors in Meta Events Manager,"
Related reading

Try Aimerce Pixel Risk-Free
for 30 Days
Most teams see results within 2 weeks.
Money-back guarantee.
It pays for itself, or you don't pay anything.
30-Day Aimerce Pixel Free Trial