Skip to main content
Saleor / Medusa (Headless)For Saleor & Medusa headless storefronts

Get your Saleor / Medusa tracking to 95%+ accuracy guaranteed in writing.

Saleor and Medusa give you full control over the storefront — and full responsibility for tracking. There's no plugin marketplace, no native pixel app, no Shopify-style Customer Events API. Without a server-side gateway, every iOS user, every ad-blocker user, every cookie-banner click stays invisible. We build the gateway, ship a typed dataLayer for your storefront framework, and hand over a runbook your team can extend.

Free30 minutesNo obligation

Saleor / Medusa · what breaks

Headless tracking complexity — Saleor / Medusa

  1. 01

    No native pixels

    Marketplace plugins do not apply.

  2. 02

    GraphQL events need manual wiring

    Each mutation = a tag.

  3. 03

    Edge-runtime restrictions

    Workers can't ship full Node libs.

  4. 04

    Hydration double-fires

    Common in naïve setups.

Saleor / Medusa · the fix

Outcomes — Saleor / Medusa

  • Typed React/Vue module

    Source + Storybook examples.

  • Server-side CAPI

    Edge or Node runtime.

  • Hydration-safe events

    Zero double-fires.

  • GA4 e-com schema

    Standard events.

Saleor / Medusa · architecture

How a Saleor and Medusa order should reach the ad platforms

These are headless commerce backends, so there is no theme, no template and no page to attach tracking to. Everything is an API call, which is both the difficulty and the opportunity.

  1. 1

    Click identifiers captured at first touch

    Click IDs are captured by the storefront application at landing and stored against the cart or customer, so they persist through a checkout that may span several API calls and a payment provider redirect.

  2. 2

    The browser sends the fast, fragile copy

    The storefront application pushes events explicitly at each state change. There is no DOM to scrape, which makes tracking a development dependency and puts it in the release cycle.

  3. 3

    The order itself is the source of truth

    The order completion mutation's response, or the backend order-created webhook, is the truth. A confirmation route can be reloaded, shared or never reached.

  4. 4

    A server container sends the authoritative event

    The backend webhook posts to a GTM server container on your own subdomain, keyed on the order ID, which is also where hashed identity is added rather than in the client.

  5. 5

    Customer identity raises match quality

    The order carries email, phone and address. Hashed in the backend, never exposed to the storefront bundle where any script could read them.

Saleor / Medusa · events

The event set we build on Saleor and Medusa, and where each one comes from

Every event here is a deliberate call from application code. Nothing fires by accident, which means nothing fires unless someone writes it.

view_itemThe product query resolves for a product routeitem_id, value, currency, event_idBrowser + server, deduped
add_to_cartThe cart line mutation returns successitem_id, quantity, value, currency, event_idBrowser + server, deduped
begin_checkoutA checkout session is createdvalue, currency, num_items, event_idBrowser + server, deduped
purchaseThe backend order-created webhook firesorder_id, value, currency, items[], hashed email/phone/name/address, event_idServer authoritative
refundA refund is processed in the backendorder_id, value, currencyServer only

Saleor / Medusa · normal or broken

Headless commerce specifics — Saleor / Medusa

The usual tracking assumptions — page loads, templates, DOM values — none of them apply.

Normal, not a fault

  • No page load between funnel steps

    Route changes replace navigation. Page-view triggers will never fire and should not be expected to.

  • Tracking requiring a developer for every change

    That is the architecture. Budget for it rather than being surprised by it.

  • Ad platforms report more conversions than you have orders

    Meta credits a 7-day click and 1-day view; Google credits on click date. Two platforms can each claim the same sale. Compare each one to your order records separately and never add them together.

  • Recent days always look worse than they finish

    Conversions are credited back to the date of the click, so yesterday's return on ad spend is understated and will keep improving for several days. This is attribution working, not data arriving late.

Actually broken

  • One page view per session and nothing else

    Route changes are not wired to fire events. The most common headless symptom by a wide margin.

  • Purchase fired on the confirmation route

    Reloading fires it again, and a customer who never reaches the route is never counted.

  • Events firing before hydration completes

    Undefined values are sent and accepted. The count looks right and every parameter is empty.

