Google Analytics Recurring Revenue and Subscriptions Tracking Tutorial

Since subscription payments (other than the first payment) are not triggered by a user’s actions, they need to be tracked server-side.

When a user first sign up, assign him a unique user id. You can use login id as user id. Just make sure that the id does not contain Personally Identifiable data like name, email address, IP address, etc.

Any data that allows Google to personally identify an individual or data that permanently identifies a particular device (such as a unique device identifier, if such an identifier cannot be reset) is Personally Identifiable data.

If you upload any data that allows Google to personally identify an individual, your Google Analytics account can be terminated, and you may lose your Google Analytics data as this is against Google Terms of Service.

The user id is used to sum up the recurring revenue by a user. When a user makes the first initial purchase you can set a unique user id for him and note down his transaction IDFor second and subsequent purchases, send transaction data (with unique transaction ID) to Google Analytics via measurement protocol whenever you process payment.

When a subscription stops then stop sending the transaction data via measurement protocol for a particular user.

About Measurement protocol

Measurement protocol is a set of rules which your application must follow in order to send raw hit data directly to the Google Analytics server.

Through this protocol, you can collect and send raw user interaction data (hits) directly to GA server from any device/system which can be connected to the internet. This device/system can be a smartphone, tablet PC, digital appliances (washing machine, coffee machine, slot machine), point of purchase systems, etc.

However, you need to format your data according to the measurement protocol before you can send it to the Google Analytics server. So for example, if you want to send data from a cash counter machine, coffee machine or slot machine then you first need to format the data according to the measurement protocol. Without such formatting, you can’t send data to GA.

Get the FREE E-Book (31 Pages)

 

In order to make an HTTP request to the GA server (for sending the raw hit data directly), you need to format your HTTP request according to the measurement protocol. This formatted HTTP request is called the measurement protocol request.

Here is what the measurement protocol request looks like:

protocol-requestThe measurement protocol request is made up of: user-agent, transport and payload data:

user-agent-transportPayload data is the data you send to the Google Analytics server using the measurement protocol. In other words, the payload data is the data that has been formatted according to Measurement Protocol.

Following is an example of payload data:

v=1&tid=UA-123456-2&cid=36009a59-2a05-49e7-b826-2b884d0f935b&t=pageview&dp=%2Fhome

The payload data resembles a URL query string.

Payload data is made up of multiple parameters. Each parameter is made up of ‘key = value’ pairs. Each parameter is separated from another parameter via & character.

Since each parameter is made up of ‘key = value‘ pairs, so each ‘key=value’ pair is separated by ‘&’ character.

Syntax of payload data:

parameter1&parameter2&parameter3

or

key1=value1&key2=value2&key3=value3

Example of payload data:

v=1&tid=UA-123456-2&cid=36009a59-2a05-49e7-b826-2b884d0f935b&t=pageview&dp=%2Fhome

Here v, tid, cid, t and dp are called the keys.

‘1’, ‘UA-123456-2’, ‘36009a59-2a05-49e7-b826-2b884d0f935b’, ‘pageview’ and ‘%2Fhome’ are called the values.

For example, the following are the parameters for measuring purchases via measurement protocol:

Source: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide

Click on the link ‘view this hit in the measurement protocol hit builder‘ to see what this hit actually looks like.

All values you sent via measurement protocol to GA, must be both UTF-8 encoded and URL encoded. For example, / is encoded to %2F

If the values are not encoded correctly then they will be replaced with the Unicode replacement character xFFFD

Note (1): You can learn more about URL encoding from here: http://www.w3schools.com/tags/ref_urlencode.asp

Note (2): All protocol parameters must be set on the same line. They should not have any spaces between them. Comments are not allowed in protocol parameters.

The measurement protocol supports the following data types for the values in the ‘key = value’ pairs of the payload data:

  1. Integer – used to represent a number
  2. Text – used to represent a string
  3. Boolean – used to represent a boolean value (true or false)
  4. Currency – used to represent the total value of a currency in up to 6 decimal points.

Transport defines where and how to send the payload data.

Following is an example of transport:

POST http://www.google-analytics.com/collect

transport

Transport is made up of:

#1 GET/POST method – which defines how to send the payload data

#2 Location of the GA server – which defines where to send the payload data

