Common reasons purchase tracking doesn’t fire
- GTM container not published - You imported the container but didn’t click Submit → Publish.
- GTM snippet not installed on your site - The GTM code needs to be in your site’s <head> and <body>.
- Thank-you page is on a different domain - If your checkout redirects to a third-party payment processor’s confirmation page, GTM isn’t installed there and can’t fire.
- Order data is not in the dataLayer - The GA4 purchase event needs
transaction_id,value, anditemsin the dataLayer. If your site doesn’t push this data, the tag fires but sends empty values. - WooCommerce order-received page detection - WooCommerce appends
/order-received/with an order ID to the URL. If your trigger uses an exact URL match instead of “contains”, it won’t fire. - Shopify checkout is on a restricted domain - Shopify’s checkout runs on
checkout.shopify.com, where you cannot install custom GTM containers. You must use Shopify’s native conversion tracking or Customer Events for checkout tracking. - WooCommerce order-received URL pattern - WooCommerce uses
/checkout/order-received/{id}/as the thank-you page URL. Your trigger should use Page Path containsorder-receivedrather than an exact match.
Step-by-step debugging checklist
- Verify GTM is installed - Visit your site, right-click → View Page Source, search for “GTM-”. If you don’t see it, GTM isn’t installed.
- Check GTM Preview mode - In GTM, click Preview. Navigate your site and trigger the event. Look for your tag in the Tags Fired section.
- Check the trigger - If the tag shows as “Not Fired”, click on it to see which trigger conditions aren’t met.
- Verify the dataLayer push - On the thank-you/order-received page, open the browser console and type
dataLayer. Look for apurchaseevent withtransaction_id,value, anditems. - Check the GA4 tag configuration - Make sure your GA4 Event tag uses the correct dataLayer variable names for transaction_id, value, currency, and items.
WordPress / WooCommerce-specific issues
WooCommerce’s thank-you page URL follows the pattern /checkout/order-received/12345/?key=wc_order_abc123. Use a Page Path trigger with the condition “contains order-received” to reliably detect this page.
For the dataLayer purchase event, you need a WooCommerce-to-dataLayer integration. Plugins like “GTM4WP” or custom code in your theme’s functions.php can push order details (transaction ID, revenue, items) into the dataLayer on the order-received page.
How to verify it’s working
- Open GTM Preview/Debug mode
- Navigate to your site
- Trigger the event (complete a test purchase)
- Check the GTM debug panel - your tag should appear under “Tags Fired”
- Check GA4 DebugView (GA4 → Admin → DebugView) to confirm the event arrived
Still didn’t work?
Our team can help. Describe what’s happening and we’ll get back to you within 24 hours.