{"id":297513,"date":"2026-05-11T08:53:01","date_gmt":"2026-05-11T08:53:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/data-reshape-integration-for-woocommerce\/"},"modified":"2026-08-07T11:04:53","modified_gmt":"2026-08-07T11:04:53","slug":"datalayer-tracking-datareshape-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ja.wordpress.org\/plugins\/datalayer-tracking-datareshape-woocommerce\/","author":9137856,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Datalayer Tracking via DATA Reshape for WooCommerce","header_author":"Uprise Team","header_description":"Browser-side and server-side tracking integration for WooCommerce using DataReshape.","assets_banners_color":"342c51","last_updated":"2026-08-07 11:04:53","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.paypal.me\/eduardvd","header_plugin_uri":"","header_author_uri":"https:\/\/uprise.ro","rating":0,"author_block_rating":0,"active_installs":10,"downloads":488,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1":{"tag":"0.1","author":"rwky","date":"2026-05-11 08:52:23"},"0.1.1":{"tag":"0.1.1","author":"rwky","date":"2026-05-12 14:51:38"},"0.4":{"tag":"0.4","author":"rwky","date":"2026-05-13 11:29:15"},"0.5":{"tag":"0.5","author":"rwky","date":"2026-05-14 19:28:50"},"0.6":{"tag":"0.6","author":"rwky","date":"2026-05-15 13:34:03"},"0.8":{"tag":"0.8","author":"rwky","date":"2026-05-25 14:33:22"},"0.9":{"tag":"0.9","author":"rwky","date":"2026-05-28 09:59:02"},"0.9.1":{"tag":"0.9.1","author":"rwky","date":"2026-06-17 15:29:32"},"1.0.0":{"tag":"1.0.0","author":"rwky","date":"2026-08-07 11:04:53"}},"upgrade_notice":{"1.0.0":"<p>Adds the server-side order webhook under the API Events tab \u2014 reliable coverage for off-site payment gateways and phone\/admin orders the browser can&#039;t capture. Off by default; enable it and add your Access token under Integration setup (the webhook reuses your Tracking subdomain and Library ID). Existing browser tracking is unchanged. Also adds a staging\/local safety guard that auto-pauses tracking when a copied database is served from a different address, so test sites can&#039;t pollute your production data.<\/p>","0.9.1":"<p>Fixes add-to-cart tracking on stores where another plugin or theme intercepts the product-page button click, and on stores where <code>\/wp-admin\/admin-ajax.php<\/code> is unreachable for any reason. No configuration required.<\/p>","0.9":"<p>Fixes three add-to-cart tracking gaps: (a) themes that wrap the single-product submit in their own AJAX (Woodmart, custom builders); (b) listing add-to-cart with the &quot;Redirect to cart page&quot; WooCommerce option enabled; (c) variable products on classic single-product pages now emit the chosen variation instead of the parent. No configuration required.<\/p>","0.8":"<p><strong>Have your technician roll this update out.<\/strong> It changes the datalayer structure and the consent integration in ways that affect downstream destinations and any custom code reading from <code>window.reshape<\/code> \/ <code>window.drswcConsent<\/code>. Specifically: the old &quot;Google Consent Mode granted by default&quot; toggle no longer exists \u2014 sites that had it on must enable the new &quot;Grant consent by default&quot; toggle (Events tab) if they want events processed without waiting for a CMP signal; otherwise DATA Reshape&#039;s native CMP \/ Google Consent Mode v2 detection takes over. The <code>tax_included<\/code> \/ <code>tax_percent<\/code> fields are absent entirely (instead of <code>false<\/code>) when WooCommerce tax is disabled. After upgrade, verify in DATA Reshape that events still arrive as expected.<\/p>","0.7":"<p>Breaking: migrates from <code>window.dataLayer<\/code> + <code>wc_*<\/code> event names to DATA Reshape&#039;s <code>window.reshape.push()<\/code> API with spec-defined names. Custom GTM tags reading the old <code>wc_*<\/code> events from this plugin&#039;s dataLayer will need updating. Verify in DATA Reshape that events are arriving after upgrade.<\/p>","0.6":"<p>Extends the 0.5 PII cache-leak fix to cart\/checkout pages and declares HPOS + Cart\/Checkout Blocks compatibility.<\/p>","0.5":"<p>Fixes a PII cache leak on page-cached thankyou pages (notably LiteSpeed). Identity is now hydrated client-side from cookies so cached HTML carries no PII.<\/p>","0.4":"<p>Fresh-install checkbox defaults flipped to off (existing sites unaffected). Admin warning notice when the integration is active but not configured.<\/p>","0.3":"<p>AJAX add-to-cart detection improved (QuadLayers et al.); in-page debug overlay removed.<\/p>","0.1":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3532095,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3532073,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3532073,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1","0.1.1","0.4","0.5","0.6","0.8","0.9","0.9.1","1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3547766,"resolution":"1","location":"assets","locale":"","width":1219,"height":1107},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3547766,"resolution":"2","location":"assets","locale":"","width":1220,"height":1022}},"screenshots":{"1":"Initial dashboard with general settings (Integration setup tab)","2":"Events configuration tab"}},"plugin_section":[],"plugin_tags":[262536,262534,262535,159989],"plugin_category":[],"plugin_contributors":[97974],"plugin_business_model":[],"class_list":["post-297513","plugin","type-plugin","status-publish","hentry","plugin_tags-datalayer-tracking","plugin_tags-datareshape","plugin_tags-first-party-tracking","plugin_tags-woocommerce-tracking","plugin_contributors-rwky","plugin_committers-rwky"],"banners":{"banner":"https:\/\/ps.w.org\/datalayer-tracking-datareshape-woocommerce\/assets\/banner-772x250.png?rev=3532073","banner_2x":"https:\/\/ps.w.org\/datalayer-tracking-datareshape-woocommerce\/assets\/banner-1544x500.png?rev=3532073","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/datalayer-tracking-datareshape-woocommerce\/assets\/icon-256x256.png?rev=3532095","icon_2x":"https:\/\/ps.w.org\/datalayer-tracking-datareshape-woocommerce\/assets\/icon-256x256.png?rev=3532095","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/datalayer-tracking-datareshape-woocommerce\/assets\/screenshot-1.png?rev=3547766","caption":"Initial dashboard with general settings (Integration setup tab)"},{"src":"https:\/\/ps.w.org\/datalayer-tracking-datareshape-woocommerce\/assets\/screenshot-2.png?rev=3547766","caption":"Events configuration tab"}],"raw_content":"<!--section=description-->\n<p>DATA Reshape for WooCommerce is a bridge between your WooCommerce store and the DATA Reshape platform. It emits structured ecommerce events (<code>product_viewed<\/code>, <code>product_added_to_cart<\/code>, <code>cart_viewed<\/code>, <code>checkout_started<\/code>, <code>checkout_completed<\/code>, plus the mid-funnel checkout steps) into DATA Reshape's <code>reshape.push()<\/code> queue, and DATA Reshape's loader \u2014 served from a tracking subdomain you control \u2014 handles delivery and routing onward to GA4, Meta, TikTok, and every other destination you have connected.<\/p>\n\n<p>Because the loader is served first-party, events are not blocked by ad blockers, ITP, or the usual third-party-script defences that break conventional <code>gtag<\/code>\/<code>fbq<\/code>\/<code>ttq<\/code> setups. You do not need to fire those calls in parallel \u2014 DATA Reshape routes a single event to every connected destination with the correct platform-specific name and field mapping.<\/p>\n\n<p>This plugin does not replace analytics tools like Google Analytics or Meta Pixel; it replaces the <em>fragile transport layer<\/em> underneath them. Event processing, routing, and deduplication all happen inside DATA Reshape.<\/p>\n\n<p>An active <a href=\"https:\/\/datareshape.ro\">DATA Reshape<\/a> plan is required to use this plugin. All tracking logic, integrations, and event delivery are managed through the DATA Reshape platform.<\/p>\n\n<h4>Server-side order webhook (API Events)<\/h4>\n\n<p>The \"API Events\" tab sends a server-to-server order webhook straight from your store to DATA Reshape. It exists to cover what the browser physically can't: off-site payment gateways that confirm the order minutes or hours later (or where the shopper never returns to the thank-you page), and phone\/admin-created orders that never had a browser session. The <code>checkout_completed<\/code> webhook uses the order number as its event ID, so DATA Reshape reconciles it with the browser purchase event \u2014 if one signal is missing the other fills in, with no double counting. An <code>order_canceled<\/code> event covers cancellations and refunds, and a Test mode validates real order payloads against DATA Reshape's <code>\/test<\/code> endpoint before you go live.<\/p>\n\n<h3>Features<\/h3>\n\n<h4>Core Features<\/h4>\n\n<ul>\n<li>Global enable\/disable for the integration<\/li>\n<li>DATA Reshape library integration<\/li>\n<li>Subdomain tracking support<\/li>\n<li>Fully compatible with WooCommerce HPOS (High-Performance Order Storage)<\/li>\n<\/ul>\n\n<h4>Events<\/h4>\n\n<ul>\n<li>Product Viewed<\/li>\n<li>Product Added to Cart (AJAX + POST + GET fallbacks)<\/li>\n<li>Product Removed from Cart<\/li>\n<li>Cart Viewed<\/li>\n<li>Checkout Started<\/li>\n<li>Checkout Steps (Billing Address Added, Shipping Detail Added, Payment Method Selected \u2014 legacy checkout only)<\/li>\n<li>Checkout Completed<\/li>\n<li>Consent integration \u2014 DATA Reshape natively detects most CMPs (Cookiebot, OneTrust, Termly, etc.) and Google Consent Mode v2, with no plugin-side wiring required<\/li>\n<li>Single \"Grant consent by default\" toggle for stores that don't run a CMP \u2014 fires DATA Reshape's native <code>consent_updated<\/code> push at session start so events process immediately<\/li>\n<li><code>drswc_consent_payload<\/code> filter for stores that want to drive the consent object explicitly from PHP<\/li>\n<li>Plain user data in reshape payloads (DATA Reshape hashes server-side)<\/li>\n<\/ul>\n\n<h4>API Events (Server-side)<\/h4>\n\n<ul>\n<li>Server-to-server order webhook to DATA Reshape's <code>\/webhooks\/wordpress\/event<\/code> endpoint<\/li>\n<li>Fires on a configurable order status (default Processing; pick any status your flow reaches, including custom statuses)<\/li>\n<li>Covers off-site gateway returns (confirmed minutes\/hours later, or the shopper never returns) and phone\/admin orders with no browser session<\/li>\n<li><code>checkout_completed<\/code> uses the order number as event ID so DATA Reshape deduplicates it against the browser purchase event<\/li>\n<li><code>order_canceled<\/code> event on Cancelled \/ Refunded orders<\/li>\n<li>Relays DATA Reshape's first-party <code>drespa<\/code> cookie captured on the order at checkout<\/li>\n<li>Test mode routes payloads to the <code>\/test<\/code> validation endpoint and surfaces errors\/warnings in the admin<\/li>\n<li>Optional activity log (WooCommerce-native, source <code>drswc-webhook<\/code>) with an in-admin Logs tab for setup debugging<\/li>\n<li><code>drswc_webhook_payload<\/code> filter to customize the outgoing envelope<\/li>\n<\/ul>\n\n<h4>Advanced Tracking<\/h4>\n\n<ul>\n<li>Spec-shaped products with <code>price_base<\/code> + <code>price<\/code>; <code>tax_included<\/code> \/ <code>tax_percent<\/code> only when WooCommerce tax is enabled<\/li>\n<li>Variations carry <code>parent_id<\/code> \/ <code>parent_name<\/code> \/ <code>parent_sku<\/code> \/ <code>parent_url<\/code><\/li>\n<li>Order-level and product-level coupons emitted in dedicated <code>coupons[]<\/code> arrays<\/li>\n<li>Shipping methods and payment methods emitted as structured arrays on Checkout Completed<\/li>\n<li>Categories emitted as both <code>category<\/code> (primary) and <code>categories[]<\/code> with <code>name<\/code>+<code>id<\/code><\/li>\n<li>Stock status, product type, creation timestamp, image, and gallery images<\/li>\n<\/ul>\n\n<h4>Extensibility<\/h4>\n\n<ul>\n<li><code>drswc_event_payload<\/code> \u2014 filter the full event envelope before push<\/li>\n<li><code>drswc_product_payload<\/code> \u2014 inject GTIN\/MPN\/EAN, predicted values, custom properties per product<\/li>\n<li><code>drswc_user_payload<\/code> \u2014 augment user identity (<code>pre_purchase<\/code> or <code>purchase<\/code> source)<\/li>\n<li><code>drswc_consent_payload<\/code> \u2014 replace or inject the consent object<\/li>\n<li><code>drswc_webhook_payload<\/code> \u2014 customize the server-side order webhook envelope<\/li>\n<\/ul>\n\n<h4>Reliability Enhancements<\/h4>\n\n<ul>\n<li>Handles non-AJAX add-to-cart flows<\/li>\n<li>Handles redirect-based add-to-cart (?add-to-cart=)<\/li>\n<li>Cache-safe identity hydration \u2014 PII never inlined into cacheable HTML<\/li>\n<li>Sticky user identity model (loader caches first-seen user, subsequent events inherit)<\/li>\n<li>Safe execution timing for low overhead<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<h4>Integration Setup<\/h4>\n\n<ul>\n<li>Enable Integration (master switch)<\/li>\n<li>Tracking Subdomain (the first-party host serving DATA Reshape's loader)<\/li>\n<li>Library ID<\/li>\n<li>Built-in \"Check tracking endpoint\" health check<\/li>\n<li>Access token (credential for the API Events order webhook; the webhook reuses your Tracking subdomain and Library ID)<\/li>\n<\/ul>\n\n<h4>Events<\/h4>\n\n<ul>\n<li>Master switch for browser-delivered events<\/li>\n<li>Per-event toggles (so events you handle via custom code can be disabled individually)<\/li>\n<li>\"Grant consent by default\" toggle \u2014 off by default (let DATA Reshape auto-detect your CMP \/ Google Consent Mode); on if you don't run a CMP and want events processed immediately<\/li>\n<\/ul>\n\n<h4>API Events<\/h4>\n\n<ul>\n<li>Enable order webhook (server-to-server checkout_completed)<\/li>\n<li>Send order when status becomes \u2026 (default Processing; choose the status your payment flow reaches)<\/li>\n<li>Sends order_canceled automatically on Cancelled \/ Refunded orders<\/li>\n<li>Test mode (validate real payloads against the \/test endpoint without delivering to destinations)<\/li>\n<li>Log webhook activity (adds a Logs tab showing WooCommerce's native drswc-webhook logs, scrolled to the latest)<\/li>\n<li>Requires your Tracking subdomain, Library ID, and Access token under Integration setup<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Ensure WooCommerce is installed and active<\/li>\n<li>Open the settings from either <strong>WooCommerce \u2192 Settings \u2192 DATA Reshape<\/strong> or <strong>Marketing \u2192 DATA Reshape<\/strong> (the page lives under WooCommerce Settings; the Marketing entry is a shortcut)<\/li>\n<li>Fill in your tracking subdomain and library ID (provided by DATA Reshape), enable the integration, and turn on the events you want emitted<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20support%20ga4%3F\"><h3>Does this plugin support GA4?<\/h3><\/dt>\n<dd><p>Indirectly \u2014 events are pushed to DATA Reshape's <code>window.reshape<\/code> queue, and DATA Reshape routes them to GA4 and every other connected destination with the correct platform-specific event name and field mapping. You do not need to fire <code>gtag<\/code>, <code>fbq<\/code>, or <code>ttq<\/code> calls in parallel.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20ajax%20add-to-cart%3F\"><h3>Does it work without AJAX add-to-cart?<\/h3><\/dt>\n<dd><p>Yes. It includes fallback mechanisms for redirect-based add-to-cart flows (native WooCommerce redirect to cart after adding a product).<\/p><\/dd>\n<dt id=\"does%20it%20support%20the%20block-based%20cart%2Fcheckout%3F\"><h3>Does it support the block-based Cart\/Checkout?<\/h3><\/dt>\n<dd><p>The plugin's core events (Product Viewed, Add to Cart, Cart Viewed, Checkout Started, Checkout Completed) work on both legacy and block checkouts. The mid-funnel events (Billing Address Added, Shipping Detail Added, Payment Method Selected) currently fire on the legacy (shortcode-based) checkout only \u2014 block-based checkout support is planned for a later release.<\/p><\/dd>\n<dt id=\"does%20it%20support%20server-side%20event%20tracking%3F\"><h3>Does it support server-side event tracking?<\/h3><\/dt>\n<dd><p>Yes \u2014 the \"API Events\" tab sends a server-to-server order webhook to DATA Reshape. It is not a blind CAPI mirror of the browser events; because the tracking library is first-party, browser events already get through reliably. The webhook instead covers what the browser can't: off-site payment gateways that confirm the order later (or where the shopper never returns to the thank-you page) and phone\/admin orders with no browser session. DATA Reshape reconciles the webhook with the browser purchase by order number, so the two complement each other without double counting.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20website%3F\"><h3>Will this slow down my website?<\/h3><\/dt>\n<dd><p>No. The plugin is designed with performance in mind and uses lightweight, conditional execution; if anything, your setup should see a boost in speed compared to classic integrations (Meta, TikTok and Google).<\/p><\/dd>\n<dt id=\"is%20deduplication%20handled%3F\"><h3>Is deduplication handled?<\/h3><\/dt>\n<dd><p>Deduplication is handled by DATA Reshape. The plugin focuses on exposing accurate and complete data for DATA Reshape to pickup and process onward.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>New: Server-side order webhook (API Events tab). Sends a <code>checkout_completed<\/code> event server-to-server to DATA Reshape when an order reaches a configurable status (default Processing). It covers what the browser can't \u2014 off-site payment gateways that confirm minutes or hours later (or where the shopper never returns to the thank-you page) and phone\/admin orders that never had a browser session. Uses the order number as the event ID so DATA Reshape deduplicates it against the browser purchase event; if one signal is missing the other fills in, with no double counting.<\/li>\n<li>New: <code>order_canceled<\/code> event sent on Cancelled \/ Refunded orders.<\/li>\n<li>New: The webhook reuses your existing Tracking subdomain and Library ID; the only new credential is an Access token (the former \"API key\" field, relabeled). An admin error notice appears if the webhook is enabled without an Access token.<\/li>\n<li>New: Relays DATA Reshape's first-party <code>drespa<\/code> cookie, captured on the order at checkout so it survives gateway callbacks and admin actions.<\/li>\n<li>New: The webhook sends the customer's IP (from the WooCommerce order, which resolves the real visitor IP behind proxies\/CDNs such as Cloudflare) so events aren't attributed to the store server.<\/li>\n<li>New: Test mode routes webhooks to DATA Reshape's <code>\/test<\/code> validation endpoint (nothing delivered to destinations) and surfaces the returned errors and warnings as an admin notice.<\/li>\n<li>New: Optional \"Log webhook activity\" toggle records each request and response in the WooCommerce logs (source <code>drswc-webhook<\/code>) and reveals a Logs tab in the settings for setup debugging.<\/li>\n<li>New: <code>drswc_webhook_payload<\/code> filter to customize the outgoing webhook envelope.<\/li>\n<li>New: Staging\/local safety guard. If the site address no longer matches where DATA Reshape was set up (e.g. a database copied to a staging or local site), tracking is paused automatically and an admin bar offers to resume live tracking, keep it in test mode (events sent as \"dev\", not delivered), or dismiss \u2014 so a copy can't pollute your production data.<\/li>\n<li>New: A one-time welcome notice after activation prompts you to review every settings tab and configure it as needed.<\/li>\n<li>New: A \"Realtime Analytics\" tab that opens the DATA Reshape realtime dashboard in a new browser tab.<\/li>\n<li>Change: <code>stock_status<\/code> is now emitted as a string (\"in stock\" \/ \"out of stock\") instead of a boolean, matching DATA Reshape's stored format and avoiding a coercion warning.<\/li>\n<li>Internal: the admin CSS and the static frontend JS were moved out of PHP into real <code>assets\/css<\/code> and <code>assets\/js<\/code> files, enqueued with the plugin version for cache-busting. No functional change.<\/li>\n<li>Internal: the plugin was reorganized from one large file into a thin bootstrap plus focused trait files under <code>includes\/<\/code>. It remains a single class\/singleton; no functional change.<\/li>\n<li>Compatibility: tested up to WordPress 7.0 and WooCommerce 11.0.<\/li>\n<\/ul>\n\n<h4>0.9.1<\/h4>\n\n<ul>\n<li>Fix: Add-to-cart now tracks reliably on stores where another plugin or theme intercepts the product-page button click before the standard handlers can run (volume-discount widgets, bundle plugins, one-click upsells, and similar).<\/li>\n<li>Fix: Add-to-cart no longer silently drops when <code>\/wp-admin\/admin-ajax.php<\/code> is unreachable (security-plugin allow-lists, expired nonces, ad-blocker rules, network drops). The product-page event payload now ships pre-built with the page, so the push happens synchronously.<\/li>\n<\/ul>\n\n<h4>0.9<\/h4>\n\n<ul>\n<li>Fix: Add-to-cart now tracks reliably on themes that hijack the single-product form with their own AJAX (Woodmart, custom builders, etc.). A new product-page click handler on the standard <code>.single_add_to_cart_button<\/code> fires the event before the theme's submit logic runs, regardless of which AJAX library or endpoint the theme uses. Built-in 3-second JS dedup prevents double-fire when both this path and the legacy AJAX-listener path would trigger.<\/li>\n<li>Fix: Listing add-to-cart with WooCommerce's \"Redirect to cart page after successful addition\" option enabled \u2014 the <code>?add-to-cart=<\/code> link redirected to the cart page before any client-side hook could fire, so the event was lost. A new server-side <code>woocommerce_add_to_cart<\/code> action hook now stashes the pending event in session so it emits on the cart page after the redirect.<\/li>\n<li>Fix: Variable products on classic (non-AJAX) single-product pages now emit the chosen variation as <code>products[0].id<\/code> instead of the parent product id. The POST capture path was previously ignoring <code>variation_id<\/code>.<\/li>\n<li>Internal: the new server-side hook is intentionally gated on non-AJAX, non-REST, non-admin contexts so AJAX flows (already covered client-side) don't double-fire.<\/li>\n<\/ul>\n\n<h4>0.8<\/h4>\n\n<ul>\n<li>Consent integration overhauled. The legacy \"Google Consent Mode granted by default\" toggle (emitted a <code>gtag('consent', 'update', ...)<\/code> block) and the per-event envelope <code>consent_default_grant<\/code> toggle have both been removed. A single new \"Grant consent by default\" toggle now fires DATA Reshape's native <code>consent_updated<\/code> push at session start \u2014 DATA Reshape detects most CMPs and Google Consent Mode v2 on its own, so this toggle defaults to OFF.<\/li>\n<li>Tax fields (<code>tax_included<\/code>, <code>tax_percent<\/code>) are now omitted entirely from product, coupon, and shipping payloads when WooCommerce tax is disabled (previously emitted as <code>tax_included: false<\/code>).<\/li>\n<li>Settings tabs renamed for clarity: \"Browser events\" \u2192 \"Events\", \"Server-side events\" \u2192 \"API Events\". The API Events tab is reserved for admin-recorded events (e.g. phone-call orders) and historical customer\/order backfill \u2014 not a CAPI-style server-side mirror of browser events.<\/li>\n<li>Settings also reachable under Marketing \u2192 DATA Reshape (shortcut to the canonical WooCommerce \u2192 Settings \u2192 DATA Reshape page).<\/li>\n<li>Field labels simplified: \"Server-side API endpoint\" \/ \"Server-side API key\" \u2192 \"API endpoint\" \/ \"API key\".<\/li>\n<li>Internal: narrative inline comments moved to CLAUDE.md; no functional impact.<\/li>\n<\/ul>\n\n<h4>0.7<\/h4>\n\n<ul>\n<li>Hard cutover from <code>window.dataLayer<\/code> to DATA Reshape's <code>window.reshape<\/code> API. Event names updated to the new spec (product_viewed, product_added_to_cart, cart_viewed, checkout_started, checkout_completed, etc.).<\/li>\n<li>Mid-funnel checkout events on legacy checkout: billing_address_added, shipping_detail_added, payment_method_selected.<\/li>\n<li>\"Grant consent by default\" and \"Track checkout steps\" toggles added.<\/li>\n<li>Identity emission tightened \u2014 <code>user<\/code> object sent only when logged in or in checkout with confirmed contact data.<\/li>\n<li>Variations carry parent_* fields; products emit categories[], stock status, type, created_at, image, gallery.<\/li>\n<li>Pricing decoupled from coupons \u2014 <code>price<\/code> \/ <code>price_base<\/code> are the buyer-visible regular \/ sale prices; coupons land in dedicated <code>coupons[]<\/code> arrays.<\/li>\n<li>New filters: <code>drswc_event_payload<\/code>, <code>drswc_product_payload<\/code>, <code>drswc_user_payload<\/code>, <code>drswc_consent_payload<\/code>.<\/li>\n<\/ul>\n\n<h4>0.6<\/h4>\n\n<ul>\n<li>PII cache leak fix extended to cart\/checkout pages (in addition to thankyou).<\/li>\n<li>HPOS and Cart\/Checkout Blocks compatibility declared.<\/li>\n<\/ul>\n\n<h4>0.5<\/h4>\n\n<ul>\n<li>Fixed PII leak on page-cached thankyou pages (LiteSpeed et al.) \u2014 identity now hydrated client-side from cookies.<\/li>\n<li>Removed browser-side SHA256 hashing \u2014 DATA Reshape hashes server-side.<\/li>\n<li>On-save tracking endpoint health check plus on-demand re-check button.<\/li>\n<li>wp.org update-available pill in the settings header.<\/li>\n<li>Loader URL tags the installed plugin version (<code>&amp;wp=<\/code>).<\/li>\n<\/ul>\n\n<h4>0.4<\/h4>\n\n<ul>\n<li>Fresh-install checkbox defaults flipped to off.<\/li>\n<li>Admin warning notice when the plugin is active but not configured.<\/li>\n<\/ul>\n\n<h4>0.3<\/h4>\n\n<ul>\n<li>AJAX add-to-cart detection works with third-party plugins (QuadLayers etc.) and themes whose buttons don't expose <code>data-product_id<\/code>.<\/li>\n<li>Removed the in-page dataLayer debug overlay.<\/li>\n<\/ul>\n\n<h4>0.1<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Official WooCommerce integration for DATA Reshape \u2014 first-party ecommerce event tracking delivered from your own subdomain.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/297513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=297513"}],"author":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rwky"}],"wp:attachment":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=297513"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=297513"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=297513"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=297513"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=297513"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=297513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}