← Back to Blog

GA4 Purchase Event Not Tracking: Complete Fix Guide

Updated January 20258 min read

GA4 shows zero conversions even though you're getting orders. Here's exactly why it happens and how to fix it in your GTM container and data layer.

The Problem

You're getting orders in Shopify or WooCommerce, but GA4 shows zero purchase events. Or worse, it shows some conversions but way fewer than your actual sales. Every ecommerce store owner hits this at some point, and it's always one of four issues:

  1. Your purchase event isn't firing at all
  2. The data layer isn't configured on your checkout page
  3. Your GTM trigger is set to the wrong page
  4. Required event parameters are missing or wrong

Why This Happens

GA4 relies on ecommerce tracking through Google Tag Manager. For purchase events to work, three things must happen:

  1. Data layer must push purchase data: Your order confirmation page needs to output order details (transaction ID, value, currency, items) into the data layer. Most Shopify and WooCommerce stores don't do this by default.
  2. GTM trigger must fire: You need a trigger that activates on your thank-you page. Common trigger conditions: URL contains "/thank-you" or "/order-received", or a dataLayer event called "purchase".
  3. GA4 tag must send correct parameters: The GA4 purchase event tag needs transaction_id, value, currency, and items array. If any are missing, GA4 won't record the conversion properly.

If any of these three steps fail, you get zero conversions in GA4.

How to Diagnose the Problem

Step 1: Check Your Data Layer

Complete a test order on your site. On the order confirmation page, open your browser's developer console (F12 or right-click → Inspect → Console tab). Type:

dataLayer

Press Enter. You should see an array of objects. Look for an object that contains "purchase" or "ecommerce" data with transaction_id, value, currency, and items.

Bad: Empty or Missing
[{
  "gtm.start": 1234567890
}]

// No purchase data = broken
Good: Has Purchase Data
[{
  "event": "purchase",
  "ecommerce": {
    "transaction_id": "12345",
    "value": 49.99,
    "currency": "GBP"
  }
}]

If your data layer is empty or missing purchase data, that's your problem. Your site isn't pushing ecommerce data to the data layer. For Shopify, you need to add a data layer script to your checkout settings or use an app. For WooCommerce, you need a plugin or custom code on the thank-you page.

Step 2: Test Your GTM Trigger

Open Google Tag Manager and click "Preview" in the top right. This opens GTM Preview Mode. Go to your site and complete another test order. Watch the preview panel as you land on the thank-you page.

Look for your GA4 Purchase Event tag in the "Tags Fired" section. If it doesn't fire, your trigger is broken. Common problems:

  • Trigger condition doesn't match your actual thank-you page URL
  • Trigger waits for a dataLayer event that never happens
  • Trigger has conflicting filters (e.g., fires only on homepage but expects checkout URL)

Fix it by adjusting your trigger conditions to match your actual checkout flow. If your thank-you page URL is example.com/checkout/thank-you, set your trigger to fire when Page URL contains "/thank-you".

Step 3: Validate Event Parameters

Even if your tag fires, GA4 won't record conversions if required parameters are missing. In GTM Preview Mode, click on your GA4 Purchase tag and expand the "Event Parameters" section. You should see:

  • transaction_id: Unique order ID (e.g., "12345")
  • value: Order total as a number (e.g., 49.99)
  • currency: Currency code (e.g., "GBP")
  • items: Array of products purchased

If any are missing or show "undefined", your GTM tag isn't pulling the right variables from the data layer. You need to create or fix GTM variables to extract this data correctly.

Step 4: Check GA4 DebugView

Open GA4 and go to Admin → DebugView. With GTM Preview Mode still active, complete another test order. DebugView shows events in real-time as GA4 receives them.

Look for the "purchase" event. Click on it and verify all parameters appear correctly. If you see the event in DebugView with correct data, your tracking works—it just takes 24-48 hours for conversions to appear in standard GA4 reports.

How to Fix GA4 Purchase Tracking

Fix 1: Add Data Layer Code (Shopify)

If you're on Shopify and your data layer is empty, you need to add ecommerce data layer code to your checkout. The easiest way is using the Shopify additional scripts section (Settings → Checkout → Order status page → Additional scripts).

Add a script that pushes order data to the data layer in the correct format. Many GTM apps for Shopify handle this automatically. Alternatively, hire a developer to write custom data layer code.

Fix 2: Configure GTM Purchase Tag

In GTM, create or edit your GA4 Event tag:

  1. Tag Type: GA4 Event
  2. Configuration Tag: Select your GA4 Configuration tag
  3. Event Name: purchase
  4. Add event parameters: transaction_id, value, currency, items (pull from data layer variables)
  5. Trigger: Fire on thank-you page or purchase dataLayer event

Save, test in Preview Mode, and verify the event fires with correct parameters.

Fix 3: Mark Purchase as Conversion

In GA4, go to Admin → Events. Find the "purchase" event in your events list. Toggle "Mark as conversion" to ON. Without this, purchase events fire but won't count as conversions in your reports.

Common Mistakes to Avoid

  • Wrong currency: Sending "USD" when your store uses "GBP" causes revenue reporting issues. Always match your store's currency.
  • Hardcoded values: Never hardcode transaction_id or value in GTM. Always pull dynamically from the data layer.
  • Firing on wrong page: Make sure your trigger fires only on the order confirmation page, not on every page or the checkout page before order completion.
  • Duplicate tags: If you have multiple GA4 purchase tags, you'll get duplicate conversions. Keep only one.
Still Not Working?

I can audit your GA4 and GTM setup in 2 minutes and send you a Loom showing exactly what's broken and how to fix it. No calls, no hassle.

Related Guides