The short answer
In most cases the purchase event either never fires on the confirmation page, or it fires with a missing value, currency or transaction ID. GA4 then accepts the hit but reports no revenue. Start with the checklist below, and fix one item at a time.
Checklist
- Does the event fire at all? Place a test order. In GTM Preview, check that the
purchaseevent appears on the confirmation page. - Is the name exact? GA4 expects
purchase. A name such asPurchaseororder_completewill not report revenue. - Is the value a number? Send 99.00, not "$99.00". Symbols and commas stop GA4 reading the value.
- Is the currency sent? Send a three-letter code such as USD. A missing currency can leave revenue at zero.
- Is there a transaction ID? Without it, GA4 cannot tell orders apart, and the event may be dropped on reload.
- Is it a key event? In GA4, mark
purchaseas a key event so it appears in conversion reports. - Does consent block it? If a consent banner blocks analytics, the event will not reach GA4 for visitors who said no. Check your consent settings in Preview.
Why begin_checkout fires but purchase does not
A begin_checkout event can fire on the checkout page while the purchase event is missing from the thank-you page. This usually means the confirmation page is not tracked, or its data layer values are not read. Add the purchase event to the confirmation page, not the checkout page.
Ad blockers and privacy settings
Some visitors use blockers that stop analytics requests. Some events will never reach GA4. This is normal, and it is why you should compare GA4 with your Kajabi orders, and expect a small gap, not an exact match.
How to confirm the fix
- Place one test order and check that the revenue appears in the DebugView report within a few minutes.
- Compare one day of GA4 revenue with the Kajabi orders for the same day.
Want this set up on your site? Book a free 30-minute call and I will check your tracking with you.
Book a free 30-minute call