Skip to main content
WooCommerce server-sidePlatform solution

Server-side tracking for WooCommerce

WooCommerce is PHP you control, which makes it one of the easiest platforms to source money events correctly. woocommerce_payment_complete and the processing status transition each fire exactly once per order, carrying the order ID, totals and customer data. That removes the whole class of refresh-and-gateway duplication rather than guarding against instances of it.

Free30 minutesNo obligation

WooCommerce server-side · what breaks

What goes wrong on WooCommerce

  1. 01

    The same order counted several times

    The order-received page is refreshable, bookmarkable and shareable.

  2. 02

    Different gateways returning differently

    Card, PayPal and offsite redirects each land the customer somewhere different, and the untested one is where conversions go missing.

  3. 03

    Plugin conflicts

    A tracking plugin and a hand-built tag both firing a correct purchase produces two correct purchases.

  4. 04

    Orders paid later never counted

    Bank transfer and cheque sit in on-hold and complete outside any browser session.

WooCommerce server-side · the fix

What changes — WooCommerce server-side

  • One conversion per order

    Fired from a status change, not a page view.

  • Refreshes and back-buttons harmless

    Because the page no longer triggers anything.

  • Every gateway path covered

    Including the ones that redirect twice.

WooCommerce server-side · architecture

What WooCommerce exposes to a server container

You control the server, so the money event can come from the place that already knows the truth.

  1. 1

    Purchase from the order hook

    woocommerce_payment_complete fires once, from the order, with no browser involved.

  2. 2

    Order ID as the deduplication key

    Available identically to PHP and to the browser.

  3. 3

    Customer data from the order object

    Normalized then hashed at the container.

  4. 4

    Refunds from woocommerce_order_refunded

    So revenue can fall as well as rise.

  5. 5

    Caching bypassed for dynamic values

    A cached data layer is a real WooCommerce failure and easy to mistake for a tag fault.

WooCommerce server-side · diagnose

Where WooCommerce tracking breaks, in diagnostic order

Each check rules out a class of cause, so by the last one there is usually a single explanation standing.

  1. 01

    Refresh a confirmation page and watch

    The fastest reproduction of the most common WooCommerce fault.

  2. 02

    Match platform purchases to order IDs

    Repeated IDs prove duplication rather than over-attribution.

  3. 03

    List every tracking-adjacent plugin

    Then check the ones nobody mentioned.

  4. 04

    Test each gateway's return path

    They differ more than people expect.

  5. 05

    Check whether a caching plugin is active

    And whether the confirmation page is excluded from it.

WooCommerce server-side · prove

The QA evidence — WooCommerce server-side

Run on WooCommerce specifically, on a live conversion rather than in preview mode.

Source of truth

your WooCommerce order records

  • Confirmation page refreshed repeatedly with no additional event.
  • Every gateway return path tested with a real transaction.
  • No order ID appearing twice at any destination.
  • Purchase count within a few percent of WooCommerce orders for a closed week.
  • A real refund issued and confirmed reversing.
  • Reconciled over a fully closed window, matched per record rather than on totals.
  • Re-checked 30 days later, and after any platform update.

WooCommerce server-side · free audit

What we check in the free audit

  • Refresh a confirmation page and watch
  • Match platform purchases to order IDs
  • List every tracking-adjacent plugin
  • Test each gateway's return path
  • Check whether a caching plugin is active

Checked against

your WooCommerce order records

Get my free conversion tracking audit

Free30 minutesNo obligation

WooCommerce server-side · when not to buy

When you don't need this on WooCommerce

Worth reading before you buy anything, from us or anyone.

  • If your purchase count matches your WooCommerce order count and refreshing the confirmation page fires nothing extra, you don't have the classic WooCommerce problem and probably don't need us.
  • Filtering duplicates out in GA4 is not a fix — the ad platforms still received them and bidding still optimized on them — but if you genuinely only care about reporting, it's cheaper than a rebuild.
  • Moving purchase to the order hook is something a competent WordPress developer can do. If you have one, hand them this page.
  • Reconcile a closed week on order ID first. It costs an hour and tells you whether any of this is worth paying for.

WooCommerce server-side · what we deliver

What the server-side build gives you on WooCommerce

  • Container on your own subdomain

    Your domain, your certificate, hosting in an account you control.

  • Money events from WooCommerce orders

    woocommerce_payment_complete or the processing status transition, each firing exactly once per order.

  • Deduplicated at every destination

    On a shared event ID, verified before any existing path is removed.

  • Consent enforced before dispatch

    A denied destination receives nothing, verified by capture rather than configuration.

Written guarantee

95%+ tracking accuracy

Measured against your WooCommerce 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

Repairs and verifies the browser-side setup you already have, on a live conversion. Honest about its ceiling on this platform.

  • Root cause fixed, not worked around
  • Verified on a live conversion
  • Reconciled against your own records
  • Written handover
Fix what I have

1st-party server-side

Recommended

$800One-time fee · most popular

Money events sent from your own records through a first-party container on your subdomain, so the browser can no longer lose them.

  • First-party server container on your own subdomain
  • Money events from your records, not the browser
  • Deduplicated on a shared event ID at every destination
  • First-party cookies beyond Safari's 7-day cap
  • 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Rebuild it server-side

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid channel server-side plus the offline loop, with monitoring so the next break surfaces in days.

  • Everything in 1st-party server-side
  • Pinterest, Snapchat, Reddit and LinkedIn CAPI
  • CRM and offline conversion loop
  • Refunds and cancellations corrected wherever each platform allows it
  • Monitoring on every destination
Get the full stack

FAQ

WooCommerce server-side questions, answered

For the duplication problem, no — the order hook fixes that on its own. For Safari cookie lifetime and ad blockers, that's what server-side adds.

Free · 30 min

Move WooCommerce events off the browser

Free30 minutesNo obligation