Server-side tracking

Server-side tracking for Shopify and WooCommerce

ROASaurus saves every ad click on your domain, matches it to the paid order and sends the purchase to your ad platforms from the server.

Every click id kept

Nineteen click ids and six UTM fields, stored against a first-party visitor id.

Collected on your domain

Through the Shopify app proxy or a CNAME subdomain, so ad blockers see your own site.

Sent from the real order

Purchases are sent from your store's paid orders, not from a browser tag.

Fifteen ad platforms

Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Advertising, Taboola, LinkedIn, OpenAI Ads, Spotify, AppLovin, Criteo, AdRoll and Outbrain, plus Google Ads enhanced conversions on Shopify.

Deduplicated

The browser pixel and the server event share one event id, so each platform keeps one purchase.

Consent and bots handled

Shopify's privacy settings or your consent tool decide which visitors are tracked. Crawlers and headless browsers are dropped first.

Why browser pixels miss purchases

Ad blockers stop many pixel requests, and Safari caps cookies set by scripts at seven days, so a buyer returning after a week can look organic. Server-side tracking sends the purchase from your order data to each platform's API, with the click id saved at the first landing.

How it works

1. Capture the click

The script reads the click ids fbclid, gclid, gbraid, wbraid, ttclid, msclkid, ScCid, epik, rdt_cid, twclid, tblci, li_fat_id, adct, aleid, alart, oppref, awc, im_ref and OutbrainClickId, plus all six UTM fields, and stores them against a first-party visitor id, the _tl cookie. On Shopify the visitor id is also written to the cart.

2. Collect first-party

  • Shopify app proxy. The storefront posts events to yourstore.com/apps/roasaurus/e, which Shopify signs and forwards. Same-origin, no DNS change, with the regular collector as fallback.
  • CNAME subdomain. Point t.yourstore.com at ROASaurus and a certificate is issued automatically. The script and events then load from your own subdomain, so ad blockers treat them as first-party, and the visitor id is also set as a server cookie there. Safari may still cap that cookie at 7 days.

3. Match the order

On Shopify, orders are matched through cart attributes, cart and checkout tokens and the checkout pixel. The purchase is sent from the orders/paid webhook after a 20-second hold, so the browser checkout event (IP, user agent, fbp) can be joined first. Cash on delivery and external checkouts send when the order is created.

The WooCommerce plugin stores the tracking cookies on each order. Platforms without cart attributes match by the thank-you page Purchase event, then a hashed email the visitor gave earlier on your site (in a popup or through an Identify call), then the same IP and browser seen from three hours before to 15 minutes after the order, when exactly one visitor fits. See other webshops and funnels.

4. Send to every platform

ROASaurus forwards PageView, ViewContent, AddToCart, InitiateCheckout, Purchase and Lead. Each server event carries SHA-256 hashed customer data, the platform's own click id, IP address and user agent.

PlatformServer APIBrowser pixel, same event id
MetaConversions APIYes
TikTokEvents APIYes
SnapchatConversions API v3Yes
PinterestConversions API v5Yes
RedditConversions API v3Yes
XAds API conversions (OAuth 1.0a)No, server only
Microsoft AdvertisingUET Conversions APINo, server only
TaboolaS2S postbackNo, server only
LinkedInConversions APINo, server only
OpenAI AdsConversions APIYes
Spotify AdsConversions APIYes
AppLovinAxon Conversion APIYes
CriteoServer-side eventsNo, server only
AdRollServer-to-Server Event APINo, server only
OutbrainS2S postbackNo, server only
Google AdsEnhanced conversions from the Shopify checkoutCheckout pixel

Deduplication, consent and bots

Deduplication. The browser pixel fires with the same event id as the server event, so the platform keeps one copy. Double counting usually means another app sends the same pixel; here is the fix.

Consent. With "Respect visitor consent" on (the default), Shopify's customer privacy API or your consent tool decides. If a visitor declines marketing cookies, they get no visitor id, so their ad clicks and visits are not linked to them, and their browser events are not sent to ad platforms. The paid order itself is still sent server-side with hashed order data to Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Advertising and Taboola; LinkedIn and the destinations added after it get nothing. In strict mode nothing is sent from the browser until the visitor consents. See consent and privacy.

