{"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-05-25T14:33:22","modified_gmt":"2026-05-25T14:33:22","slug":"datalayer-tracking-datareshape-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/datalayer-tracking-datareshape-woocommerce\/","author":9137856,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.8","stable_tag":"0.8","tested":"6.9.4","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-05-25 14:33:22","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":0,"downloads":241,"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"}},"upgrade_notice":{"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"],"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>What's coming next: API Events<\/h4>\n\n<p>A second tab in the settings UI (\"API Events\") is reserved for data that <em>can't<\/em> flow through the storefront browser at all \u2014 admin-recorded phone-call orders, sales agent activity, and historical customer\/order backfill imported into DATA Reshape via API. This is <strong>not<\/strong> a CAPI-style server-side mirror of the browser events (those already get through reliably thanks to the first-party loader); it covers genuinely different data sources. Configuration UI is dormant in this version and will be wired up in a later release.<\/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>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<\/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<\/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>Reserved for the upcoming admin-recorded events sync (phone-call orders, etc.) and historical customer\/order backfill. Not yet active.<\/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%20%2F%20capi-style%20event%20mirroring%3F\"><h3>Does it support server-side \/ CAPI-style event mirroring?<\/h3><\/dt>\n<dd><p>No, and it intentionally doesn't need to. DATA Reshape's tracking library is served from a first-party subdomain on your own site, so browser events get through reliably without being blocked by ad blockers or browser privacy features. The forthcoming \"API Events\" tab is for a different purpose: syncing data that doesn't flow through the storefront browser at all \u2014 admin-recorded phone-call orders and historical customer\/order backfill.<\/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 clasic integrationg (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>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:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/297513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=297513"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rwky"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=297513"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=297513"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=297513"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=297513"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=297513"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=297513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}