GIA — GA4 Ecommerce Tracking for WooCommerce

Description

GA4 ecommerce tracking for WooCommerce

Set up WooCommerce conversion tracking in Google Analytics 4 in minutes. GIA GA4 is the specialist for one job: making GA4 WooCommerce tracking complete and reliable — every funnel event, accurate purchase data, and a server-side backup when browsers block tags.

No Tag Manager. No developer. Paste your Measurement ID and start tracking.

Why GIA GA4

The old way vs. the new way

Tracking WooCommerce without GIA GA4

  • A page-view plugin (or a pasted gtag snippet) that never understands the cart
  • Hand-wired JavaScript — or a paid developer — for every add-to-cart and checkout step
  • Broken tracking after theme, Blocks, or WooCommerce updates
  • Missing purchases from ad blockers and declined cookies — discovered weeks later when GA4 revenue does not match WooCommerce

Tracking WooCommerce with GIA GA4

  • One plugin built for GA4 + WooCommerce — the full shopping funnel, formatted the way Google Analytics 4 expects
  • Flip the switch — add your Measurement ID (and optionally an API secret) and conversions start flowing
  • Enhanced Conversions ready — hashed customer data on browser and server-side purchases for sharper attribution
  • Live in minutes — no Tag Manager containers, no custom triggers, no trial-and-error debug weekends

GIA GA4 is not a multi-platform hub. It does one thing deeply: get accurate WooCommerce ecommerce data into Google Analytics 4 (with optional Google Ads purchase conversions).

What you can track

GIA GA4 captures these WooCommerce events and sends them to GA4 with product and value data.

Browsing
* View item list — shop, category, tag, and search results
* Select item — product clicks from grids and collections
* View item — product pages, including variable product selections
* View promotion — sale products and store notices

Cart
* Add to cart — with product and value data (classic + Blocks)
* Remove from cart — cart, mini-cart, and Blocks
* View cart — cart page / Blocks cart

Checkout
* Begin checkout — with cart value and items
* Add shipping info — shipping method chosen
* Add payment info — payment method chosen
* Coupons — applied and removed
* Payment failure — declined cards, validation errors, checkout errors

Purchase & after
* Purchase — order total, tax, shipping, coupons, and full line items
* Refund — full and partial, via Measurement Protocol
* Optional — login, sign-up, subscription lifecycle (WooCommerce Subscriptions)

GA4 event names: view_item_list, select_item, view_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund, plus checkout and coupon events. Core funnel events can be toggled in Settings Events.

Trust details — why the numbers hold up

Server-side purchase backup
Browser purchase on the thank-you page, plus Measurement Protocol from your server when ad blockers or consent block the tag. Deduplicated so GA4 counts one purchase per order — not two.

Detailed commerce data
Product name, ID or SKU, categories, brand, variants, sale discount, quantity, coupons, tax, and shipping — formatted for GA4 ecommerce reports and funnels.

Enhanced Conversions
Optionally hash and send first-party customer data (email, phone, name, address) with purchase events — including server-side Measurement Protocol purchases — for better matching in Google Analytics and Google Ads.

Conversion journeys
See the page path and channel touches that led to an order — on the order edit screen, in the orders list, and optionally in the New Order admin email. Journeys show elapsed time from the first touch and time spent on each page.

UTM Reports & Link Builder
Group purchases by source/medium, campaign, or landing page, drill into matching orders and journeys, and build tracked campaign URLs from GIA GA4 UTM Reports (also under Tools).

Privacy friendly
Consent Mode V2 with sensible defaults. Integrates with Cookiebot, CookieYes, Complianz, Borlabs, Iubenda, and the WP Consent API so tracking respects visitor choices.

Modern WooCommerce
Classic themes and block cart/checkout, mini-cart, Product Collection grids, HPOS, multi-currency helpers, and WooCommerce Subscriptions renewals.

Setup that does not fight you
Setup wizard, tracking verification, settings import from GTM4WP / Google Analytics for WooCommerce / GTM Kit, pause-for-testing mode, staff and URL exclusions, and warnings when another snippet may double-fire.

Who this is for

Good fit
* Store owners who need complete GA4 ecommerce — not just a visitor counter
* Shops where GA4 shows fewer sales than WooCommerce
* EU/UK stores that need Consent Mode done properly
* Stores on block checkout that broke older tracking snippets
* Stores that also want optional Google Ads purchase conversions

Not the right fit
* You only need a lightweight hit counter on a blog
* You want Meta, TikTok, LinkedIn, or “every ad platform” in one plugin
* You already maintain a custom GTM setup you are happy with
* You need profit/COGS or ad-spend reporting inside WordPress

