Dealing with refunds in Google Analytics

If your business issue lot of refunds on a daily/weekly/monthly basis (quite common in case of large online stores) then you need to adjust your sales data accordingly in Google Analytics.

So that you can reflect the refunded sales amount in your ecommerce reports.

Failing to do so, will create data discrepancies between your GA sales data and shopping cart sales data.

So as a result, your shopping cart may report a sale of $10k in the last one month while your GA may report a sale of $18k in the last one month.

Almost all popular shopping carts (like Shopify) automatically adjust the sales data to reflect refunds (remove refunded sales amount from total sales).

But this is not the case with Google Analytics.

Once a customer has placed an order on the website, GA record that transaction.

If later, the customer demand for a refund and the refund is issued, the refunded sales amount does not automatically reflect back in GA ecommerce reports.

You need to manually or programmatically upload refund data into GA, in order to adjust your sales data.

Difference between refunding a transaction and reversing a transaction

Technically speaking and in the context of Google Analytics both refund and reverse are same thing.

Whether you are refunding a transaction or reversing a transaction, you are removing the sales associated with that transaction.

We use the word ‘reverse’ to remove sales amount associated with all those e-commerce transactions which are: unfulfilled orders and/or test orders. 

We use the word ‘refund’ to remove sales amount associated with all those e-commerce transactions which are requests for refund from our real customers.

You can refund/reverse ecommerce transactions:

#1 by making changes to your ecommerce tracking code.

I explained this method in great detail in the article: How to reverse ecommerce transaction in Google Analytics

#2 by using ‘refund data import’ feature in Google Analytics

#3 by using Google Analytics Management API

#4 by using measurement protocol

#5 by using a third party tool

In this article I am going to explain, how to refund/reverse ecommerce transactions via ‘refund data import’ feature in Google Analytics.

Get the E-Book (37 Pages)

Learn to read e-commerce reports book banner

Get the E-Book (104 Pages)

Difference between partial and full refund in Google Analytics

Through ‘refund data import’ feature, you can issue full refund or partial refund in Google Analytics.

What you actually refund/remove is the sales associated with a transaction.

Transaction is a purchase order placed on your website.

People can buy one or more products in a single transaction.

So a transaction may contain one or more products.

In case of full refund, you reverse/remove the full sales amount associated with a transaction in your GA ecommerce reports.

In other words, in case of full refund you reverse/remove the sales amount associated with all of the products which were purchased in a single transaction.

In case of partial refund, you reverse/remove only certain sales amount associated with a transaction in your GA ecommerce reports.

In other words, in case of partial refund you reverse/remove sales associated only with certain products (which were part of the transaction), in your GA ecommerce reports.

Criteria for using ‘refund data import’ feature in Google Analytics

Following conditions must be met, before you can use ‘refund data import’ feature in Google Analytics:

#1 You are using Universal Analytics tracking code (analytics.js)  and not the classic Google Analytics tracking code (ga.js) on your website.

Related Article: Difference between Google Analytics and Universal Analytics

#2 The transactions that you want to refund must have been set in the enhanced ecommerce format. In other words, you have already set up enhanced ecommerce tracking on your website.

You can not refund the transactions via ‘refund data import’ feature, which were set in the standard ecommerce format.

Following is an example of e-commerce transaction, which is set in the enhanced ecommerce format:

ga('ec:setAction', 'purchase',{
 
// actionFieldObject stores action data
 
 'id': '[Server Variable]', // Transaction id - Type: string
 
 'affiliation': '[Server Variable]', // Store name - Type: string
 
 'revenue': '[Server Variable]', // Total Revenue - Type: numeric
 
 'tax': '[Server Variable]', // Tax - Type: numeric
 
 'shipping': '[Server Variable]', // Shipping - Type: numeric
 
 'coupon': '[Server Variable]' // Order/Transaction coupon - Type: string
 
});

Following is an example of e-commerce transaction, which is set in standard ecommerce format:

ga(‘ecommerce:addTransaction’, {
‘id’: ‘1234’, // Transaction ID. Required.
‘affiliation’: ‘skinny jeans’, // store name.
‘revenue’: ‘28.8’, // total revenue.
‘shipping’: ‘10.00’, // Shipping.
‘tax’: ‘1.89’ // Tax.
});

If you wish to refund transactions which were set in the standard ecommerce format then do it by making changes to your ecommerce tracking code as explained in this article:  How to reverse ecommerce transaction in Google Analytics

#3 The transaction ID that you use for the refund purpose must be the original ID and not the one modified by a GA view filter.

#4 The upload file that you use to import refund data into GA, should not contain data for both full and partial refunds.

You should not upload full and partial refunds via the same upload file.

Use separate upload file, for full and partial refunds.

#5 You can only refund those transactions which were originally reported in the last 6 months.

Issuing full refund in Google Analytics

Follow the steps below for issuing full refund in GA:

Step-1: Navigate to the ‘Admin’ section of your GA view.

Step-2: Click on the ‘Data Import’ link under Property section:

data import link

Step-3: Click on ‘+ New Data Set’ button and then select ‘Refund data’ as data set type:

new data set

refund data

Note: Data set is container that holds the data you want to upload to GA.

Step-4: Name your data set:

data set name1

Step-5: In the next step, define your data set schema (schema is the format in which you want to upload the data to GA):

data set schema1

In order to issue full refund, we need only the ‘Transaction ID’.

That’s why I did not select any other column from the ‘Any number of these columns may be provided’ drop down menu.

Step-6: Click on the ‘Get schema’ button:

get schema button

Note: If you wish to upload refund data via GA management API then follow the steps below:

#1 click on the ‘Get Custom Data Source ID (for API users)’ button

#2 make a note of the ‘Custom Data Source ID

#3 follow the instructions on this page: https://developers.google.com/analytics/devguides/config/mgmt/v3/data-import

Step-7: Download the schema template (which is a CSV file) by clicking on the ‘Download Schema Template’ button and then click on the ‘Done’ button twice to create your new data set:

download schema template

Step-8: Open the schema template file you downloaded from GA into Excel and then add and format your refund data according to the schema defined in the template:

transaction data

In order to issue a full refund, upload only transaction IDs via the schema template file.

Each transaction is identified through a unique ID known as the transaction ID.

Here ‘ga:transactionId is the API name.

When we access Google Analytics via API, we use the API name of a dimension / metric / segment instead of the web view name (also known as UI name). 

The API name of ‘transaction id’ is: ‘ga:transactionId’

Here we are accessing GA API via ‘refund data import’ feature.

Step-9: Once you have finished adding the transaction data, save the schema template file as a CSV file. Your file is now ready to be uploaded to Google Analytics.

Step-10: Again navigate to the ‘Admin’ section of your GA view, Click on the ‘Data Import’ link under Property section and then click on the ‘Manage uploads’ link:

manage uploads link

Step-11: Click on the ‘upload file’ button to upload the refund data to GA:

upload file button

Step-12: Wait for the status to read ‘completed’:

status completed

The green right sign denotes that the refund data upload was successful.

Once you have uploaded the refund data, you can see it in the ‘Product Performance and ‘Sales Performance’ report under the columns: ‘Product Refund amount’ and ‘Refund Amount:

product sales report

refund amount

You can also create a custom report in GA,  just for analysing refund data.

Issuing partial refund in Google Analytics

Follow the steps below for issuing partial refund in GA:

Step-1: Navigate to the ‘Admin’ section of your GA view.

Step-2: Click on the ‘Data Import’ link under Property section.

Step-3: Click on ‘+ New Data Set’ button and then select ‘Refund data’ as data set type.

Step-4: Name your data set:

data set name2

Step-5: In the next step, define your data set schema, like the one below:

data set schema2

In order to issue a partial refund, select: ‘Product SKU’ and ‘Quantity Refunded’ from the ‘Any number of these columns may be provided’ drop down menu.

