Understanding refunds in Google Analytics

Google Analytics introduced a cool new feature with its Enhanced Ecommerce upgrade for ecommerce tracking a while back, but it hasn’t gotten the traction it deserves. That feature is the ability to track your refunds in Google Analytics.

This is a powerful thing because it helps Google Analytics provide data that’s more complete and more accurate. If the numbers that you’re working with as an analyst, or a marketer, are the same as the ones that finance is working with, then your insights will not only be more powerful, but the high-ranking members of your organization might actually listen to them. A CFO or merchandising executive skeptical in your claims about the value of marketing activities.

How does it work?

Tracking of a refund in Google Analytics can happen in two ways:

  • As a hit to the Measurement Protocol when a transaction happens (for example, on your website through the analytics.js tracking code).
  • Through refund data imported into Google Analytics after the fact, via the Management API.

The first option is particularly appropriate for the case where your site processes refunds itself — especially in cases where no verification or approval of the refund is required. For example, if your ecommerce platform allows customers to cancel an order right after they place it and before it ships, then sending a request to mark the transaction as refunded is awesome.

But many refunds won’t happen that way. People often order online but process a refund over the phone. In other cases, they return something online, but the return has to be verified and approved in some other system. In these cases, it’s not appropriate for the website to automatically track  the return, because it either doesn’t happen there, or may not be a valid return.

There are a couple of solutions here. The first is to actually instrument the Measurement Protocol into your external system to track returns when they’re approved. That’s often not possible, because many order management systems won’t allow you to make the necessary changes, so unless you control the code of the system you’re out of luck. There’s also a cost associated with making such changes. In these cases, it makes more sense to use the data import capabilities of Google Analytics to routinely upload refund data that includes information on returns, fraud and order cancellations.

There are a few ways to do this. The first is the labor-intensive approach of formatting this data on a regular basis and uploading it through the Google Analytics user interface. The next option is to build a connection to the API that will push data into Google Analytics, though this has significant costs and the added expense of maintenance. The third option is to use a solution that’s designed to do this automatically (like ours, Analysis Engine).

Where do I see my refunds?

One important thing to note is that pushing refund data into Google Analytics does not affect your original revenue numbers. The Revenue metric in GA will still report the same data as it would had you never sent refund data into GA.

Instead, the Enhanced Ecommerce reports show a new column, Refund Amount, which contains the amount of revenue refunded. There are also available metrics for items refunded and the number of refunds that happened.


There’s an important thing to note here: refunds are considered to have occurred whenever the data was pushed, either as a hit or a data import, into Google Analytics. This becomes important when you want to show your adjusted revenue for a particular time period.

How do I show adjusted revenue?

Because Refund Amount is its own metric, and is not subtracted automatically from Revenue, you’ll need to do a little math to get your adjusted refund data. The naive approach is to simply subtract your refund amount from your revenue to get your adjusted revenue number.

This can be done through a reporting tool; for example, if you deliver reports in Microsoft Excel, you can use Analysis Engine’s Reporting Manager to pull your revenue and refund amounts into Excel, and in a third column subtract the refund from revenue to get an adjusted revenue number for the reporting period.

I call this the naive approach because what you’re really getting if you do this is something more akin to a portion of a cash flow report for the digital business. Refunds can happen days or weeks after the transaction, and whenever they’re reported to Google Analytics is the time period for which they’ll show up in reports. So our adjusted revenue number here may include refunds that were not refunds on the reported revenue. We’d be looking at the amount of revenue that was collected, minus the amount of money that was returned.

If you want a report that shows you how much revenue you earned on a particular day, for example, adjusted for refunds that happened after that day, then you need to do a bit of heavy lifting and map refunded transactions to the date the transaction originally happened.

With refunds, though, it’s clear that Google Analytics comes closer to the actual data that your executives are going to care about — not just ‘how many orders did we get’, but ‘how many of those orders stuck’ and ‘how much did we actually make, after adjustments’?

Image credit: Kool Cats Photography

2 thoughts on “Understanding refunds in Google Analytics

  1. Can you elaborate on whether GA has support to attribute refunds to the exact day that the original order occurred on?

Leave a Reply to Colin Temple Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.