• 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:

  1. Turn on debug mode with Tag Assistant or GTM Preview. In GTM, click Preview, enter your store’s URL and connect.
  2. In GA4, open Admin, then under Data display click DebugView (DebugView).
  3. Place a test order on the store, using a discount code or a low-price product if you need to.
  4. Find the purchase event in the DebugView stream and click it to see its parameters.
  5. Check each one against the list below. Stop at the first failure.
ParameterWhat a working event showsWhat breaks revenue
valueA plain number, such as 49.99Text in quotes, a currency symbol, or no value at all
currencyA code such as GBPMissing, or sent inside the items only
transaction_idThe real order numberMissing or blank
itemsAn array with each productEmpty, or missing entirely
price (per item)A plain numberText, a currency symbol, or missing
item_id or item_namePresent on every itemMissing 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:

  1. 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).
  2. Under More Settings, then Ecommerce, tick Send Ecommerce data and set Data source to Data Layer (Measure ecommerce, Tag Manager).
  3. 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.value as nested keys (User-defined variable types). Version 1 treats the dots as part of one key name, so the variable returns nothing.
  4. Check the trigger is a Custom Event trigger whose event name matches the pushed event exactly, purchase (Custom event trigger).
  5. Run GTM Preview, place a test order, click the purchase event 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.

Talk to us

Where does your data stop making sense?

Tell us what's broken, or grab a time. Either way you hear from a person, not a sales script.

Send a message

We reply within one working day.

Add a few details (optional) The more we know up front, the faster we can tell you what's wrong and how to fix it.

Protected by an invisible spam check. Prefer email? olam@dolphinanalytics.co.uk

Calendly · 30 min

Book a call

Thirty minutes on Google Meet with the founder.

The booking lands on the same record as your message.