- GA4
- Ecommerce Tracking
- Google Tag Manager
- Troubleshooting
GA4 Not Showing Revenue? How to Fix Zero Revenue
By Dolphin Analytics team · Published 29 Sept 2026
TL;DR
GA4 not showing revenue, while purchases still appear, almost always means the purchase event arrives without usable revenue parameters. Google calculates revenue from the event-level value and currency parameters, and Item revenue from price and quantity inside the items array, so a value sent as text, a missing currency or an empty items array leaves revenue blank. We trace and fix this for client stores most weeks.
Olamide Sule, founder of Dolphin Analytics: a digital analytics expert based in London delivering solutions for agency and in-house clients.
GA4 not showing revenue is one of the ecommerce faults we fix most often in tracking work for agencies and in-house teams. The pattern is always the same: purchases arrive in GA4, but revenue reads zero or far too low, usually after a theme, app or checkout change. Store owners end up pulling their hair out with data challenges that the reports cannot explain. Below is the order we check things for clients, written as steps you can run on your own property. If the property itself needs rebuilding, our GA4 setup service covers that.
Why does GA4 show purchases but no revenue?
GA4 shows purchases with no revenue when the purchase event reaches Google
without usable revenue parameters. Google’s troubleshooting page lists what
revenue needs on the purchase event: an event-level value, currency,
transaction_id and items, plus an item_id or item_name on each item
(Fix missing revenue data).
The same page is precise about format. The value parameter must be a number
rather than a string, with no quotation marks and no currency symbol, set at
the event level of the purchase event. The currency parameter must be a
three-letter ISO 4217 code sent as a string, also at the event level
(Fix missing revenue data).
Google’s events reference adds that currency is required whenever you set
value
(GA4 events reference).
That is why the purchase count and the revenue figure can fail separately. A purchase event can reach GA4 while the parameters revenue depends on are missing or malformed, and those parameters are where the fix lives.
Which revenue figure is empty: the order total or Item revenue?
GA4 holds two kinds of revenue, and knowing which one is empty tells you
where to look. Google’s troubleshooting guide splits the fault the same way:
event-level revenue comes from value and currency, while item-level
revenue comes from each item’s price and the event’s currency
(Fix missing revenue data).
The Ecommerce purchases report shows Item revenue, which Google defines
as the total revenue from items only, excluding tax and shipping, calculated
from the quantity and price parameters in the items array
(Ecommerce purchases report).
A store can therefore show a healthy order total in one report and zero
Item revenue in another. When we audit accounts, an empty or half-filled
items array is the fault we find behind that split most often.
How do you check the purchase event in DebugView?
DebugView shows every parameter on the purchase event as it arrives, so it answers the question in one test order. Work through these steps:
- Turn on debug mode with Tag Assistant or GTM Preview. In GTM, click Preview, enter your store’s URL and connect.
- In GA4, open Admin, then under Data display click DebugView (DebugView).
- Place a test order on the store, using a discount code or a low-price product if you need to.
- Find the
purchaseevent in the DebugView stream and click it to see its parameters. - Check each one against the list below. Stop at the first failure.
| Parameter | What a working event shows | What breaks revenue |
|---|---|---|
value | A plain number, such as 49.99 | Text in quotes, a currency symbol, or no value at all |
currency | A code such as GBP | Missing, or sent inside the items only |
transaction_id | The real order number | Missing or blank |
items | An array with each product | Empty, or missing entirely |
price (per item) | A plain number | Text, a currency symbol, or missing |
item_id or item_name | Present on every item | Missing on some or all items |
Every row comes from Google’s own checklist (Fix missing revenue data). If DebugView itself shows nothing, fix that first; our guide to GA4 DebugView not working covers it.
What does a correct GA4 purchase event look like?
A correct GA4 purchase event sends value as a number, currency as a code,
the order number as transaction_id, and an items array where every product
carries its price and quantity. Google’s ecommerce guide for Tag Manager
clears the previous ecommerce object first, then pushes the purchase
(Measure ecommerce, Tag Manager).
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "ORDER_NUMBER",
value: 49.99,
currency: "GBP",
items: [
{
item_id: "SKU_123",
item_name: "Product name",
price: 49.99,
quantity: 1
}
]
}
});
Compare that with the shapes we see on broken stores. A theme that prints
the formatted price writes value: "£49.99", which is text with a currency
symbol. A checkout app that only sends the order number and total leaves
items: []. A developer who puts currency inside each item, and nowhere
else, misses the event-level requirement. All three appear in Google’s list
of causes
(Fix missing revenue data).
Google’s guidance also says to set value to the sum of price times quantity
for all items, without shipping or tax
(GA4 events reference).
Follow that and GA4 revenue will sit below the order totals in your store
admin by design.
How do you fix revenue tracking in Google Tag Manager?
In Google Tag Manager, revenue goes missing when the GA4 event tag does not read the ecommerce object, or when a variable points at the wrong key. Open the purchase tag and check these settings, in this order:
- Go to Tags, open your purchase tag, and confirm the tag type is
Google Analytics: GA4 Event with the event name
purchase(Measure ecommerce, Tag Manager). - Under More Settings, then Ecommerce, tick Send Ecommerce data and set Data source to Data Layer (Measure ecommerce, Tag Manager).
- If the tag maps parameters by hand instead, open each Data Layer Variable
under Variables. Set Data Layer Version to Version 2, which
reads a name such as
ecommerce.valueas nested keys (User-defined variable types). Version 1 treats the dots as part of one key name, so the variable returns nothing. - Check the trigger is a Custom Event trigger whose event name matches
the pushed event exactly,
purchase(Custom event trigger). - Run GTM Preview, place a test order, click the
purchaseevent in the left-hand list, and open the Data Layer tab to see the values the tag received (Preview and debug containers).
Step 5 separates a GTM fault from a site fault. If the data layer already
holds value as text or an empty items array, no tag setting will fix it: the
site has to push the right shape. Our
GA4 ecommerce data layer guide covers that
push in full.
Why is GA4 not tracking revenue on Shopify?
On Shopify, revenue usually goes missing in the step that maps Shopify’s checkout data onto the GA4 purchase event. Shopify’s own route for GA4 is the Google & YouTube sales channel (Shopify Help Center). Stores that need more control add a custom pixel instead, which collects customer events on pages such as checkout and post-purchase (Custom pixels).
A custom pixel has to do the mapping itself. Shopify’s checkout_completed
event carries the total at event.data.checkout.totalPrice.amount, the
currency at event.data.checkout.totalPrice.currencyCode, the order ID at
event.data.checkout.order.id and the products at
event.data.checkout.lineItems
(checkout_completed).
A pixel that sends a GA4 purchase without copying those fields into value,
currency, transaction_id and items records the order with no revenue.
Shopify also notes that on stores with upsells or post-purchase offers,
checkout_completed fires on the first upsell page and not again on the
Thank you page
(checkout_completed).
A setup that waits for the Thank you page misses those orders entirely. Our
Shopify checkout tracking guide
covers the wider checkout faults.
Why is GA4 revenue showing, but lower than it should be?
Low revenue, as opposed to zero, often has an ordinary cause. Google’s data freshness page says data processing can take 24 to 48 hours, and report data may change during that time (Data freshness). Yesterday’s revenue can look short until processing finishes.
Currency is the next check. GA4 displays revenue in the property’s global
currency type, converts other currencies using the prior day’s exchange
rate, and uses USD by default
(Currency reference).
A UK store that never changed the default sees its revenue converted into
dollars, which looks wrong beside the store admin. Shipping and tax sit
outside value under Google’s guidance, as covered above.
If GA4 still reads far below the store after those checks, the gap is probably missing purchases rather than missing revenue. Our guides on GA4 and Shopify discrepancies and Klaviyo and GA4 revenue gaps cover those cross-platform cases.
How do you prove the revenue fix worked?
Prove the fix with the same checks, in reverse. Place a test order with GTM
Preview connected and confirm the purchase tag fires once. In DebugView,
confirm the purchase event carries value as a number, a currency code,
the real transaction_id and a filled items array
(DebugView).
Then wait for processing and look at real orders. In GA4, open Explore, start a Free form exploration, add the Transaction ID dimension and Item revenue metric, and compare a day of orders against the store admin (Free-form exploration). Rows with an ID and no revenue point back to the table in the DebugView section. If the same order ID appears twice, you have a different fault; our GA4 duplicate purchase events guide works through it.
When to call someone
Call someone when the fault sits in code you cannot change, or when the checks point at more than one cause. The thresholds we use: the data layer pushes the wrong shape and nobody on the team owns the theme or checkout code; revenue is missing on some orders but not others; a Shopify custom pixel or third-party checkout sends its own events; or revenue is fixed in DebugView but still wrong in reports after processing has caught up.
Missing revenue is not always a tag fault, either. Here is what one engagement turned up.
For a subscription retailer, we found more than £5M of subscription revenue that no marketing tool could see, so spend could finally be planned against the whole business.
We fix GA4 revenue tracking for agencies and in-house teams, from the data layer push through GTM to the reports. If you want a quick outside view first, Sonar shows which tags and pixels load on your store the way a visitor’s browser sees them. Tell us what’s broken, or book a call. If you already know you need someone inside the account, our paid GA4 audit reviews your GA4 and GTM setup and ends in a written findings report.
Frequently asked
Why does GA4 show purchases but no revenue?
A purchase event can reach GA4 while the parameters revenue depends on are missing or malformed, so purchases appear and revenue stays blank. Revenue needs an event-level value sent as a number, a currency code, a transaction_id and an items array. Open DebugView, place a test order and click the purchase event to see which of those is missing.
Why is GA4 Item revenue zero when purchase revenue shows?
Google calculates Item revenue from the price and quantity parameters inside the items array, not from the event-level value. If the items array is empty, or each item lacks price, quantity, or an item_id or item_name, the event total can show while Item revenue stays at zero.
Why is GA4 not tracking revenue on Shopify?
On Shopify, GA4 usually runs through the Google & YouTube app or a custom pixel. A custom pixel has to map Shopify's checkout_completed data (the checkout total, its currency code, the order ID and the line items) onto the GA4 purchase parameters itself. A pixel that sends the purchase without that mapping records the order with no revenue.
How long does GA4 take to show revenue after a fix?
Reports lag while Google processes the data, and figures can change during that time, so the reports are the last place to look. Check the fix straight away in DebugView, which shows the purchase event and its parameters as they arrive, then confirm revenue in the reports once processing has caught up.
Who can fix GA4 revenue tracking for us?
We fix GA4 revenue tracking for agencies and in-house teams, from the data layer through GTM to the reports. If the checks in this guide do not settle it, tell us what's broken through the form on our homepage or book a call. If you already know you need someone inside the account, our paid audit reviews your GA4 and GTM setup and ends in a written findings report.