Before I founded Aimerce, I was an engineer at Meta. I can tell you from direct experience that most server side tracking setups do not fail because of one big bug. They fail because of small mismatches that compound quietly like a duplicate purchase here, a missing click ID there, an express checkout order that never fires an event at all.
The result is the same every time. Conversion volume looks wrong, Meta ROAS becomes unreliable, and the ad algorithm optimizes on a distorted picture of your store.
Server side tracking is the right move. As browsers restrict cookies and ad blockers strip the Meta Pixel from more sessions, sending events from your server is how you keep your measurement resilient. But it is an integration, not a script. Below are the most common mistakes I see in server side tracking setups for Shopify stores, why they hurt your data, and how to avoid each one.
Why server side tracking fails in practice
Server side tracking adds a new layer between your storefront and your destinations: Meta, Google, Klaviyo, your analytics. That layer is powerful because you can standardize, filter, and forward events. It also introduces more moving parts:
- Multiple event sources: the browser pixel and the server
- Multiple identifiers: cookies, click IDs, email, order ID
- Platform specific requirements: payload formats, required parameters, Event Match Quality scoring
- Infrastructure concerns: latency, routing, retries
Every mistake below lives in one of those gaps.
1. Treating server side tracking as set and forget
It’s common for a tracking setup to work fine at first and then slowly fall apart after a theme update or a few changes to your checkout. Since these issues are often silent, you might not realize anything is wrong for weeks all while your ad costs creep up because the data is off.
Don't just set it and forget it. Assign someone to own your measurement strategy rather than leaving it to whoever did the initial install. Set up a monthly audit to make sure key events are firing correctly and that your data is still accurate. Whenever you make a change to your store, always assume it might affect your tracking.
Also, be mindful of your tools like manual setups like Stape + GTM tend to drift as platforms evolve, whereas a managed tool like Aimerce updates automatically with Shopify so you don’t have to worry about it.
2. Skipping the measurement plan
Teams forward everything they can, then realize they cannot answer basic questions. Which event is the source of truth for purchases? Are refunds handled? What counts as a lead versus a checkout start?
Write a one page measurement plan before touching any configuration:
- Events: page view, view item, add to cart, begin checkout, purchase, plus any custom events
- Timing: when each event should fire and when it should not
- Required parameters: value, currency, order ID, items, customer identifiers
- Destinations: which platforms receive which events
- Deduplication: which ID is used to dedupe across the Meta Pixel and the Conversions API
If you don’t decide your tracking plan before you start building, you’ll probably have to redo parts later.
3. Firing the right events at the wrong time
Common issues include purchase events firing on page refreshes, checkout events missing guest users, or "Add to Cart" triggers misfiring during quantity updates. Since Meta uses these patterns to optimize your ads, bad timing leads to messy data and wasted budget.
The fix is pretty straightforward. Base your conversion events on real backend actions, not just page loads. For purchases, make sure you have an order ID and value attached before anything sends. If an event could happen twice in one session because of a refresh or a back button, you need a plan to handle duplicates.
4. Double counting conversions because deduplication is missing
When Meta receives the pixel version and the Conversions API version with a matching event ID, it dedupes them and counts the purchase once.
If you don't set up deduplication between your Meta Pixel and the Conversions API, you'll end up double-counting every purchase. Your ROAS and CPA metrics will basically be made up, and Meta will end up wasting your budget by optimizing for sales that aren't actually happening.
To fix this, both the browser pixel and your server-side events need to use the exact same event ID (like the order ID). Here is the structure you should use:
{
"event_name": "purchase",
"event_id": "ORDER-10492",
"order_id": "ORDER-10492",
"value": 129.00,
"currency": "USD"
}
Deduplication breaks when two different tools own your two event paths but Aimerce owns both. The same integration that observes the order sends the browser and server events, stamped with the same event ID, so Meta counts every purchase exactly once. There is nothing for you to wire up and no second tool to fall out of sync with.
5. Losing attribution by dropping click identifiers
If click IDs (like fbclid) aren't captured on the first page view and consistently passed through to every conversion event, your ad platforms lose the ability to link sales back to specific clicks. Implement a persistent capture strategy to ensure these identifiers travel with every event.
Only store what you actually use and keep your retention policies aligned with your privacy requirements to avoid unnecessary compliance risk.
6. Breaking identity across sessions and devices
This is where most setups quietly lose a ton of value. It happens when your data gets fragmented. When someone browses on their phone, then buys on their laptop later, then your system treats them like two different people.
This is the problem Aimerce was built around. We set a durable first party identifier server side, so returning visitors stay recognizable instead of resetting to anonymous every few days. The moment a customer shares an email or logs in, we stitch that identity backward to their earlier anonymous sessions and forward to everything they do next, across devices and including express checkout.
So the #1 thing you can do for EMQ is attach strong, consistent identifiers to every event (as allowed by consent/privacy rules), not just to purchases.
7. Ignoring express checkout entirely
One of the biggest things people miss is tracking express checkout. Since methods like Shop Pay, Apple Pay, and PayPal skip your standard checkout pages, they often break your tracking triggers. If express checkout makes up a big chunk of your sales, you’re basically flying blind on your best customers.
You should audit your event stream to see if these payment methods are underrepresented. If they are, you need to make sure your Conversions API is picking up those events with the same detail like value, currency, order IDs, and customer info as your regular checkout. We built Aimerce to handle this automatically because, at this point, tracking express checkout is very important.
8. Assuming server side means consent solved
Moving to server-side tracking doesn't mean you can just ignore privacy rules. Even though you're shifting data collection to your own server, you still need to respect user choices. Basically, treat consent as a primary filter for your entire data pipeline.
Define exactly what happens when someone opts out whether that means blocking certain platforms, stripping out extra parameters, or just holding off on sending anything until you know where they stand. It’s also smart to document your "data boundaries" so you know exactly what you’re collecting, why you need it, and where it’s being sent. Keeping things strict might lower your event volume, but it keeps your setup compliant and builds a lot more trust with your customers.
9. Over collecting parameters without a purpose
Keep your data lean by sticking to a minimum viable schema. Only add parameters if they actually serve a purpose, like boosting match quality, better segmentation, or reporting. If you aren't using a field in a dashboard or automation, just leave it out.
Example: For purchase, it’s usually better to always send event_id/order_id, value, and currency reliably than to sometimes add dozens of extra attributes that aren’t used and aren’t consistent.
At the end of the day, consistent naming is way more important than how much data you’re stuffing into each event.
10. Misconfigured routing and slow delivery
To keep your server-side tracking running smoothly, make sure your hosting is close to where your customers are. Since Meta’s algorithm needs data in real-time, cutting down on lag is key so check that your server endpoints are only processing what they're supposed to.
If you’re self-hosting with Stape or GTM, this entire category of failure is yours to own. Server uptime, routing, and constant maintenance. Aimerce just handles all that for you. It’s a managed setup that sends your data to Meta, Google, and Klaviyo automatically, so your team doesn't have to stress about the tech side of things.
The honest takeaway
Every mistake on this list is avoidable, but avoiding all of them by hand requires real engineering attention, ongoing ownership, and familiarity with how platforms like Meta actually score and match events all while trying to keep things from breaking. It basically forces you to play data engineer just to keep your numbers from falling apart.
It is also why we built Aimerce so it’s easier by automating the whole thing for Shopify. It handles the annoying stuff like cross-device stitching, deduplication, and express checkout tracking right out of the box. Instead of stressing over maintenance, you get a solid data stream that keeps your ROAS accurate, so you can actually focus on growing your store instead of patching code.
FAQ or Frequently asked questions
Does server side tracking fix ad blockers?
It reduces the loss caused by blocked scripts and browser restrictions, because events are sent from your server rather than the customer's browser. Some blocking happens at the network level, so validate the improvement with testing rather than assuming full recovery.
Should I run the Meta Pixel and the Conversions API at the same time?
Yes, in most cases. Meta recommends running both, because the pixel and the Conversions API capture complementary signals. The critical requirement is deduplication: both paths must send the same event ID so Meta counts each conversion once.
What is the most important thing to get right in a server side tracking setup?
Purchase integrity. That means the purchase event fires exactly once per order, carries the correct value and currency, and includes a stable order ID used for deduplication. Everything else in your measurement builds on top of trustworthy purchase data.
Why are my express checkout orders missing from my tracking?
Shop Pay, Apple Pay, and PayPal express flows bypass parts of the standard Shopify checkout where tracking scripts normally fire. If your setup only instruments the standard path, express checkout purchases go uncounted. Audit your events by payment method and make sure express checkout is covered server side.
How does server side tracking improve Meta ROAS?
More complete and better matched conversion data gives Meta's delivery system a stronger optimization signal. Higher Event Match Quality and fewer lost conversions typically translate into more accurate attribution and more efficient bidding, which shows up as improved Meta ROAS over time.
How long should I test before relying on server side conversions?
Long enough to cover normal variability: different devices, returning visitors, discount codes, express checkout and standard checkout, and at least several days of typical traffic. Judge readiness by data correctness and platform acceptance rates, not just event volume.
30-Day Aimerce Pixel Free Trial