‘Product SKU’ is the product code which is used to uniquely identify a product.

‘Quantity refunded’ is the total number of units refunded for a product.

Note: The refunded revenue is calculated automatically by Google, based on the product price and quantity refunded.

Step-6: Click on the ‘Get schema’ button.

Step-7: Download the schema template by clicking on the ‘Download Schema Template’ button and then click on the ‘Done’ button twice to create your new data set:download schema template2

Step-8: Open the schema template you downloaded from GA into Excel and then add and format your refund data according to the schema defined in the template:partial refund data

To issue a partial refund, add: transaction id, product SKU and quantity refunded, to each row of the downloaded schema template file.

Here,

ga:transactionId is the API name for ‘Transaction ID’

ga:productSku is the API name for ‘Product SKU’

ga:quantityRefunded is the API name for ‘Quantity Refunded’

Note: If you are using ‘product SKU‘ in the downloaded schema template file then it is mandatory to use ‘Quantity Refunded‘ with it.

Step-9: Once you have finished adding the data for partial refund, save the schema template file as a CSV file. and then click on the ‘Manage uploads’ link > ‘Upload file‘ button to upload the refund data to GA.

Step-10: Wait for the status to read ‘completed’ and then check the ‘Product Performance’ and ‘Sales Performance’ reports to see the uploaded refund data.

Overriding the original reported product price and transaction revenue

If you want to override the original reported product price then add ga:productPrice column while defining your data set schema:

product price

And then later provide the product price in the downloaded schema template for upload to GA:

product price data

Similarly, if you want to override the original reported transaction revenue then add ga:transactionRevenue column while defining your data set schema:

product revenue

And then later provide the revenue in the downloaded schema template for upload to GA:

revenue data

Important points to remember:

#1 Once you have uploaded the refund data it may take up to 24 hours for refund data to appear in your enhanced ecommerce reports.

#2 You can not edit or delete refund data once it has been uploaded to your account. So be careful with the data you upload.

Learn about the Google Analytics Usage Trends Tool

The Google Analytics usage trend is a new tool which is used to visualise trends in your Google Analytics data and to perform trend analysis.


Do you want to Learn Web Analytics in 8 Weeks?

  • Learn and Master Web Analytics, Conversion Optimization & Google Analytics from Industry Expert in 8 weeks.
  • Lifetime access to the course + Lifelong FREE course updates.
  • New study material added every few months (lifelong learning).
  • Up to date training material.
  • Most exhaustive course on Google Analytics on the internet.
  • Hundreds of Assessments to test your learning.
  • Your 24/7, 365 days a year reference source.
  • Learn at your own pace and from any place.

Take your Analytics knowledge to the next level. Checkout my Best Selling Books on Amazon

Maths and Stats for Web Analytics and Conversion Optimization
This expert guide will teach you how to leverage the knowledge of maths and statistics in order to accurately interpret data and take actions, which can quickly improve the bottom-line of your online business.

Master the Essentials of Email Marketing Analytics
This book focuses solely on the ‘analytics’ that power your email marketing optimization program and will help you dramatically reduce your cost per acquisition and increase marketing ROI by tracking the performance of the various KPIs and metrics used for email marketing.

Attribution Modelling in Google Analytics and Beyond
Attribution modelling is the process of determining the most effective marketing channels for investment. This book has been written to help you implement attribution modelling. It will teach you how to leverage the knowledge of attribution modelling in order to allocate marketing budget and understand buying behaviour.

Himanshu Sharma

Certified web analyst and founder of OptimizeSmart.com

My name is Himanshu Sharma and I help businesses find and fix their Google Analytics and conversion issues. If you have any questions or comments please contact me.

  • Over eleven years' experience in SEO, PPC and web analytics
  • Google Analytics certified
  • Google AdWords certified
  • Nominated for Digital Analytics Association Award for Excellence
  • Bachelors degree in Internet Science
  • Founder of OptimizeSmart.com and EventEducation.com

I am also the author of three books:

error: Alert: Content is protected !!