Skip to main content
WooCommerceFor WooCommerce & WordPress stores

Get your WooCommerce tracking to 95%+ accuracy guaranteed in writing.

PixelYourSite, GTM4WP, the official Meta plugin, Site Kit — most Woo stores have at least three of them stepping on each other. Events double-fire, dedup is broken, EMQ is stuck at 4. Meta keeps showing you a 4× ROAS that doesn't match what your bank account is saying. We tear it all out and replace it with one clean server-side stack.

Free30 minutesNo obligation

WooCommerce · what breaks

Where WooCommerce tracking falls apart

  1. 01

    Plugins fight each other

    PixelYourSite, GTM4WP, official Meta plugin, Google Site Kit — most stores have 3 of them running simultaneously, double-firing and breaking dedup.

  2. 02

    Browser pixels miss a substantial share of orders

    Same iOS / ad-blocker problem as every other platform — but on Woo it's worse because the thank-you page often loads with cached state and the pixel never fires.

  3. 03

    Page builders inject scripts unpredictably

    Elementor, Divi, WPBakery — each one can break the dataLayer, delay tag firing, or strip event listeners. Most audits we run find at least one builder-induced bug.

  4. 04

    Variable products & subscriptions break events

    Variable, grouped, and subscription products often fire AddToCart with the wrong content_id or value. Catalog matching collapses.

WooCommerce · the fix

What you get back — WooCommerce

  • Reliable Purchase events

    Server-side fires from order_status_changed=processing — 100% reliable, regardless of thank-you-page behavior.

  • Variable & subscription products handled

    We build a proper WooCommerce dataLayer that handles variations, subscriptions, bundles, and gift cards correctly.

  • WP Consent API wired to Consent Mode v2

    Compatible with Complianz, Cookiebot, Real Cookie Banner — granted/denied signals flow through to Google and Meta.

  • Plugin chaos cleaned up

    We retire conflicting plugins and consolidate on one clean GTM-based stack you can actually maintain.

WooCommerce · architecture

How a WooCommerce order should reach the ad platforms

WooCommerce gives you full server access, which is its real advantage. The order object is right there in PHP, and you never have to guess what the customer bought.

  1. 1

    Click identifiers captured at first touch

    Click IDs are captured at landing and written to a first-party cookie, then attached to the order as post meta at checkout, so the attribution survives into the order record rather than dying with the session.

  2. 2

    The browser sends the fast, fragile copy

    The browser fires the standard ecommerce events from the data layer. On WooCommerce this is where duplication starts: it is normal to find two or three tracking plugins each pushing their own purchase event on the same order-received page.

  3. 3

    The order itself is the source of truth

    The woocommerce_thankyou and woocommerce_payment_complete hooks fire server-side against a real order object. woocommerce_payment_complete is the safer of the two, because thankyou fires again on every page refresh.

  4. 4

    A server container sends the authoritative event

    A small plugin or a webhook posts the completed order to a GTM server container on your own subdomain, keyed on the WooCommerce order ID.

  5. 5

    Customer identity raises match quality

    The order has billing email, phone, name, city, state and postcode. Hashed server-side, these deliver the match quality lift that no browser-only WooCommerce setup can reach.

WooCommerce · events

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

WooCommerce hooks give you a genuine server-side trigger for every money event, including ones with no browser session at all.

view_itemA single product template rendersitem_id, value, currency, event_idBrowser + server, deduped
add_to_cartwoocommerce_add_to_cart fires, including AJAX adds from archive pagesitem_id, quantity, value, currency, event_idBrowser + server, deduped
begin_checkoutThe checkout page loads with a non-empty cartvalue, currency, num_items, event_idBrowser + server, deduped
purchasewoocommerce_payment_complete fires against the order objectorder_id, value, currency, items[], hashed email/phone/name/address, event_idServer authoritative
refundwoocommerce_order_refunded fires in adminorder_id, value, currencyServer only
subscription_renewedWooCommerce Subscriptions processes a renewal — no browser is presentvalue, currency, planServer only

WooCommerce · normal or broken

WooCommerce-specific false alarms and real faults

Most WooCommerce tracking problems trace to plugins rather than to the platform.

Normal, not a fault

  • Order status changing after the conversion fired

    Pending, processing and completed are separate states. Firing on payment complete and later seeing the status change is normal WooCommerce behavior.

  • Manual and phone orders absent from ad platform data

    They had no web session. They belong in your revenue totals but not in your ad conversions.

  • 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

  • Two or three tracking plugins all firing purchase

    The single most common WooCommerce fault. Each plugin works correctly in isolation and together they multiply your reported conversions.

  • Firing on woocommerce_thankyou with no order-key guard

    The order-received page can be refreshed, bookmarked and revisited. Every reload fires another conversion unless the order is checked for an already-tracked flag.

  • Caching plugins serving a stale data layer

    Page caching can serve one customer's cart values to the next visitor. The events look perfectly healthy and the values are somebody else's.

  • Order value including or excluding tax and shipping inconsistently

    Different plugins compute the total differently. Value-based bidding then optimizes against a number that does not match your revenue.