Start tracking WooCommerce in GA4

  1. Install GIA GA4 and open the setup wizard
  2. Paste your GA4 Measurement ID (G- or GT-)
  3. Recommended: add your Measurement Protocol API secret for purchase backup
  4. Place a test order and confirm events in GA4 Realtime

That is it. Full funnel tracking without Tag Manager.

Privacy

Tracking respects consent settings. Defaults can stay “denied” until the shopper agrees (configurable). Enhanced conversion data is hashed before send and is not stored by this plugin. You remain responsible for your store’s privacy policy and legal compliance.

External Services

This plugin connects to external services to provide analytics functionality. By using this plugin, you agree to the terms and privacy policies of these services.

1. Google Analytics 4 (required for tracking)

  • Purpose: Records ecommerce events, sessions, and conversions
  • Data sent: Page views, ecommerce events, hashed customer data (if Enhanced Conversions enabled), client/session identifiers
  • Domains: www.googletagmanager.com, www.google-analytics.com, region1.google-analytics.com
  • Terms: Google Analytics Terms
  • Privacy: Google Privacy Policy

2. GA4 Measurement Protocol (recommended)

  • Purpose: Server-side purchase and refund delivery when browser tracking is blocked
  • Data sent: Order value, line items, transaction ID, client ID, session ID, event ID; hashed customer data when Enhanced Conversions is enabled
  • Endpoint: https://www.google-analytics.com/mp/collect
  • Terms/Privacy: Same as Google Analytics above

3. Google Ads (optional)

  • Purpose: Purchase conversion signals for Smart Bidding
  • Data sent: Conversion value, transaction ID, hashed customer data (if enabled)
  • Domains: www.googletagmanager.com
  • Terms: Google Ads Terms
  • Privacy: Google Privacy Policy

4. Google Tag Manager (optional)

  • Purpose: Tag deployment when you manage GA4 through GTM
  • Domain: www.googletagmanager.com
  • Only loaded when a GTM container ID is configured

5. Google Site Kit (optional — dashboard only)

  • Purpose: Display GA4 traffic reports inside the GIA GA4 dashboard
  • Only used when Site Kit is installed and Analytics is connected
  • Plugin: Google Site Kit

Screenshots

Installation

  1. Install and activate WooCommerce
  2. Install and activate GIA — GA4 Ecommerce Tracking for WooCommerce
  3. Open the setup wizard (or go to GIA GA4 Settings)
  4. Paste your GA4 Measurement ID (starts with G- or GT-)
  5. Recommended: Add your GA4 API Secret for server-side purchase backup (GA4 Admin Data Streams your stream Measurement Protocol)
  6. Optional: enable Enhanced Conversions and Consent Mode settings for your region
  7. Visit your store in a private window, add a product to cart, and confirm events in GA4 Realtime

If you used another GA plugin before, GIA GA4 can import your Measurement ID automatically.

FAQ

Do I need Google Tag Manager?

No. Paste your Measurement ID and GIA GA4 handles the rest. Tag Manager is only needed if you already use it for other tags.

How is this different from Site Kit or Meow Analytics?

Those plugins connect your site to Google Analytics for general traffic — visits and page views. They do not track the full WooCommerce shopping journey (cart, checkout steps, purchases with product details) or send purchases from the server when browsers block tracking. GIA GA4 is the WooCommerce GA4 specialist. You can still use Site Kit alongside it for traffic charts in the dashboard.

Does this send events to Meta, TikTok, or other ad platforms?

No. GIA GA4 focuses on Google Analytics 4 (and optional Google Ads purchase conversions). If you need every analytics and ad platform in one plugin, look for a multi-platform bridge — that is a different product.

What exactly gets tracked?

The shopping path: product and category views, add to cart, cart views, checkout start, shipping and payment choices, purchases, refunds, and checkout errors. You see these as events in GA4 and can build funnel reports there. The plugin also includes a simple view-to-purchase report in WordPress.

Why does GA4 show fewer purchases than WooCommerce?

Common reasons: ad blockers, shoppers declining cookies, a cached thank-you page, or comparing live GA4 data to orders still processing. Add the API secret for server-side backup and use the built-in verification tool. GIA GA4 is designed to close that gap.

Does it work with block checkout?

Yes. Block cart, block checkout, mini-cart, and product collection grids are supported.

Is it GDPR compatible?

It includes Consent Mode, privacy defaults, and integrations with popular cookie consent plugins. You are still responsible for your store’s legal compliance.

Can I track Google Ads purchases too?

Yes. Add your Google Ads conversion ID and label in settings (optional).

Can staff view the dashboard without changing settings?

Yes. Developers can split “view analytics” and “change settings” permissions — useful for agencies.

Does it work with subscriptions?