Saleor / Medusa · prove

How we prove the Saleor and Medusa build is correct

The tag firing proves the tag fires. These prove the numbers are right.

Source of truth

The commerce API's order records

  • Route navigation confirmed producing one event per view across a multi-step journey.
  • The confirmation route confirmed not to produce a second purchase on reload.
  • Which application code paths own which events documented, since a frontend refactor will otherwise silently break them.
  • Purchase count within a few percent of the commerce api's order records for a fully closed week, matched on order ID rather than on totals.
  • No order ID appearing twice in any platform's event log.
  • Deduplication confirmed at every destination that supports it.
  • Test and staff orders excluded, with the exclusion confirmed active rather than merely configured.
  • The same reconciliation repeated 30 days later, because a setup that works once and then drifts is the harder failure to catch.

Saleor / Medusa · free audit

What we check in the free audit

  • No native pixels
  • GraphQL events need manual wiring
  • Edge-runtime restrictions
  • Hydration double-fires

Checked against

The commerce API's order records

Get my free conversion tracking audit

Free30 minutesNo obligation

Saleor / Medusa · when not to buy

When a Saleor and Medusa rebuild is not what you need

We would rather say this now than three weeks into an engagement.

  • You are pre-launch and the storefront is still changing weekly. Build once it stabilizes.
  • Your ad spend does not yet justify development time on tracking.
  • No developer capacity is available. Nothing here can be done without one.

Saleor / Medusa · what we deliver

Deliverables — Saleor / Medusa

  • TS dataLayer module

    Storybook + tests

  • Server-side gateway

    Edge or Node

  • Per-route integration

    PDP / Cart / Checkout / Order

  • QA + Notion runbook

    Plus 60-day support

Written guarantee

95%+ tracking accuracy

Measured against The commerce API's order records. Miss it and we keep working at no cost.

Get my free conversion tracking audit

Pricing

Pick the package that fits your ad spend

Browser-side starter

$400One-time fee · lifetime ownership

Baseline pixel install for Saleor / Medusa. Honest disclosure: at enterprise scale this tier is a stopgap — every paid-media dollar should be running 1st-party server-side. Only suitable when ad spend is genuinely small.

  • Saleor / Medusa-aware dataLayer
  • GA4 + Meta Pixel + Google Ads + TikTok + UET
  • Consent Mode v2 wiring
  • QA + 14-day support
  • No CAPI · no iOS recovery
Start with browser only

1st-party server-side

Recommended for paid ads

$800One-time fee · most popular

Standard for Saleor / Medusa stacks running serious paid media. Every channel — Meta, Google, TikTok, Microsoft — fed 1st-party server-side. Multi-store / multi-region aware. EMQ 8+ verified live before handoff.

  • Everything in browser starter
  • 1st-party server-side GTM (Stape Pro or self-hosted)
  • Meta CAPI · Google EC · TikTok Events · UET server
  • Deterministic browser ↔ server dedup
  • Multi-store / multi-region routing
  • Live EMQ verification · 8+ target
  • Notion runbook + 30-day support
Book a call · get the recommended package

Enterprise 1st-party stack

$1,800One-time fee · lifetime ownership

Full enterprise stack for high-volume Saleor / Medusa brands. Every channel 1st-party server-side, identity graph, data warehouse, EU + US residency, and a quarterly attribution review with leadership.

  • Everything in 1st-party server-side tier
  • Pinterest · Snapchat · LinkedIn · Reddit CAPI
  • Klaviyo / CDP identity stitching
  • BigQuery export + Looker Studio dashboard
  • EU + US data residency (Stape EU / GCR europe-west)
  • GDPR / CCPA / CPRA audit-clean
  • Quarterly health check + leadership review
  • 90-day support · retainer optional
Book a call · scope enterprise

FAQ

Saleor / Medusa questions, answered

Yes — same module pattern.

Free · 30 min

Free headless tracking strategy call

Free30 minutesNo obligation