#3 URL endpoint – this is used to define whether a single or multiple hits should be sent to the GA server or whether to send the payload data to measurement protocol validation server.

There are rules regarding which parameters can be sent together and which parameters can’t be sent together. There are rules regarding the length and format of parameters.

Each parameter has a specific type that requires a particular format.

Each payload data must contain a valid hit type. Each hit type must have its own set of required parameters set.

For more details, regarding these rules, refer to Measurement Protocol Parameter Reference: https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters?hl=en

You can get a complete list of all of the measurement protocols from here: https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters

Get the E-book (52 Pages)

Get the E-Book (37 Pages)

 

You can send payload data by either using the GET method or POST method.

Google recommends using the POST method, as then you can send larger payload data to GA server. The location of the GA server is: https://www.google-analytics.com. This is where we send the payload data.

The payload data need to be URL encoded if you are making an HTTP POST request to the GA server.

The size of Payload data, if you are making an HTTP POST request to the GA server can be a maximum of 8191 Bytes. However, if you make an HTTP GET request to the GA server, then the size of payload data cannot be more than 2000 Bytes.

Write a script to make the following similar HTTP POST request to the GA server in order to send the payload data:

User-Agent: user_agent_string

POST https://www.google-analytics.com/collect?payload_data

Use measurement protocol hit builder to validate hits: https://ga-dev-tools.appspot.com/hit-builder/

Note: GA hit builder uses only one URL endpoint, /collect

 

To use the measurement protocol, you need to do the following three things:

#1 Ask your developer to write an application (program) that can pull data from your desired data source (could be your database/backend):

application-pull-data

#2 Your application must convert the retrieved data into the payload data according to the measurement protocol:

application-generate

#3 Your application must make an HTTP POST request to the endpoint (Google Analytics server) in order to send the payload data to the GA server. The HTTP request should be made up of user agent, transport and payload data:

make-http-request

When GA receives the HTTP request from your application, it tries to process the payload data in the HTTP request. If GA successfully processes the payload data then its server will send 2XX response code back to your application:

send-2xx-code
If GA is not successful, in processing the payload data, then its server does not send any error code back to your application.

As you create monthly invoices for our customers, you could have a request sent through the measurement protocol which specifies the invoice details as soon as the payment comes in as successfully processed.

Recommendation regarding updating the original transaction

Do not update the original transaction every month. Assign a unique transaction ID for each new transaction for a particular user.

If you update the original transaction with new value then you won’t be able to see individual transactions for a particular user over time.

If you don’t assign a unique transaction ID for each new transaction for a particular user then you will have duplicate transaction issues.

You can segment the data by user id and should be able to see all of the transactions for a particular user in the user explorer report in the user id view:

In addition to that, you can create a custom dimension and pass user id value to it. Then you create a user id custom segment. 

By doing that you can segment any GA report by user id custom segment and do detailed analysis for a particular user.
If some of your customers book well in advance, say 2 months in advance then send transaction data via measurement protocol after 2 months to maintain the accuracy of the sales data.

Record sales only on the day of the actual sales whether the sale is user-generated or generated by you in response to billing.

Recommendation for refunds, chargebacks, and unsuccessful payments

When sending transaction data via measurement protocol, add a negative amount for the sales. This is known as reversing the transaction.

When you reverse a transaction in Google Analytics, it does not remove it. GA simply deduct a particular amount from the revenue total. So what is removed is the revenue/sales associated with the reversal transaction. No other information associated with the transaction is removed.

For example,

Let’s say User ‘A’ placed an order of $200 on Monday.

Let’s say the total website sales on Monday were $500.

Now if you reverse the transaction on Monday, then the total sales amount for Monday would be reported to be: $500 – $200 = $300

If you reverse the same transaction on say Tuesday, then the total sales amount for Monday would remain $500

the total sales amount for Tuesday would be: Total website sales for Tuesday – $200

So if the original transaction occurred on Monday and you reversed it on Tuesday then make sure that you are analyzing a date range that includes both Monday and Tuesday. Google, in fact, recommends doing the reversal on the same day as the original transaction.

Note: Both the original and reversal transactions will be included and reported in the transaction count.

