Loading tutorials…
Loading tutorials…
Shopify deprecated the old pixel-in-theme.liquid path. The modern install runs through the Facebook & Instagram by Meta channel app and pulls in CAPI for free. Here's how to do it without double-counting purchases.
Who this is forShopify store owners running (or about to run) Meta Ads who want the pixel installed correctly without paying an agency to do a 30-minute task. If your store is on Shopify 2.0 with checkout extensibility enabled, this is the cleanest path on the platform.
What you'll need
Step 1
Before installing the channel app, search your theme files for hardcoded fbq() snippets left behind by previous agencies or tutorials. Duplicate firing is the #1 Shopify pixel problem.
In Shopify admin: Online Store → Themes → Actions (next to your live theme) → Edit code.
Use the search box in the code editor to look for "fbq(" — this is the function call all manually-installed Meta pixels use.
Common locations to check: theme.liquid (head), checkout.liquid (legacy stores only), and any custom snippets in /snippets/. Also search for "facebook-pixel" and "meta-pixel" as snippet filenames.
If you find pixel code, screenshot it (so you have a record of what was there), then delete it. Save the file.
If you have a Shopify Plus store with custom checkout.liquid, also check Settings → Checkout → Order status page for additional scripts.
Step 2
Install the official Meta channel from the Shopify App Store. This is the only Meta-sanctioned install path for Shopify in 2026.
Shopify admin → Apps → Shopify App Store. Search "Facebook & Instagram by Meta."
Click the result published by Meta Platforms, Inc. (not third-party clones — there are several). Install.
Click "Start setup." You'll be prompted to connect your Meta Business Manager. Choose the business account that owns your ad account, not a personal Facebook account.
Connect the Facebook Page that represents your brand. If you don't have one, create it now (a Page is required even if you only run Instagram ads).
Connect or create a Pixel. If you already have a pixel in Events Manager, choose "Connect existing pixel" and select it — do not create a duplicate.
Accept Meta's data sharing permissions. The "Maximum" data sharing level enables the Conversions API automatically — choose this unless you have a specific reason not to.
Step 3
Open Meta Events Manager → your pixel → Overview. Within 15 minutes of finishing the channel setup, you should see PageView events streaming in.
Go to business.facebook.com/events_manager2 (or Meta Business Suite → All Tools → Events Manager).
Select the pixel you connected. The Overview tab shows the last 7 days of events.
You should see "PageView" events appearing within 15 minutes of someone visiting your store. If you're seeing nothing, open your store in an incognito window and reload — you should now appear in Realtime.
Confirm the "Server" badge appears next to events. That badge means Conversions API is firing, not just the browser pixel.
Install the Meta Pixel Helper Chrome extension and visit your store. It should show one pixel with the correct ID and zero duplicates. If it shows two pixels, return to Step 1 — you still have legacy code somewhere.
Step 4
Create a 100% discount code, complete a purchase in incognito after clicking a Meta ad (or with utm parameters), and verify both browser and server purchase events appear within an hour.
Shopify admin → Discounts → Create discount → percentage code at 100%. Limit to one use, expire it tomorrow.
Open an incognito window. Visit your store. Add a product to cart. Complete checkout using the test discount code.
In Events Manager, switch to the "Test Events" tab. Enter your incognito browser session ID (the extension shows it) or use the Meta Pixel Helper to confirm the event fired.
In Overview, the Purchase event should appear with a count of 1 within 60 minutes.
CRITICAL: confirm the Purchase row shows BOTH a browser event AND a server (CAPI) event for the same order. The dedupe badge should appear — if you see one without the other, your CAPI is misconfigured.
Step 5
The Shopify channel app sets up event ID deduplication automatically. Verify it is working — without dedupe, you double-count every purchase.
In Events Manager → your pixel → Settings → Event deduplication.
You should see "Event deduplication is set up" with a green checkmark. The channel app handles this via the eventID parameter shared between browser pixel and CAPI.
If you see warnings about missing event_id values, the channel app likely failed to fully install — uninstall and reinstall it from Shopify.
In Diagnostics tab (top of Events Manager), check for any open issues. The most common ones for Shopify stores: missing PII fields (fix in next step), or event delays over 7 days (means CAPI is timing out — check your Shopify app permissions).
Step 6
Advanced Matching hashes email/phone/name and sends them to Meta with each event, recovering 20-30% of attribution that iOS 14.5+ strips.
In Events Manager → Settings → Advanced Matching → Automatic Advanced Matching → toggle ON.
Select all available customer information parameters: email, phone, first name, last name, city, state, ZIP, country, gender, date of birth, external ID.
In the Shopify channel app, confirm "Customer Information Sharing" is set to "Maximum." This is what makes Advanced Matching actually receive data — without it, the pixel sees empty fields.
Wait 7 days, then check Events Manager → Diagnostics → Event Match Quality. Aim for a score of 7+/10. Below 5 means you are leaving significant attribution on the table.
Common mistakes
Leaving legacy pixel code in theme.liquid
What goes wrong: Two pixels fire on every page. PageView, ViewContent, AddToCart, and Purchase all get counted twice. ROAS reads 2x reality, Advantage+ optimizes toward inflated returns, and you scale spend on bad data — typically burning 20-40% extra budget over 60 days.
How to avoid: Online Store → Themes → Edit code. Search "fbq(" and "facebook-pixel." Delete every match. Reinstall the channel app cleanly.
Connecting the wrong Business Manager
What goes wrong: If you connect a personal Facebook account or the wrong business asset, your Shopify events flow into a pixel that's not connected to your ad account. Campaigns run with zero conversion signal and Advantage+ has nothing to optimize toward.
How to avoid: Always connect via Business Manager (business.facebook.com). Verify in Business Manager → Data Sources → Pixels that the connected pixel matches the one selected in your Ads Manager campaigns.
Skipping the Maximum data sharing setting
What goes wrong: Choose Standard instead of Maximum during channel setup and CAPI is disabled. You lose 15-25% of post-iOS 14 attribution that CAPI specifically recovers. Iphone-heavy audiences (US e-commerce especially) take the biggest hit.
How to avoid: Settings → Apps → Facebook & Instagram by Meta → Settings → Data sharing → switch to Maximum. Save. Confirm in Events Manager that the Server badge appears next to events.
Not setting up event deduplication for cross-domain checkout
What goes wrong: If you use a third-party checkout (ReCharge, Bold, etc.) or have a subdomain checkout, eventID may not match between browser and server events. Meta counts the same purchase as two separate conversions, inflating reported ROAS by ~50%.
How to avoid: In the channel app settings, enable "Use Shopify customer event IDs." If your checkout is on a subdomain, also add the subdomain in Events Manager → Settings → Domain verification.
Ignoring Event Match Quality scores
What goes wrong: Event Match Quality below 5/10 means Meta cannot reliably tie events back to user profiles. Lookalike audiences built from this data are 30-50% less effective. CPA on prospecting campaigns climbs steadily over 4-8 weeks as match quality degrades.
How to avoid: Enable Automatic Advanced Matching and Customer Information Sharing at Maximum. Verify Shopify checkout requires email (not optional). Re-check EMQ in Diagnostics after 7 days.
Testing only on yourself and assuming it works for everyone
What goes wrong: You test from one IP, one browser. Everything looks fine. Two weeks later you realize iOS 17 users are missing from your reports — your install was never tested on the OS where 60% of your e-commerce traffic actually lives.
How to avoid: Test on iOS Safari, iOS Chrome, Android Chrome, and a desktop browser. Verify Purchase events appear from each. If iOS-specific events go missing, the issue is almost always CAPI not firing — check the Server badge in Events Manager.
Recap
Done — what's next
How to set up the Meta Conversions API (and actually deduplicate events)
Read the next tutorial
Hand it off
Most Shopify owners install the pixel once and never touch it again — then wonder why ROAS slowly drifts over 6 months. A Meta Ads specialist on EverestX will install it correctly, audit for the legacy-code trap, configure CAPI and AEM together, and monitor EMQ ongoing. Typical setup costs $80-160 total at $14-16/hr; ongoing monitoring runs $200-400/mo.
See specialist rates
No — and you actively should NOT. The official Facebook & Instagram by Meta channel app handles install, CAPI, deduplication, and Advanced Matching. Manual theme code creates duplicate firing and is no longer supported by Meta.
The most common cause is a missing or mismatched eventID parameter between browser and server events. Shopify's channel app handles this automatically when you install fresh — but if you migrated from a manual install, the legacy code path may still be sending events without IDs. Strip all manual code, reinstall the channel app, and re-test.
Technically yes, but only if you suppress firing in one of them. Otherwise every event fires twice. The cleanest pattern: channel app for Shopify-native events (PageView, ViewContent, AddToCart, InitiateCheckout, Purchase), GTM for custom events only (newsletter signup, video views, custom interactions).
Wait 7 days minimum before judging Event Match Quality scores. Wait 14 days before judging campaign performance changes. Pixel data needs to accumulate before iOS attribution patterns stabilize, and Advantage+ needs ~50 events per ad set per week to optimize properly.
Migrate to checkout extensibility before installing the modern channel app. Shopify is sunsetting checkout.liquid completely — staying on it means losing CAPI Purchase events, Advanced Matching at checkout, and the new Customer Accounts integration. Migration is a 1-3 week project depending on customizations.
Meta Ads
The browser pixel alone loses 20-30% of conversions on iOS. CAPI sends events from your server to Meta, recovering most of it. Three install paths: Shopify-native, server-side GTM, and direct API. We cover all three.
Meta Ads
Meta's response to iOS 14.5 — Aggregated Event Measurement — caps you at 8 prioritized events per domain and forces you to rank them. Get the order wrong and your most important conversion (Purchase) silently drops out of iOS reporting.
Meta Ads
Your pixel was working last month. Now Events Manager shows zero. Or it shows events but not the ones you need. This is the diagnostic sequence specialists run.
Meta Ads
DIY Meta Ads is the right call until it isn't. This is the honest framework: when the cost of self-managing exceeds the cost of hiring, and how to tell which side you're on right now.