{"id":315338,"date":"2026-05-20T11:21:52","date_gmt":"2026-05-20T11:21:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/axitrace-for-woocommerce\/"},"modified":"2026-10-08T10:23:58","modified_gmt":"2026-10-08T10:23:58","slug":"axitrace-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/li.wordpress.org\/plugins\/axitrace-for-woocommerce\/","author":23501369,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.2","stable_tag":"1.5.2","tested":"6.9.10","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"AxiTrace for WooCommerce","header_author":"AxiTrace","header_description":"Server-side conversion tracking for WooCommerce \u2014 Facebook CAPI, TikTok Events API, Google Ads, and GA4 from one plugin.","assets_banners_color":"141414","last_updated":"2026-10-08 10:23:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/axitrace.com\/integrations\/woocommerce","header_author_uri":"https:\/\/axitrace.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":606,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"axitrace","date":"2026-05-20 11:36:53","revision":3539067},"1.0.1":{"tag":"1.0.1","author":"axitrace","date":"2026-05-20 12:22:16","revision":3539228},"1.0.2":{"tag":"1.0.2","author":"axitrace","date":"2026-07-13 05:53:10","revision":3605476},"1.1.0":{"tag":"1.1.0","author":"axitrace","date":"2026-08-14 06:23:24","revision":3646733},"1.2.0":{"tag":"1.2.0","author":"axitrace","date":"2026-08-18 14:09:16","revision":3653037},"1.2.1":{"tag":"1.2.1","author":"axitrace","date":"2026-09-07 07:14:16","revision":3684339},"1.3.0":{"tag":"1.3.0","author":"axitrace","date":"2026-09-11 08:31:10","revision":3691049},"1.4.0":{"tag":"1.4.0","author":"axitrace","date":"2026-09-16 20:42:21","revision":3699223},"1.5.1":{"tag":"1.5.1","author":"axitrace","date":"2026-10-08 09:42:21","revision":3734154},"1.5.2":{"tag":"1.5.2","author":"axitrace","date":"2026-10-08 10:23:58","revision":3734264}},"upgrade_notice":{"1.5.2":"<p>Purchases and add-to-cart events now carry the Microsoft Advertising, X, Pinterest, LinkedIn and Snapchat click ids. Upgrade recommended for every store that advertises on those platforms.<\/p>","1.5.1":"<p>Important attribution fix: purchases and add-to-cart events now carry Google Ads and TikTok click ids, and the Reddit click id is sent in a format Reddit can match. Upgrade recommended for every store that advertises on Google, TikTok or Reddit.<\/p>","1.5.0":"<p>Adds optional profit tracking: enter your AxiTrace secret key to send product costs, refunds and cancellations. Stores that leave the key empty send no costs and no refunds; their purchases only gain a tax flag and a per-line product identity.<\/p>","1.2.1":"<p>Documentation links only: the plugin-site and dashboard links led to error pages and now resolve. No change to tracking; upgrade at your convenience.<\/p>","1.1.0":"<p>Fixes InitiateCheckout reporting value=0 and eliminates double-counted AddToCart events. Adds AddPaymentInfo tracking. Upgrade recommended for all users.<\/p>","1.0.1":"<p>Important fix: settings configured via the WooCommerce integration screen are now applied at runtime. Upgrade recommended for all users.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3539026,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3539215,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3539215,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.1.0","1.2.0","1.2.1","1.3.0","1.4.0","1.5.1","1.5.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3539067,"resolution":"1","location":"assets","locale":"","width":1300,"height":712},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3539115,"resolution":"2","location":"assets","locale":"","width":1600,"height":715},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3539228,"resolution":"3","location":"assets","locale":"","width":1585,"height":1486},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3539228,"resolution":"4","location":"assets","locale":"","width":1585,"height":1530}},"screenshots":{"1":"AxiTrace dashboard - website analytics with unique visitors, pageviews, purchases, and revenue over time, with all currencies normalized to a single reporting currency.","2":"Settings panel at WooCommerce &gt; Settings &gt; Integrations &gt; AxiTrace - public key field and server-side events toggle.","3":"Connections - link Facebook CAPI, Facebook Ads, TikTok Events API, TikTok Ads, Google Ads, and Google Analytics 4 to a single AxiTrace workspace.","4":"Visitors - per-visitor event history with country, traffic source, session and event counts, orders, and revenue."}},"plugin_section":[],"plugin_tags":[986,7855,1005,219244,286],"plugin_category":[45],"plugin_contributors":[263667],"plugin_business_model":[],"class_list":["post-315338","plugin","type-plugin","status-publish","hentry","plugin_tags-conversion-tracking","plugin_tags-facebook-pixel","plugin_tags-google-analytics","plugin_tags-server-side-tracking","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-axitrace","plugin_committers-axitrace"],"banners":{"banner":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/banner-772x250.png?rev=3539215","banner_2x":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/banner-1544x500.png?rev=3539215","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/icon-256x256.png?rev=3539026","icon_2x":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/icon-256x256.png?rev=3539026","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/screenshot-1.png?rev=3539067","caption":"AxiTrace dashboard - website analytics with unique visitors, pageviews, purchases, and revenue over time, with all currencies normalized to a single reporting currency."},{"src":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/screenshot-2.png?rev=3539115","caption":"Settings panel at WooCommerce &gt; Settings &gt; Integrations &gt; AxiTrace - public key field and server-side events toggle."},{"src":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/screenshot-3.png?rev=3539228","caption":"Connections - link Facebook CAPI, Facebook Ads, TikTok Events API, TikTok Ads, Google Ads, and Google Analytics 4 to a single AxiTrace workspace."},{"src":"https:\/\/ps.w.org\/axitrace-for-woocommerce\/assets\/screenshot-4.png?rev=3539228","caption":"Visitors - per-visitor event history with country, traffic source, session and event counts, orders, and revenue."}],"raw_content":"<!--section=description-->\n<p><strong>AxiTrace for WooCommerce<\/strong> connects your store to the AxiTrace server-side tracking platform at <a href=\"https:\/\/axitrace.com\/\">axitrace.com<\/a>. Every purchase, add-to-cart, begin-checkout, and add-payment-info event is captured and forwarded to your ad platforms - reaching customers that browser-based pixels miss entirely.<\/p>\n\n<p><strong>Why server-side tracking?<\/strong><\/p>\n\n<p>Browser pixels can be blocked by ad blockers, restricted by iOS Intelligent Tracking Prevention, and refused via cookie consent banners. Server-side events travel directly from your WooCommerce server to Facebook CAPI, TikTok Events API, Google Ads, and Google Analytics 4, so conversions are still recorded when the browser pixel cannot fire.<\/p>\n\n<p><strong>Deduplication so you never double-count<\/strong><\/p>\n\n<p>AxiTrace generates a deterministic UUID v5 event ID for every WooCommerce order. The same event ID is attached to both the browser-side purchase pixel fire and the server-side purchase event. Facebook CAPI, TikTok Events API, and Google Ads use that shared event ID to deduplicate automatically - each conversion is counted exactly once, regardless of how many times the confirmation page loads or how many pixels fire.<\/p>\n\n<p><strong>Server-side AddToCart events<\/strong><\/p>\n\n<p>AxiTrace sends AddToCart events server-side, triggered by the WooCommerce <code>woocommerce_add_to_cart<\/code> hook. This records add-to-cart activity from the server, so the event is captured even when the browser-side pixel is blocked or restricted.<\/p>\n\n<p><strong>Full checkout funnel<\/strong><\/p>\n\n<p>InitiateCheckout carries your real cart total and currency (not a placeholder zero), and AddPaymentInfo fires the moment a shopper selects a payment method - giving Facebook, TikTok, and Google Ads the mid-funnel signal they need to optimize toward checkout completion, not just clicks.<\/p>\n\n<p><strong>Asynchronous by design - checkout never blocks<\/strong><\/p>\n\n<p>All server-side event transmissions are dispatched via <strong>WooCommerce Action Scheduler<\/strong>. The HTTP request to AxiTrace's ingestion API happens in a background job, decoupled from the order placement flow. Checkout latency is unaffected even if the AxiTrace API is momentarily slow or unavailable.<\/p>\n\n<p><strong>Platform coverage<\/strong><\/p>\n\n<p>One plugin. One workspace key. AxiTrace routes your events to whichever ad platforms you connect in your dashboard:<\/p>\n\n<ul>\n<li>Facebook \/ Meta - Conversions API (CAPI)<\/li>\n<li>TikTok - Events API (server-side)<\/li>\n<li>Google Ads - Offline Conversion Upload (GCLID-based attribution)<\/li>\n<li>Google Analytics 4 - Measurement Protocol<\/li>\n<\/ul>\n\n<p><strong>HPOS and Cart\/Checkout Blocks compatible<\/strong><\/p>\n\n<p>AxiTrace for WooCommerce declares compatibility with WooCommerce High-Performance Order Storage (HPOS) and the modern Cart\/Checkout Blocks, so it works correctly on stores that have migrated away from legacy shortcode-based checkout.<\/p>\n\n<p><strong>WP Consent API support<\/strong><\/p>\n\n<p>Consent is governed by your AxiTrace workspace settings, so you flip one switch in AxiTrace and every storefront page follows it - no code, no per-plugin configuration. With that switch on, the SDK writes no cookie, no storage entry and sends no request until the visitor agrees to marketing.<\/p>\n\n<p>On top of that, the plugin detects the <a href=\"https:\/\/wordpress.org\/plugins\/wp-consent-api\/\">WP Consent API<\/a> (implemented by Complianz, CookieYes and other consent managers). When one is present, the plugin gates tracking on the <code>marketing<\/code> category as well: the SDK script loads but stays inert until the visitor allows that category, and a withdrawal made later stops it and deletes the identifiers it wrote. The decision is read in the visitor's own browser, so full-page caches cannot leak one visitor's choice to the next, and a later grant starts tracking without a reload. The decision recorded at checkout travels with the purchase, so your AxiTrace workspace can also decide server-side whether a purchase may be forwarded to the ad platforms. This gives your store a ready compliance path without requiring you to build custom integration.<\/p>\n\n<p><strong>GDPR personal-data tools built in<\/strong><\/p>\n\n<p>AxiTrace registers a WordPress personal-data exporter and eraser (<code>wp_privacy_personal_data_exporters<\/code> \/ <code>wp_privacy_personal_data_erasers<\/code>), enabling your store to fulfill GDPR deletion requests directly from the WordPress Tools &gt; Erase Personal Data screen.<\/p>\n\n<p><strong>Privacy first<\/strong><\/p>\n\n<p>Customer email addresses and phone numbers are transmitted in plain text to AxiTrace's ingestion API at <code>stat.axitrace.com<\/code> and are SHA-256 hashed inside AxiTrace before being forwarded to any ad platform. No raw PII leaves the AxiTrace platform. See our Privacy Policy at <a href=\"https:\/\/axitrace.com\/privacy\/\">axitrace.com\/privacy\/<\/a> and the <code>== External Services ==<\/code> section below for the complete disclosure.<\/p>\n\n<p><strong>Free plugin. Paid plans for volume.<\/strong><\/p>\n\n<p>The plugin itself is free and open source (GPL v2 or later). An AxiTrace account at <a href=\"https:\/\/axitrace.com\/\">axitrace.com<\/a> is required. Free workspaces are available. Paid plans unlock higher event volumes, longer data retention, and priority support - see <a href=\"https:\/\/axitrace.com\/\">axitrace.com<\/a> for current pricing.<\/p>\n\n<p>Requires an AxiTrace account at <a href=\"https:\/\/axitrace.com\/\">https:\/\/axitrace.com\/<\/a>.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to <strong>stat.axitrace.com<\/strong> - the AxiTrace event-ingestion API.<\/p>\n\n<ul>\n<li><strong>Service<\/strong>: AxiTrace conversion tracking SaaS.<\/li>\n<li><strong>Endpoint<\/strong>: <code>https:\/\/stat.axitrace.com\/woocommerce\/pixel<\/code> (POST).<\/li>\n<li><strong>When data is sent<\/strong>: on page views (cart, product, checkout, thank-you), add-to-cart events, begin-checkout events, payment-method selection at checkout, and order placement \/ payment completion.<\/li>\n<li><strong>Data transmitted<\/strong>: order ID, plain-text billing email (hashed downstream by AxiTrace), billing phone, billing city\/country\/zip, order total + currency, line items (SKU, name, quantity, price), user agent, IP address, AxiTrace session\/user identifiers, ad click ids from the page URL or the first-party cookies the AxiTrace tracking script stores them in (gclid, gbraid, wbraid, ttclid, rdt_cid, oppref, msclkid, twclid, epik, li_fat_id, sccid; only the bare id is sent, and a stored id older than its click window - 90 days for Google, TikTok, Microsoft and X, 60 for Pinterest, 30 for LinkedIn, 28 for Reddit, OpenAI Ads and Snapchat - is not sent), or, for Microsoft, X, Pinterest and LinkedIn, from the cookie the platform's own tag sets (_uetmsclkid, _twclid, _epik, li_fat_id; read only, never changed), ad-platform browser cookies (fbc, fbp, ttp, rdt_uuid, obref, Google Analytics client and session), UTM parameters, page URL\/referrer\/title.<\/li>\n<li><strong>Why<\/strong>: to forward the conversion to Facebook CAPI, TikTok Events API, Google Ads, GA4, and other ad platforms configured in your AxiTrace workspace.<\/li>\n<li><strong>Terms of Service<\/strong>: https:\/\/axitrace.com\/terms\/<\/li>\n<li><strong>Privacy Policy<\/strong>: https:\/\/axitrace.com\/privacy\/<\/li>\n<\/ul>\n\n<p><strong>Optional profit tracking (secret key)<\/strong><\/p>\n\n<p>Only when you enter an AxiTrace secret key in the settings (in AxiTrace under Settings, in the Container Information card, as Secret Key):<\/p>\n\n<ul>\n<li>Server-side purchases to <code>\/woocommerce\/pixel<\/code> additionally carry each line item's unit cost from the WooCommerce Cost of Goods Sold field, and the request is authenticated with the secret key (HTTP Basic). The cost is never sent from the shopper's browser.<\/li>\n<li>Refunds and cancellations of paid orders are sent to <code>https:\/\/stat.axitrace.com\/v1\/refund<\/code> (POST): order ID, refund ID and date, refunded amount and currency, and the refunded line items (SKU, catalog ID, quantity, amount). No customer personal data is included.<\/li>\n<\/ul>\n\n<p><strong>Optional first-party tracking domain<\/strong><\/p>\n\n<p>You may optionally configure a custom first-party subdomain under WooCommerce \u2192 Settings \u2192 Integrations \u2192 AxiTrace \u2192 \"First-party tracking domain\". When set to e.g. <code>metrics.your-store.com<\/code> (which you set up in your AxiTrace workspace and verify via CNAME to <code>stat.axitrace.com<\/code>), the SDK and ingestion endpoint load from your own domain instead of stat.axitrace.com. The data transmitted, the endpoint path (<code>\/woocommerce\/pixel<\/code>), and the recipient (AxiTrace) remain identical - only the hostname changes. This is purely a delivery optimization that helps bypass client-side blocking; no third-party service is added.<\/p>\n\n<p>When this field is empty, the plugin uses the default <code>stat.axitrace.com<\/code> endpoint described above.<\/p>\n\n<p><strong>Auto-detect lookup endpoint<\/strong><\/p>\n\n<p>When the merchant clicks the \"Detect from AxiTrace\" button on the settings page, the plugin makes a single server-to-server GET request to <code>https:\/\/axitrace.com\/api\/public\/workspace\/tracking-domain?key={public_key}<\/code> (AxiTrace admin host - separate from the ingestion host <code>stat.axitrace.com<\/code>) to look up the default verified domain registered for that workspace. The request contains only the merchant's own workspace public key (already exposed in every browser event); no customer or visitor data is sent.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/axitrace-for-woocommerce\/<\/code> or install via Plugins &gt; Add New.<\/li>\n<li>Activate the plugin through the Plugins menu in WordPress.<\/li>\n<li>Go to WooCommerce &gt; Settings &gt; Integrations &gt; AxiTrace.<\/li>\n<li>Paste your AxiTrace workspace public key (in AxiTrace at https:\/\/axitrace.com\/login, under Settings, in the Container Information card, as Public Key) and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20axitrace%20account%3F\"><h3>Do I need an AxiTrace account?<\/h3><\/dt>\n<dd><p>Yes. The plugin is free, but it forwards events to the AxiTrace SaaS at https:\/\/axitrace.com\/. Create a free workspace there before installing.<\/p><\/dd>\n<dt id=\"does%20this%20duplicate%20the%20facebook%20pixel%20events%20i%27m%20already%20firing%3F\"><h3>Does this duplicate the Facebook Pixel events I'm already firing?<\/h3><\/dt>\n<dd><p>No. AxiTrace generates a deterministic UUID v5 for every order, attached to both the browser purchase event and the server-side purchase event. Facebook CAPI, TikTok Events API, and Google Ads use that event ID to deduplicate, so each conversion is counted exactly once.<\/p><\/dd>\n<dt id=\"which%20ad%20platforms%20are%20supported%3F\"><h3>Which ad platforms are supported?<\/h3><\/dt>\n<dd><p>Facebook \/ Meta (Conversions API), TikTok (Events API), Google Ads (Offline Conversion Upload), and Google Analytics 4 (Measurement Protocol). Connect whichever platforms you use from your AxiTrace workspace dashboard at axitrace.com.<\/p><\/dd>\n<dt id=\"does%20this%20slow%20down%20my%20checkout%3F\"><h3>Does this slow down my checkout?<\/h3><\/dt>\n<dd><p>No. All server-side HTTP calls are dispatched via WooCommerce Action Scheduler as background jobs. The checkout flow completes immediately and the event is sent asynchronously afterwards.<\/p><\/dd>\n<dt id=\"is%20multisite%20supported%3F\"><h3>Is multisite supported?<\/h3><\/dt>\n<dd><p>Not in version 1.0. The plugin's <code>Network: false<\/code> header reflects this. Multisite support is on the roadmap.<\/p><\/dd>\n<dt id=\"where%20is%20my%20customer%20data%20sent%3F\"><h3>Where is my customer data sent?<\/h3><\/dt>\n<dd><p>To <code>stat.axitrace.com<\/code>. Plain-text email (hashed inside AxiTrace before forwarding to ad platforms), order data, IP address, user agent, session identifiers, and click-attribution cookies (fbc\/fbp\/gclid\/etc.). See <code>== External Services ==<\/code> below and our Privacy Policy at https:\/\/axitrace.com\/privacy\/.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20woocommerce%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Does the plugin work with WooCommerce HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes. AxiTrace for WooCommerce declares HPOS compatibility and uses the WooCommerce order abstraction layer (<code>wc_get_order()<\/code>), so it works correctly on stores that have enabled HPOS.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Add: server-side purchases and add-to-cart events now carry the Microsoft Advertising (<code>msclkid<\/code>), X (<code>twclid<\/code>), Pinterest (<code>epik<\/code>), LinkedIn (<code>li_fat_id<\/code>) and Snapchat (<code>sccid<\/code>) click ids. The AxiTrace tracking script 0.24.0 stores them on the landing page like the Google and TikTok ones, in the cookies <code>_axi_msclkid<\/code>, <code>_axi_twclid<\/code>, <code>_axi_epik<\/code>, <code>_axi_li_fat_id<\/code> and <code>_axi_sccid<\/code>.<\/li>\n<li>Each one is read from the page URL first (Snapchat's own <code>ScCid<\/code> parameter as well as <code>sccid<\/code>), then from the AxiTrace cookie while it is inside the platform's longest click window (90 days for Microsoft and X, 60 for Pinterest, 30 for LinkedIn, 28 for Snapchat), and finally from the cookie the platform's own tag sets (<code>_uetmsclkid<\/code>, <code>_twclid<\/code>, <code>_epik<\/code>, <code>li_fat_id<\/code>). Those platform cookies are only read, never changed. An old click replayed from a bookmarked link is not sent.<\/li>\n<li>The ids are stored on the order at checkout like the other click ids, so the purchase sent later in the background still carries them. Uninstall removes the new order meta keys.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Fix: server-side purchases and add-to-cart events now carry the Google Ads click ids (<code>gclid<\/code>, <code>gbraid<\/code>, <code>wbraid<\/code>) and the TikTok click id (<code>ttclid<\/code>). They were never read, so a purchase made after a Google or TikTok ad click reached AxiTrace without the click, and Google Ads and TikTok could not attribute it to the ad.<\/li>\n<li>Fix: the Reddit click id is now sent as the bare id. Earlier versions sent the whole stored cookie value (<code>v2|&lt;time&gt;|&lt;id&gt;<\/code>), which Reddit cannot match to a click. Orders placed before the update are sent with the bare id as well.<\/li>\n<li>Add: the OpenAI Ads click id (<code>oppref<\/code>) and browser reference (<code>__obref<\/code> cookie) are captured and forwarded.<\/li>\n<li>Each click id is read from the page URL first (a fresh ad click) and otherwise from the cookie the AxiTrace tracking script stored it in on the landing page, with the same limits the script applies: a click older than 90 days (28 days for Reddit and OpenAI Ads) is not sent, and neither is an old click replayed from a bookmarked link.<\/li>\n<li>The ids are stored on the order at checkout, so the purchase sent later in the background, after a payment gateway callback, still carries them.<\/li>\n<li>Fix: an order marked as paid by a store manager in wp-admin (for example a bank transfer) no longer picks up the manager's own browser cookies and ad clicks.<\/li>\n<li>Uninstall now also removes the new order meta keys.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Add: profit tracking support. A new optional \"AxiTrace secret key\" setting. With it, server-side purchases carry each product's cost from the WooCommerce Cost of Goods Sold field (WooCommerce 9.5 or later, when the feature is on), so AxiTrace can report profit and POAS next to revenue and ROAS. Without the key no cost data and no refunds are sent; purchases only gain the tax flag and line identity described below.<\/li>\n<li>Add: with the secret key, refunds (partial and full) and cancellations of paid orders are reported to AxiTrace so profit and POAS account for them. Revenue, ROAS and the ad platforms are not affected.<\/li>\n<li>Add: purchases carry whether your catalog prices include tax and a catalog identity per line item (<code>woocommerce:&lt;product or variation id&gt;<\/code>), used to match products to the costs in your AxiTrace workspace.<\/li>\n<li>Add: if AxiTrace rejects the secret key, purchases are still delivered (without costs) and the rejection is logged critical in WooCommerce &gt; Status &gt; Logs and noted on the order.<\/li>\n<li>Fix: refunds and cancellations are matched to their purchase by the order number, so stores with an order-numbering plugin are covered.<\/li>\n<li>Product costs are never added to a storefront page or to the browser-side purchase; they travel only in the server-side request authenticated with the secret key.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Change: consent is now governed by your AxiTrace workspace settings. The tracking SDK is loaded on every page and asks AxiTrace whether it may run, so turning \"Respect cookie consent\" on in your workspace gates every storefront page - including stores with no consent plugin at all - without touching any code.<\/li>\n<li>Change: with the WP Consent API present the SDK is still gated on the <code>marketing<\/code> category, but it is now the SDK itself that stays inert (no cookie, no storage, no request) instead of the script not being loaded. The site gate and the workspace policy apply together, so a page can only tighten the workspace setting, never loosen it.<\/li>\n<li>Add: a consent withdrawal reported by <code>wp_listen_for_consent_change<\/code> now stops tracking immediately and deletes the identifiers AxiTrace wrote, instead of taking effect only on the next page view.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Fix: the browser-side purchase on the thank-you page never fired on stores with pretty permalinks (the default), so the Meta Pixel bridge never engaged for purchases. It now reads the order from the <code>order-received<\/code> query var.<\/li>\n<li>Fix: the browser-side purchase now carries the full order (line items, phone, name, billing address, order number, tax, shipping). AxiTrace keeps whichever of the two purchase events arrives first; a thin browser event would have left the ad platforms without buyer data.<\/li>\n<li>Fix: the browser-side purchase fires only for orders WooCommerce considers paid. On-hold bank transfers and pending gateway returns are reported by the server-side event once the payment lands.<\/li>\n<li>Fix: server-side AddToCart now carries the shopper's AxiTrace visitor and session ids, real IP and User-Agent, ad-platform cookies, value and line item instead of the shop server's identity.<\/li>\n<li>Fix: the SDK now loads on every storefront page. Homepage, landing pages and blog posts were skipped, so ad clicks landing there were never attributed.<\/li>\n<li>Fix: WP Consent API support actually works now, is cache-safe (the decision is made in the browser), gates on the <code>marketing<\/code> category, and a later grant boots the SDK without a reload.<\/li>\n<li>Fix: transient delivery failures (AxiTrace unreachable, timeout, 5xx) are retried with backoff for up to 24 hours instead of being lost after the first attempt.<\/li>\n<li>Add: purchases carry the human-readable order number (GA4 <code>transaction_id<\/code>), gross tax, shipping and discount amounts, a catalog id per line item, and the shopper's consent decision.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fix: the links in this listing and on the settings screen pointed at pages that do not exist. \"Visit plugin site\" led to axitrace.com\/woocommerce and the install instructions sent you to axitrace.com\/admin; both answered with an error page. They now point at the WooCommerce integration page and the sign-in page. No tracking behaviour changes - upgrading is optional.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Add: purchase events now include the shopper's first name, last name and state\/province from the billing address. Facebook Conversions API and TikTok Events API hash and match on these, so including them measurably improves event match quality.<\/li>\n<li>Add: the TikTok browser ID (<code>_ttp<\/code>) and Reddit browser and click IDs (<code>_rdt_uuid<\/code>, <code>_rdt_cid<\/code>) are captured at checkout and forwarded, so TikTok and Reddit receive an identifier of their own instead of matching on e-mail alone.<\/li>\n<li>Add: the Google Analytics client and session cookies are captured at checkout, so the server-side purchase reaches GA4 as the shopper's own session instead of an unattributed new user.<\/li>\n<li>Add: the AxiTrace visitor and session IDs are captured and sent as the external ID, stitching the server-side purchase to the shopper's browsing profile. The WooCommerce customer ID could not serve this purpose: it is a WordPress user ID and is empty for guest checkouts.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Fix: InitiateCheckout (begin_checkout) now reports the real cart total and currency instead of value=0. Also deduplicated to fire once per checkout session instead of on every reload.<\/li>\n<li>Add: AddPaymentInfo now fires when a shopper selects a payment method on the checkout page (classic\/shortcode checkout), giving ad platforms a mid-funnel signal between InitiateCheckout and Purchase.<\/li>\n<li>Fix: AddToCart no longer double-fires. It was previously tracked independently from both the server and the browser with no shared ID, recording every add-to-cart twice. The server-side hook (which covers every add-to-cart path, including ad-blocked and JS-disabled browsers) is now the sole source; the redundant browser-side listener was removed.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Improvement: purchase events now include the customer's own Meta browser pixel cookies (<code>_fbp<\/code>\/<code>_fbc<\/code>) when present, captured at checkout time and forwarded to Facebook Conversions API for better browser\/server event matching. No change for stores without their own Meta Pixel.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: settings saved through WooCommerce &gt; Settings &gt; Integrations &gt; AxiTrace are now read correctly at runtime. The public key, server-side events toggle, and tracking domain entered in the form are picked up immediately. Previously these values were not detected, so no events were sent. Re-saving the settings is not required after upgrading.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Server-side purchase event via Action Scheduler.<\/li>\n<li>Deterministic UUID v5 dedup for Facebook CAPI, TikTok, Google Ads, GA4.<\/li>\n<li>Server-side AddToCart event for ad-blocked customers.<\/li>\n<li>HPOS and Cart\/Checkout Blocks compatibility.<\/li>\n<li>WP Consent API detect-and-check support.<\/li>\n<li>GDPR personal-data exporter and eraser hooks.<\/li>\n<\/ul>","raw_excerpt":"Server-side conversion tracking for WooCommerce - Facebook CAPI, TikTok Events API, Google Ads, and GA4 from one plugin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315338"}],"author":[{"embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/axitrace"}],"wp:attachment":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315338"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315338"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315338"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315338"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315338"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}