Client-side vs server-side tracking
Client-side tracking is the classic pixel. Code runs in the visitor's browser and sends events straight to the ad platform. It's quick to install and sees useful browser details, but it only works if the browser cooperates. An ad blocker, a strict privacy setting, a closed tab or a payment page that never sends the buyer back is enough to lose the event.
Server-side tracking sends events from a server to the ad platform's server API. The event is built from data you already have, like the order in your store, so it doesn't depend on what happens in the browser at that moment. Most stores run both, side by side.
The server APIs of each ad platform
Each platform has its own name for the same idea:
- Meta: Conversions API (often called CAPI).
- TikTok: Events API.
- Google: conversion uploads and enhanced conversions for Google Ads, and the Measurement Protocol for GA4.
- Snapchat: Conversions API.
- Pinterest: Conversions API.
- X: Conversions API.
- Microsoft Advertising: UET Conversions API.
- Reddit: Conversions API.
Deduplication: counting each sale once
If the browser pixel and the server both report a purchase, the platform needs to know they're the same sale. That's done with an event id: both copies carry the same one, and the platform keeps one.
Get this wrong and you either double your purchases or the platform throws away the wrong copy. It's the first thing to check in any server-side tracking setup.
Match quality: helping the platform recognise the buyer
A server event without details is like a receipt without a name. Platforms match events to people using the ad click id, browser ids, and hashed contact details. Meta shows this as Event Match Quality in Events Manager.
Good server-side tracking sends the click id saved when the visitor first landed, the browser id, the IP address and user agent, and email and phone hashed with SHA-256. The more of these an event carries, the more sales the platform can tie to an ad.
Three ways to set up server-side tracking
Each route works. The right one depends on how much time and technical help you have.
- Build it yourself against each platform's API. Full control, but you maintain matching, retries and API changes for every platform.
- Run server-side Google Tag Manager on a hosting service. Flexible and cheap at the infrastructure level, but it takes tag and container knowledge to set up and keep healthy.
- Use a managed app like Settl. You connect your store and ad accounts; the app handles click storage, matching, deduplication and retries for you.
Who needs server-side tracking most
Every store that runs paid ads benefits, but some feel the difference more. Stores selling mainly through Instagram, Facebook and TikTok ads lose a lot to in-app browsers and iPhone cookie limits. Stores with a longer buying cycle, where people come back days later, lose the link between click and sale. And stores that use redirect payment methods, like PayPal, iDEAL or bank apps, lose purchases from buyers who never return to the thank-you page.
Stores that run several ad platforms at once gain the most from a managed setup. Setting up server-side events for Meta, then TikTok, then Google, Snapchat, Pinterest and X separately is where most do-it-yourself projects stall. One tool that feeds all of them from the same order data keeps the numbers consistent across platforms.
If your ad spend is small and almost all of it goes to one platform, a free option like your store platform's own Meta app may be enough to start with. Move to dedicated server-side tracking when the gap between your orders and your ads manager starts to affect decisions.
Privacy and consent
Server-side tracking isn't a way around privacy rules, and it shouldn't be used as one. You still need a cookie banner and a privacy policy that fit your market. Server-side does let you control exactly what you send: Settl hashes personal data before it leaves our servers and deletes saved clicks after 90 days.
It also can't recover what doesn't exist. If a buyer never clicked an ad, or a platform can't match a hashed email to an account, that sale won't be attributed to an ad. Server-side tracking makes sure the sale is delivered; the platform decides what it can match.