Other articles on specialized tracking in Google Analytics

  1. Ecommerce Tracking in Google Analytics – Tutorial
  2. Event Tracking via Google Tag Manager – Tutorial
  3. Event Tracking in Google Analytics – Tutorial
  4. Guide to Google Analytics Store Visits Tracking
  5. Offline Conversion Tracking in Google Analytics – Tutorial
  6. Implementing E-Commerce Tracking via Google Tag Manager
  7. Tracking Virtual Pageviews in Google Tag Manager – Tutorial
  8. YouTube Video tracking via Google Tag Manager
  9. How to Use Keyword Hero to Reveal Not Provided Keywords in Google Analytics
  10. Virtual pageviews in Google Analytics – Tutorial
  11. Google Analytics and YouTube Integration Tutorial
  12. Google Analytics for Facebook Tutorial
  13. Google Analytics Cross Domain Tracking Explained Like Never Before
  14. Using multiple Google Analytics tracking codes on web pages
  15. The one thing that you don’t know about PayPal.com and the referral exclusion list
  16. Calculated Metrics in Google Analytics – Tutorial
  17. Creating your own Google Analytics Tag Auditing System
  18. Tracking Site Search without Query Parameter in Google Tag Manager
  19. Tracking true referrals in Google Analytics when using PayPal and other payment gateways
  20. Phone Call Tracking in Google Analytics and Beyond
  21. Learn to Track Qualified and Won Leads in Google Analytics
  22. Introduction to Postbacks in Google Analytics
  23. Google Analytics Recurring Revenue and Subscriptions Tracking Tutorial
  24. How to track the impact of cookie consent on website traffic in Google Analytics
  25. Tracking Offline Conversions in Google Ads
  26. Implementing Scroll Tracking via Google Tag Manager
  27. Scroll Tracking via Scroll Depth Trigger in Google Tag Manager
  28. Site Search Tracking In Google Analytics Without Query Parameters
  29. Video Tracking via YouTube Video Trigger In Google Tag Manager
  30. How to Correctly Measure Conversion Date & Time in Google Analytics
  31. Google Analytics Social Tracking – Twitter, Facebook, Google Plus and LinkedIn
  32. Google Analytics Cross Domain Tracking (ga.js)
  33. Tracking Twitter and Linkedin Social Interactions in Google Analytics
  34. Creating Content Group in Google Analytics via tracking code using gtag.js
  35. Tracking Site Search in Google Analytics with Query Parameters
  36. Understanding site search tracking in Google Analytics
  37. Creating and Using Site Search Funnel in Google Analytics
  38. Learn to Setup Facebook Pixel Tracking via Google Tag Manager
  39. Setting up & Tracking AMP Pages in Google Analytics
  40. Setting up Sales Funnel across websites in Google Analytics
  41. Regular Expressions (Regex) for Google Analytics & Google Tag Manager – Tutorial

Register for the FREE TRAINING...

"How to use Digital Analytics to generate floods of new Sales and Customers without spending years figuring everything out on your own."



Here’s what we’re going to cover in this training…

#1 Why digital analytics is the key to online business success.

​#2 The number 1 reason why most marketers are not able to scale their advertising and maximize sales.

#3 Why Google and Facebook ads don’t work for most businesses & how to make them work.

#4 ​Why you won’t get any competitive advantage in the marketplace just by knowing Google Analytics.

#5 The number 1 reason why conversion optimization is not working for your business.

#6 How to advertise on any marketing platform for FREE with an unlimited budget.

​#7 How to learn and master digital analytics and conversion optimization in record time.



   

My best selling books on Digital Analytics and Conversion Optimization

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.

Attribution Modelling in Google Ads and Facebook
This book has been written to help you implement attribution modelling in Google Ads (Google AdWords) and Facebook. It will teach you, how to leverage the knowledge of attribution modelling in order to understand the customer purchasing journey and determine the most effective marketing channels for investment.

Himanshu Sharma

Digital Marketing Consultant and Founder of Optimizesmart.com

Himanshu helps business owners and marketing professionals in generating more sales and ROI by fixing their website tracking issues, helping them understand their true customers' purchase journey and helping them determine the most effective marketing channels for investment.

He has over 12 years of experience in digital analytics and digital marketing.

He was nominated for the Digital Analytics Association's Awards for Excellence. The Digital Analytics Association is a world-renowned not-for-profit association that helps organisations overcome the challenges of data acquisition and application.

He is the author of four best-selling books on analytics and conversion optimization:

error: Alert: Content is protected !!