Kamran Arshad
Field Notes  /  Meta Pixel

Your Meta pixel fires. Your purchases still don’t show up.

If your Meta pixel loads but purchases never appear, check in this order: two pixels installed at once, the pixel missing from the real confirmation page, a purchase event firing without value and currency, an off-site payment redirect breaking the session, and deduplication against a Conversions API feed.

The first one is the most common and the hardest to spot, because nothing looks broken.

“The pixel is firing” and “my purchases are tracked” are two different claims, and the gap between them is where most Shopify ad budgets leak. Pixel Helper turning green tells you a pixel exists on the page. It tells you nothing about whether the right event, with the right parameters, reached the right pixel.

Start here: do you have more than one pixel?

This is the first thing I check on any account, and it is the problem I have actually found in the wild rather than read about.

On one store I audited, there were two pixels installed simultaneously — one through the Shopify integration, one pasted directly into the theme. Both were technically working. Both were reporting. Neither was reporting everything, because events were splitting between them depending on how the page loaded.

The reason this survives so long is that it never looks broken. There is no error. Pixel Helper shows green. Events Manager shows purchases — just fewer than you actually had. And unless you sit down and reconcile the pixel against Shopify’s own order count, you have no reason to suspect the number is a fraction.

What I can and cannot claim here

I found this on one client store, and fixing it changed what their reporting showed. I am not going to attach a percentage to the recovery, because the honest answer is that attribution splitting and budget waste are related but not identical, and I would rather give you the mechanism than a number I cannot fully defend.

The mechanism is what matters anyway: two pixels means each one sees part of the truth, and Meta optimises on what it sees.

How to check

In Shopify admin, look in three places, because a pixel can be installed in any of them and nothing warns you about the others:

  • Settings → Customer events — custom pixels live here
  • Facebook & Instagram sales channel — the official integration
  • Online Store → Themes → Edit code — search theme.liquid for fbq or connect.facebook.net

If you find a pixel ID in more than one of those, that is your problem. Pick one method — the sales channel is usually the right one — and remove the others.

The rest of the sequence

02

The pixel is not on the page the customer actually reaches

Everyone installs sitewide and assumes the confirmation page inherits it. It often does not, because that page can be rendered outside your theme. If you run post-purchase upsells, the page a customer sees immediately after paying may not be the page you think of as the thank-you page.

The checkComplete a real order. On whatever page you land on, view source and search for your pixel ID. Do not infer it from the theme.
03

The Purchase event fires without its required parameters

A Purchase event without value and currency is close to useless. Meta cannot optimise toward revenue it was never told about, and value-based bidding has nothing to work with. Missing content_ids breaks catalogue matching and dynamic retargeting on top of that.

The checkIn the Network tab, filter for facebook and read the query string on the purchase request. Confirm value, currency and content_ids are all present and populated.
04

Checkout leaves your domain and the session breaks

When payment hands off to an external gateway and returns the customer to an order-received page, that round trip can break the browser session the pixel depends on. The order completes; the event does not arrive, or arrives stripped of the identifiers needed to attribute it.

The checkDoes your payment flow leave your domain? If so, browser-only tracking is best-effort and you need the Conversions API.
05

Deduplication is removing the event on purpose

If you run the pixel and the Conversions API together — which you should — Meta deduplicates using event_id. When the browser and server disagree about what that ID is, you either double-count everything or silently lose one side. Losing one side looks exactly like “the pixel stopped working.”

The checkFor one order, capture the event_id the browser sent and the one your server sent. They must be identical.
06

Ad blockers and tracking prevention

A meaningful share of traffic blocks browser-based tracking outright. This is not a bug you can fix — it is a permanent tax on client-side measurement, and it is the reason a browser-only setup will always undercount. The fix is not a fix; it is the Conversions API.

The checkCompare Events Manager purchase counts with Shopify’s order count for the same period. A persistent gap that scales with volume is usually this.
07

You are looking too early

Events Manager reporting is not instant. Before concluding an event is missing, wait a few hours and look again. I have watched people rewrite a working checkout because they checked a dashboard ninety seconds after a test order.

The checkUse the Test Events tool for immediate feedback; use Events Manager for volume, tomorrow.

The reconciliation nobody does

Here is the exercise that finds problems no checklist will. Pick one week. Write down three numbers:

SourceWhat it countsExpected relationship
Shopify ordersEvery paid order, full stopThe truth
Meta Events Manager purchasesPurchase events receivedShould approach Shopify, never exceed it
Meta Ads Manager conversionsPurchases Meta attributes to adsA subset — not all sales come from ads

Most people compare the wrong pair and panic. Ads Manager conversions should be lower than Shopify orders, because not every customer came from an ad. The number that should be close to Shopify is Events Manager purchases. If that one is far below your order count, you have a tracking problem rather than an attribution question.

And if Events Manager is higher than Shopify, you have the opposite problem — usually duplicate events, which is a different article.

What I am not telling you

I have not given you an expected discrepancy percentage, because the honest range depends on your traffic mix, your checkout, your customers’ browsers and your country — and every published benchmark I have seen comes from a company selling the fix. Establish your own baseline when things are working, and treat deviation from your number as the signal.

The ranking above reflects a small number of accounts plus what the failure modes logically imply. Treat it as a sensible search order rather than a statistic.

Want someone to just look at it?

Send me your store URL. I will tell you what your pixel is actually doing, and you do not need to give me access to anything to start.

Get a free tracking audit →