I launched a Meta Ads campaign (Facebook and Instagram), and since the launch, I’ve been facing an issue with conversion tracking. Out of 20 conversions recorded, only 11 are showing up in Meta’s Business Manager.
I’ve already performed several checks but am still unable to resolve the issue. Here’s what I’ve done so far:
Traffic source: I don’t have any traffic source other than Meta.
Automatic Advanced Matching: I’ve checked the “Automatic Advanced Matching” box in the Meta Events Manager.
Conversion API: I’ve installed the conversion API, and the connected partner (Shopify) is showing correctly.
Actions on the site: I’ve tested several actions on the site (add to cart, page visits, initiated payment, and purchase with a 100% discount code), and the Meta Pixel Helper has always reported the data correctly.
Facebook code: The Facebook code is properly placed right after the tag in the theme.liquid file as follows:
Domain verification: I’ve verified my domain in Meta’s settings.
Cookie plugin: My cookie plugin doesn’t block data tracking, and I’ve confirmed this directly with the plugin support team.
Conversion delay: Some conversions never appear, even after waiting more than 72 hours (sometimes up to a week). These conversions do not show up as “purchase” events in Meta’s Business Manager.
I’ve considered adding UTM tracking via the Meta Business Manager tool, but that won’t solve the problem of missing conversions, as I need to rely on the Business Manager data to adjust my ads (pause/edit them).
Moreover, I’ve added PayPal Wallet to my store (the dynamic button is on the product page, in the cart, and on the checkout page), but when I use Meta Pixel Helper (Express Checkout with PayPal), the Chrome extension doesn’t seem to track purchases made through PayPal Express Checkout. I don’t think all the missing conversions are coming from PayPal since only a small number of people (around 4) have used PayPal.
My questions:1. Solution for conversion tracking: Do you have a reliable solution to track all conversions, or at least 95% of conversions?
Facebook Pixel + UTM tracking: Does using Facebook Pixel in combination with UTM tracking risk duplicating conversions that are being tracked? (For example, Meta tracks 1 conversion, but it shows 2 “purchase” events in the Business Manager). I’m talking about correctly tracked conversions, not missing ones.
PayPal issue: Is the PayPal button tracked by Facebook, even though Meta Pixel Helper doesn’t detect it? (I’ve never completed a conversion via PayPal as it requires a payment).
95% is not possible all the time consistently if you are using the Facebook and instagram app and shopify partner as many browsers block 3rd party cookies, ad blockers, and the iOS 14 update.
facebook and shopify apps use server URL for conversion API but not the first party domain/subdomain
yet, you can decrease the rate of discrepancies by configuring the meta pixel and conversion API through Google Tag Manager GTM.
GTM allows you to configure the server URL with a first-party domain or subdomain, which is effective for bypassing cookie blockers and ad blockers and storing first-party cookies instead of 3rd-party cookies.
UTM parameters are added to URLs to track campaign performance in tools like Google Analytics. However, if a user clicks a link with UTM parameters and the Facebook Pixel fires on the conversion page, Facebook may attribute the conversion to both the UTM-tagged URL and the Facebook ad click
Facebook’s attribution model is designed to work independently of UTMs.
Facebook Pixel fires the purchase event when someone make the payment and reaches to thank you page. Only when Thank you page URL contains Thank you.
Solutions:
I had a meeting with a Facebook technical officer regarding facebook pixel and conversion API Regarding my client’s website tracking.
I was suggested to keep 2 dataset pixel at a time. One should be configured with Shopify app and partner integration, and another pixel should be configured through Google Tag Manager GTM Both pixel and conversion API.
You keep this one as it is and create another pixel and configure that one via Google Tag Manager GTM.
This usually happens because of ad blockers, cookie restrictions, or tracking mismatches. Since you’ve already enabled Conversion API (CAPI) and Automatic Advanced Matching, I’d recommend double-checking your Event Deduplication settings in Meta Events Manager. Also, test purchases using Meta’s Test Events tool to confirm if Shopify is sending all events properly. If you want a backup tracking method, setting up Google Analytics 4 (GA4) can help cross-check your data
No, UTM parameters won’t create duplicate purchases in Meta’s Ads Manager, they’re mainly for tracking traffic sources in Google Analytics. However, if you’re using both manual event tracking and Meta’s standard setup, you might accidentally trigger duplicate events. To avoid this, make sure event deduplication is enabled in your Pixel settings
Probably not, and that’s a common issue. PayPal Express often bypasses Shopify’s thank-you page, meaning the Pixel never fires the purchase event. The best fix is relying on server-side tracking (CAPI) to capture those PayPal orders. You can also test a PayPal transaction in Meta’s Test Events tool to see if any data is coming through. If PayPal sales are important for your store, using GoogleGoogle Tag Manager (GTM) for event tracking might be a good option too
Should I create a new pixel on Facebook and integrate it via GTM ?
Regarding the purchase event parameters (e.g., items), do I need to manually create the values assigned to them ? GTM does not offer these values when I try to add them (e.g. {{dlv-ecommerce.items}} )
What triggers should I set up, please ?
Do you have a tutorial that would help me create this pixel ?
I’ve tested using Facebook’s Test Events tool by simulating a fake purchase, and the conversion is tracked correctly. I’ve attached a photo. What parameters should I check on my deduplicated event?
Regarding the Shopify app to use for retrieving the data layers, could you specify which one you’re using ?
Also, to configure GTM as you mentioned, could you let me know which Analytics Mania video you followed ? I’m really interested in setting it up the same way.
I am using a custom Data layer for custom pixels, which we developed when checkout addition scrip deprecated.
There is no specific details as these are very technical setup. you have to do some research on multiple channels. I did paid course from analytics mania.
If you are not technically sound it would be better to hire someone expert.
Firstly, make sure your Pixel and Conversion API (CAPI) events are properly deduplicated by using the same event ID. Use Meta’s Event Testing Tool to confirm conversions are tracked in real-time and check the “Event Match Quality” in Meta Events Manager to ensure everything is set up correctly. If browser events fail, CAPI should still capture conversions, so check both. If issues persist, try to re-add the sales channel to refresh the integration.
Next, when it comes to UTM tracking, keep in mind that they won’t cause duplicate conversions, but ensure CAPI and Pixel events have matching event IDs to prevent duplication. Regularly check Event Manager for any double-counted “Purchase” events.
Lastly, for PayPal purchases, tracking issues happen because users leave/abandon your site during checkout. To fix this, use CAPI to send purchase data server-side and ensure PayPal redirects to Shopify’s order confirmation page. If not, manually trigger a Facebook Purchase event or use Google Tag Manager (GTM).
Before changing anything, check how fresh your CAPI data is in Events Manager. A common cause of some conversions going missing is that the browser pixel is fine but the server side has gone stale, so anything blocked by an ad blocker or ITP never gets recovered. Open your Purchase event and look at when the server last received data and what its match quality is. If the server events are hours behind or have dropped off, reconnect the Facebook and Instagram sales channel to refresh the token. Then compare the Events Manager count against Shopify’s own order count for the same window so you know how large the gap actually is.
It sounds like you’ve already done most of the important checks, and the fact that browser events are firing correctly suggests the issue is likely attribution or event matching, not a basic pixel installation problem.
A few things I would focus on:
1. Check for duplicate or conflicting Meta installations
Since you’re using Shopify’s Facebook & Instagram integration and also have Meta code in theme.liquid, verify that the pixel isn’t being initialized twice. This is a very common cause of inconsistent reporting and event deduplication issues.
In most cases, if you’re using the official Shopify integration with Conversions API enabled, you should avoid adding an additional manual pixel script unless there’s a specific reason.
2. Understand the difference between Shopify orders and Meta-attributed purchases
Meta will only report purchases that it can attribute to a Meta ad interaction within the attribution window. If Shopify shows 20 orders and Meta shows 11 purchases, that doesn’t automatically mean 9 events were lost. Some orders may not have been attributed to Meta, even if the customer originally visited from Facebook or Instagram.
3. Verify Event Match Quality in Events Manager
In Meta Events Manager → Purchase Event, check the Event Match Quality score. Low match quality can cause Meta to miss attributed conversions even when events are received.
Make sure customer email, phone, IP address, and browser identifiers are being sent through Conversions API.
4. PayPal Express Checkout
You’re right that Meta Pixel Helper often won’t show the final Purchase event for PayPal Express Checkout, because the customer leaves the store and returns after payment.
What matters is whether the Purchase event fires on the order confirmation page after the customer returns to Shopify. The safest way to test this is:
Complete a real PayPal test order.
Watch Meta Events Manager → Test Events.
Confirm whether a Purchase event appears after the order is completed.
5. UTM Tracking
UTM parameters themselves do not create Meta purchase events and generally will not duplicate conversions. They simply help identify traffic sources in Shopify Analytics, GA4, and other reporting tools.
Duplication usually happens when multiple pixels or multiple Purchase event triggers are installed.
What I would do next
Remove any manual Meta pixel code from theme.liquid if the official Shopify integration is active.
Use Meta Events Manager → Test Events to verify a complete purchase flow.
Check Event Match Quality for the Purchase event.
Test a real PayPal Express Checkout purchase.
Compare Shopify orders vs Meta-attributed purchases for the same attribution window before concluding events are missing.
Based on your description, my strongest suspicion is either duplicate pixel implementations or a misunderstanding between total Shopify orders and Meta-attributed conversions, rather than a complete failure of the Conversions API.
Pixel code pasted into theme.liquid runs on storefront pages only, and it has never run on checkout, because the theme does not render checkout. So it cannot fire a purchase and it cannot double one either. The Facebook and Instagram integration is what fires the purchase, out of Shopify’s pixel layer on checkout_completed, rather than off a URL that has to contain the words thank you. Two installs, two surfaces, and the first post has both.
This split is the first thing we check when a merchant opens a ticket about missing Meta purchases, and we are a paid tracking app, so the free pixel sitting in their theme is a competitor of ours.
Nothing needs setting at PayPal’s end for a Shopify store, because the page a buyer comes back to belongs to Shopify’s checkout rather than to the merchant. The Payments Standard auto return setting linked further up is for a different product, the one where your own site hosts that page. Most of the PayPal question is the same split again. Whether Meta gets the purchase comes down to whether checkout_completed fired, and that shows in Events Manager rather than in Pixel Helper.
Pixel Helper is the other half of it. It reads whatever page it is open on, so a clean storefront reading tells you the theme pixel is alive and tells you nothing about checkout. It is not evidence in either direction about the nine that went missing.
The 20 against 11 is worth settling before you touch the pixel again, because those two numbers were never going to match and the gap is not automatically nine lost events.
Shopify counts orders. Meta counts orders it can tie to an ad interaction inside your attribution window. Different populations. The only way to know which one you have is to reconcile order by order instead of dashboard against dashboard.
About twenty minutes of work. Export the orders for the exact window Meta is reporting on, in Meta’s timezone. Meta reports a conversion on the day of the click or the impression, not the day of the order, so a purchase on the 5th from a click on the 1st sits in a different bucket in each tool. Then open the conversion details on each order and look at what the landing visit carried. Meta clicks land with an fbclid, plus your UTMs if you set them at ad level. Then count how many of the 20 actually landed from Meta.
If 13 landed from Meta and Meta claims 11, your tracking is fine and you are arguing about 2 orders, which is match quality. If 19 landed from Meta and Meta claims 11, you have a real delivery problem and the CAPI work is worth doing. Right now the effort is going in without knowing which of those two you have.
Two things keep the numbers apart permanently no matter what you fix. View-through, where Meta counts a purchase from someone who saw the ad and never clicked, which lands on your store as Direct. And cross-device, click on the phone and buy on the desktop, which Meta stitches together and Shopify cannot.
On PayPal, the advice earlier in the thread about redirecting to the confirmation page does not apply to a Shopify store. Shopify owns the page the buyer comes back to, so there is nothing to configure at PayPal’s end. Either checkout_completed fired or it did not, and Events Manager is where that shows rather than Pixel Helper.
What does the split look like when you count the landing sessions? That number decides whether any of the rest of this is worth doing.