Yes, with the WooCommerce Subscriptions plugin. Renewals without a browser session are still sent to GA4 from the server.

Does it track profit or ad spend?

No. It focuses on getting accurate sales and funnel data into GA4. Use other tools for profit and ad spend analysis.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“GIA — GA4 Ecommerce Tracking for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

0.7

  • Feature: Conversion Journey on the order edit screen — page path and channel touches from the visitor session
  • Feature: Journey column on the orders list (legacy and HPOS) with a link to the order journey panel
  • Feature: Optional conversion journey block in the WooCommerce New Order admin email (enabled by default; toggle under WooCommerce Settings Emails New order)
  • Improvement: Persist _giawc_pages, _giawc_touches, and visitor ID from the session cookie at checkout (including Blocks Store API)
  • Improvement: Enhanced conversions on Measurement Protocol purchases — hashed user_data when Enhanced conversions is enabled
  • Fix: Product (and other) pages no longer auto-refresh in a loop when a CMP re-confirms consent on load (e.g. CookiebotOnLoad) — removed the forced location.reload() on giawc_consent_updated
  • Fix: CMP consent grant is idempotent — giawcCmpGrant() no longer re-dispatches when analytics consent is already granted
  • Feature: UTM Reports — group purchases by source/medium, campaign, or landing page with orders, revenue, and AOV
  • Feature: UTM Reports drill-down lists matching orders with links to each conversion journey
  • Feature: UTM Link Builder — generate campaign URLs with standard UTM parameters
  • Feature: UTM Reports and Link Builder appear under GIA GA4 and under Tools
  • Improvement: Conversion journeys show total elapsed time since the first touch and time spent on each page

0.6

  • Fix: add_to_cart no longer double-fires on AJAX archive adds when detection is set to both — hook path skips AJAX when the JavaScript handler is active
  • Fix: view_item_list no longer re-counts products on Product Collection load-more — impressed nodes are deduplicated client-side
  • Fix: Dashboard traffic, product grid, and customer insights date windows use bound_for_backend() so legacy and HPOS order stores agree on timezone
  • Fix: Catalog sale discount on view_item / view_item_list uses the same tax mode as resolved price
  • Fix: Server-side Measurement Protocol purchase, refund, and renewal events no longer blocked by frontend-only gates (pause, role exclusion, or admin context)
  • Improvement: Cache-safe purchase tracking — thank-you page loads purchase via Ajax so page cache cannot reuse stale event data
  • Improvement: Browser purchase timing setting — match server trigger (default) to avoid counting pending or failed orders in GA4
  • Improvement: Add to cart detection setting — choose WooCommerce hooks, JavaScript, or both for theme compatibility
  • Improvement: Order edit screen meta box shows browser/MP tracking status, consent, UTMs, landing page, and GA4 IDs
  • Improvement: select_item list attribution on WooCommerce Product Collection blocks
  • Improvement: _giawc_frontend_tracked is set after the browser fires purchase, not when PHP renders the page
  • Improvement: Server-side Measurement Protocol purchase validates order status before send
  • Improvement: Admin notice recommends excluding the order-received page from full-page cache
  • Improvement: Unified tax mode — exclude tax from event values now applies to cart, checkout, variation view_item, and line-item prices (not just purchase)
  • Improvement: URL pattern exclusions — disable gtag and ecommerce scripts on matching paths (glob or regex)
  • Improvement: Custom thank-you page ID for non-standard order confirmation pages
  • Improvement: Role-based tracking exclusion beyond administrators (comma-separated role slugs)
  • Improvement: Per-page “Disable GA4 tracking” meta box on public post types
  • Improvement: FSE template-part block detection — block tracking loads when cart/checkout/mini-cart live only in block templates
  • Improvement: Product Collection re-fires view_item_list when filters or pagination update the grid
  • Improvement: All Products and cart cross-sells block list attribution
  • Improvement: Tax-correct variation prices on view_item re-fire via giawc_price
  • Improvement: Optional add_to_wishlist when YITH WooCommerce Wishlist is active
  • Improvement: Blocks checkout handlers wrapped in fault isolation so tracking errors cannot break checkout
  • Improvement: Consent script gating — Consent Mode event deferral or strong block until analytics consent
  • Improvement: Custom region consent rules (e.g. US-CA:denied, DK:denied) with priority over geo defaults
  • Improvement: CMP auto-detect on activation — Cookiebot/CookieYes script attributes pre-enabled
  • Improvement: CookieYes data-cookieyes script attribute toggle
  • Improvement: window.giawcConsent API and giawc_event_should_defer / giawc_should_track_event filters
  • Improvement: gtag defer-until-idle load strategy for PageSpeed
  • Improvement: Purchase debug logging when browser purchase is skipped
  • Improvement: Settings import from GTM4WP, Google Analytics for WooCommerce, or GTM Kit when no Measurement ID is set
  • Improvement: Admin setup checklist and import success notice
  • Improvement: get_product_data() per-request memoization reduces duplicate term, meta, and tax work on archive pages
  • Improvement: Tracking reconciliation uses SQL aggregates instead of hydrating every order object
  • Improvement: Product performance grid loads SKU from SQL instead of wc_get_product() per sold product
  • Improvement: Giawc_Tracking_Gate::should_track() memoizes per user and queried object within a request
  • Improvement: Page builder preview exclusion — skip tracking on Divi, Beaver Builder, Elementor, Bricks, and other builder edit/preview requests
  • Improvement: Pause browser tracking toggle — disable all frontend gtag and ecommerce events while server-side purchase backup, settings, and dashboard keep working
  • Improvement: Additional measurement IDs — send the same gtag config to extra comma-separated GA4 properties (agency, staging, or duplicate streams)
  • Improvement: Split analytics capabilities — separate view vs. configure access via giawc_allow_view_analytics, giawc_allow_configure_tracking, and capability filters
  • Improvement: Admin assets load only on GIA admin screens (giawc-*) for better performance
  • Improvement: gtag.js loads with async by default (unless defer-until-idle strategy is selected)
  • Improvement: LiteSpeed Cache bypass on admin AJAX and REST responses used by the dashboard