Bot filter. Crawlers, link previewers, uptime checks, AI bots and headless automation are dropped before the event log or any send.

Event and delivery log. Every delivery is listed per platform with the request and the platform's response. Failed deliveries are retried with backoff.

Who it is for and setup

Stores that advertise on Meta, TikTok or other paid channels and want those platforms to see every purchase. On Shopify, setup takes about ten minutes: connect the store, switch on the theme app embed, paste the checkout pixel and add your ad platforms. Guides: Shopify, Meta, WooCommerce and custom sites. Integrations: Shopify, Meta, TikTok, Google Ads and more.

Limits

  • X, Microsoft Advertising, Taboola, LinkedIn, Criteo, AdRoll and Outbrain get their conversions from the server only.
  • Taboola postbacks only work after a Taboola click (tblci) and return no validation, so failures cannot be detected.
  • Microsoft's UET Conversions API is in limited rollout.
  • Outside Shopify, consent is read from OneTrust, Cookiebot, Usercentrics, Didomi, CookieYes, iubenda, Termly, Complianz, Osano, TrustArc, any IAB TCF banner, Google Consent Mode and the WP Consent API. Other banners pass the choice with tlq('consent', …).

Further reading: server-side tracking on Shopify and the Meta Conversions API.

More features

Built on the same first-party data

Profit analyticsNet profit after every cost, POAS and break-even ROAS, a full P&L and profit per product, order and channel.AttributionTwelve models, from last click to data-driven Markov and Shapley and Total Impact, on your own click data, with order journeys and campaign profit.Lifetime valueCohorts, CAC payback, predicted LTV up to 24 months, repurchase timing and RFM segments synced to Klaviyo.Ask AI & MCPAn assistant on Claude that answers from your own reports, and an MCP server with read-only tools for Claude Code and other clients.Creative analyticsHook rate, hold rate, fatigue and ROAS per creative, hook, creator and format for Meta and TikTok.Marketing mix & budgetsA marketing mix model with a budget optimiser, geo-lift and on/off tests, spend curves and daily scale, hold or cut advice per campaign.AudiencesAudiences from orders, predicted LTV, RFM, visitors and leads, kept in sync with ten ad platforms and Klaviyo.Actions & AutopilotAn ads manager for nine platforms with an approval inbox, rules with guardrails, an AI Autopilot and one-click rollback.AI briefingsAnomaly alerts, AI digests grounded in your own numbers, a weekly action plan with a decision log and scheduled questions in Slack.Competitors & AI visibilityCompetitors' Meta ads and emails, how often AI assistants name your store, AI content drafts and AI focus groups.InfluencersAn influencer CRM with deals, code and link attribution, and ROI and profit per deal and influencer.AgenciesClient workspaces, a multi-client overview, white label on your own domain, PDF reports and a revenue share.
FAQ

Questions, answered

What is server-side tracking?

Server-side tracking sends conversion events from a server to each ad platform's API, instead of relying only on a pixel in the shopper's browser. ROASaurus sends each purchase from your store's paid orders, so ad blockers and browser cookie limits do not stop it.

Will purchases be counted twice?

Not by ROASaurus. Where a browser pixel exists, it and the server event carry the same event id, so Meta, TikTok, Snapchat, Pinterest, Reddit, OpenAI Ads, AppLovin and Spotify keep one copy. Double counting comes from another app sending the same pixel; switch that one off.

Do I need a CNAME or a developer?

No. On Shopify, the app proxy sends events through your own domain without DNS changes. A CNAME subdomain is optional: it serves the script and events from your own subdomain, so ad blockers treat them as first-party.

Which ad platforms receive server events?

Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Advertising, Taboola, LinkedIn, OpenAI Ads, Spotify, AppLovin, Criteo, AdRoll and Outbrain. Google Ads receives enhanced conversions from the Shopify checkout pixel. GA4, server-side GTM, Segment, Awin, impact.com, Attentive, Postscript and Omnisend can receive events too.

Every sale, traced to the ad that earned it

Server-side tracking, profit and lifetime value in one app. 14-day free trial, no credit card.

Start your free trial →