WooCommerce · prove

How we prove the WooCommerce build is correct

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

Source of truth

WooCommerce order records in WordPress

  • The purchase hook confirmed as payment_complete with a per-order guard, tested by refreshing the order-received page and confirming no second event.
  • Page caching tested with a warm cache, confirming the data layer carries the correct customer's values.
  • Order total treatment for tax and shipping documented and consistent across every destination.
  • Purchase count within a few percent of woocommerce order records in wordpress 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.

WooCommerce · free audit

What we check in the free audit

  • Plugins fight each other
  • Browser pixels miss a substantial share of orders
  • Page builders inject scripts unpredictably
  • Variable products & subscriptions break events

Checked against

WooCommerce order records in WordPress

Get my free conversion tracking audit

Free30 minutesNo obligation

WooCommerce · when not to buy

When a WooCommerce rebuild is not what you need

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

  • You take under about 50 orders a month and spend little on ads. A single well-configured tracking plugin, with the others removed, will serve you.
  • Your store is not advertised at all. Server-side tagging solves ad-platform signal loss; if there is no ad platform, there is no gain.
  • You have unresolved plugin conflicts breaking checkout itself. Fix checkout first — tracking a broken checkout accurately is not the win it sounds like.

WooCommerce · what we deliver

Deliverables — WooCommerce

  • Server-side GTM container

    Hosted on your subdomain or via Stape. Full ownership.

  • WooCommerce-specific dataLayer

    Custom plugin or mu-plugin that emits clean events for view_item, add_to_cart, begin_checkout, add_payment_info, purchase — with correct values, currencies, and content_ids.

  • Meta CAPI with full advanced matching

    Hashed email, phone, fn, ln, ct, st, zp, country, fbc, fbp, client_ip, client_user_agent, external_id.

  • Google Enhanced Conversions

    Server-side hashed user data for Google Ads + GA4.

  • TikTok Events API (optional)

    Same dedup pattern applied for TikTok if you run that channel.

  • QA + Notion runbook

    Live test, EMQ verification, dedup check, full handover docs.

Written guarantee

95%+ tracking accuracy

Measured against WooCommerce order records in WordPress. 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

Foundation pixel install for your WooCommerce store. Honest disclosure: this is a starting point only. If you spend $1K+/month on paid media you should be on the 1st-party server-side tier — rather than quote you a recovery percentage, we'll show you how to measure your own gap: compare what the platforms reported against the orders in your backend for the same week. That ratio is the entire argument, and it's yours to check — see trackingconsulting.com/measurement-accuracy-methodology.

  • One-time fee · zero monthly · zero SaaS lock-in
  • WooCommerce dataLayer (clean spec)
  • GA4 e-commerce events
  • Meta Pixel · Google Ads tag
  • TikTok Pixel · Microsoft UET
  • Consent Mode v2 banner integration
  • QA test orders + 7-day support
  • No CAPI · no iOS recovery
Lock in the one-time price

1st-party server-side

Recommended

$800One-time fee · most popular

The done-for-you package every WooCommerce store running paid ads should start with. We build the entire 1st-party server-side stack on your subdomain — Meta, Google, TikTok, Microsoft, LinkedIn all fed from the server. Recovers the conversions iOS, Safari ITP, ad blockers and cookie deprecation hide today. You don't lift a finger. Built in 2–4 days · accurate data in 7 days.

  • One-time fee · save vs SaaS subscriptions over 5 years
  • Fully recovered + built in 2–4 days · accurate data in 7 days
  • Everything in browser-side starter
  • 1st-party server-side GTM (your subdomain)
  • Meta CAPI · full advanced matching · 8+ EMQ
  • Google Enhanced Conversions (Web + Leads)
  • TikTok Events API · Microsoft UET server
  • Deterministic browser ↔ server deduplication
  • Live EMQ verification + screenshots
  • Notion runbook + 30-day support · zero recurring
Lock in the one-time price

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid-media channel running 1st-party server-side, end-to-end. For WooCommerce brands spending $30K+/month who can no longer afford attribution leaks. Pay once. Own everything. Includes Pinterest + Snap + Reddit + LinkedIn CAPI, Klaviyo identity stitching, BigQuery + Looker Studio.

  • One-time fee · save 6-figure SaaS subscriptions over 5 years
  • Everything in 1st-party server-side tier
  • Pinterest · Snapchat · Reddit · LinkedIn · X CAPIs
  • Klaviyo identity stitching (if used)
  • BigQuery export (server logs + GA4)
  • Looker Studio attribution dashboard (branded)
  • Multi-region / multi-currency / EU residency
  • GDPR-audit-ready Consent Mode v2 wiring
  • 60-day support · optional retainer · no lock-in
Lock in the one-time price

FAQ

WooCommerce questions, answered

Usually yes — most plugins double-fire when paired with server-side. We replace them with a thinner custom dataLayer plugin so you keep one source of truth.

Free · 30 min

Get a free WooCommerce tracking audit

Free30 minutesNo obligation