CountedOnce
Case study · Aurelle store

The same Meta pixel, added twice: how we found it and proved the fix

Aurelle is a Shopify jewelry store we run. We set it up with the Meta pixel in two places, the most common setup we find on Shopify stores, then used our process to find it, fix it, and prove the fix with real orders.

The setup

One copy of the Meta pixel was pasted into the theme code, the old way. A second copy of the same pixel was added as a custom pixel in Shopify's Customer events, the way many stores add it after Shopify's Thank You page change. Neither copy sent an event ID.

Without event IDs, Meta has no way to tell that two events describe the same visit or the same order, so it counts both. The ad platform then reports more activity than really happened and optimizes on those inflated numbers.

1 · The free check found it

Our scan reads the store the way a visitor's browser receives it. It flagged: “Meta pixel in the theme code and a custom pixel”. Custom pixels run in a sandbox, so their contents can't be read from outside, which is why the next step is a real order.

2 · A real order showed the double count

We placed an order and recorded every request the browser sent to Meta:

PageEvent sent to MetaSent byEvent ID
Product pagePageViewTheme codenone
Product pagePageViewCustom pixelnone
Thank You pagePurchaseCustom pixelnone

The product page view reached Meta twice, from two different sources, with no event ID on any event.

Here the purchase itself was sent once, because only the custom pixel listened for it. On real stores the same setup usually adds a second purchase source too (the Facebook & Instagram app or its Conversions API), and with no event IDs every order is then counted twice.

3 · The fix

4 · A second order proved it

PageEvent sent to MetaSent byEvent ID
Product pagePageViewCustom pixelyes
CheckoutPageViewCustom pixelyes
Thank You pagePurchaseCustom pixelyes (order ID)

One event per page, one purchase per order, each with an ID Meta can use to remove duplicates, including against the server-side Conversions API when it's switched on.

Illustration: one Shopify order, one Purchase event with a matched event ID

What this shows, and what it doesn't

Aurelle is our own store, so there are no client figures here. What it shows is the method we use on every store: find the problem from the outside, prove it with a real order, fix it, and prove the fix the same way. A browser can't see server-side events, so on a live store we also compare with the events Meta itself received.

Is your store sending purchases twice?

The free check takes about 30 seconds and needs no email.

Check my store