0.5

  • Fix: Blocks add_shipping_info and add_payment_info used non-existent store APIs (corrected against WooCommerce core)
  • Fix: Mini-cart remove links now tracked via data-ga4-item attribute
  • Fix: Product JSON in HTML attributes uses WooCommerce wc_esc_json() for safe encoding
  • Fix: Dequeue WooCommerce Blocks built-in Google Analytics script to prevent duplicate gtag configuration and double-fired events on block cart/checkout
  • Fix: Validate order key on thank-you page before firing browser purchase events
  • Fix: Tabbed settings panels render fields correctly (WooCommerce table wrapper compatibility)
  • Refocus: GA4 ecommerce event tracking (removed profit/COGS, journey analytics, Meta CAPI, ad spend)
  • Renamed from Trackify to GIA GA4
  • Streamlined dashboard: Overview weekly insights, Traffic, Products, Customers, Settings
  • Removed profit columns from product reports and weekly insights
  • Improvement: Measurement Protocol sends session_id, event_id, and engagement_time_msec on purchase/refund
  • Improvement: item_list_id / item_list_name persist from select_item through cart and purchase events
  • Improvement: Full items[] payloads on add-to-cart and remove-from-cart (classic + Blocks)
  • Improvement: Sale discount on GA4 line items when products are on sale
  • Improvement: view_promotion for on-sale products and store notices
  • Improvement: Blocks checkout uses official WooCommerce cart/payment stores and checkout failure events
  • Improvement: payment_failure documented as always-on (not behind Extra GA4 events)
  • Improvement: Blocks cart/checkout prices use Store API line totals and cart totals (WooCommerce minor-unit format)
  • Improvement: Accept Google Tag measurement IDs (GT-) in addition to G- IDs
  • Improvement: Blocks mini-cart tracking on all WooCommerce Blocks stores with deduplicated remove-from-cart events
  • Improvement: Per-event enable/disable toggles for core GA4 ecommerce events
  • Improvement: Cross-domain linker settings (domains + incoming parameters)
  • Improvement: Product Bundles use minimum bundle price in GA4 item data
  • Improvement: Admin warning when Google Analytics for WooCommerce or Site Kit snippet may duplicate GIA GA4 tracking
  • Improvement: Settings page reorganized into Connection, Privacy, Events, and Advanced tabs
  • Richer GA4 item data, improved server-side deduplication, and Blocks checkout tracking fixes. Recommended for all stores.

0.4

  • Improvement: Tabbed analytics dashboard (overview, products, customers)
  • Improvement: First-touch UTM attribution saved to order meta
  • Improvement: HPOS-compatible traffic source queries
  • Improvement: Server-side purchase deduplication and new vs returning customer on purchase
  • Improvement: Coupon, shipping, payment, and payment failure checkout events
  • Improvement: Product image, GTIN, hierarchical categories, and brand in item data
  • Improvement: WordPress script enqueue compliance (wp_add_inline_script)
  • Improvement: Namespace prefix giawc_ throughout

0.3

  • Improvement: WordPress.org compliance updates (prefixes, PHPCS, enqueue standards)
  • Improvement: Database query optimization and HPOS compatibility
  • Removed: Meta and TikTok tracking

0.2

  • Fix: PHP fatal error in settings API compatibility
  • Improvement: Code standards compliance

0.1

  • Initial release