3.9K members online now
3.9K members online now
Learn how to set up goals and Ecommerce tracking, verify accuracy of attribution traffic sources, and discuss funnel visualization, Multi-Channel Funnels, the Goal Flow Report, and Enhanced Ecommerce
Guide Me

How to track User State and Conversions for subscription product?

[ Edited ]
Follower ✭ ✭ ☆
# 1
Follower ✭ ✭ ☆

I want to track a simple subscription product with Google Analytics and need to determine how to best track (a) User State, and (b) Subscription conversion rate.

At any given time, a user can be a:


  1. Guest: Logged out
  2. Member: Logged in, but not on a paid subscription
  3. Subscriber: On a paid subscription


I plan to track this using a session-level Custom Dimension ("User State"), whose value changes when the user moves from one category to another.


Additionally, non-Subscribers can purchase a subscription at any point. This will be registered through an event ("Purchased Plan") tied to a Goal.


My questions are:


  1. Should I use a hit-level, session-level or user-level custom dimension for User State?
  2. If using a session-level or user-level dimension, how do I deal with the case of users logging out mid-session and their entire activity being classified as "Guest"? For example, a "Subscriber" views 20 pages, then logs out, which immediately puts the entirety of that session as a "Guest" session.
  3. When I look at the "Purchased Plan" conversion rate, how can I exclude *existing subscribers* from the denominator in order to get a clean rate?


For this last case, I thought of using an advanced segment configured to "Include Users with User Type = Guest or Member" and then look at the conversion rate for this segment.


But users that purchase a subscription are immediately changed into User State = Subscriber, so the entirety of their activity (in a session-level or user-level) scoped custom dimension would be classified as such, rendering my advanced segment worthless (i.e. the user's activity will not be present in this segment).


How can I deal with this situation? Any help will be greatly appreciated.

1 Expert replyverified_user

Re: How to track User State and Conversions for subscription product?

Top Contributor
# 2
Top Contributor

great question.

There are a few things you need to consider:
1) are the values persistent throughout the user experience - e.g. if I purchase subscription is this value available inside a cookie or storage so I can send it as hit level scope (multiple sessions as well)?
2) should the monetization status be mixed with the functional - login status vs monetization status - You may consider using 2 custom dimensions where you would send guest / member > hit level and subscriber on a user level (scope - so it would persist on current ans subsequent sessions - where you would send true on event when someone subscribes and false when someone unsubscribes)

So in short to answer your 3 questions:
1) it depends on how it is implemented - hit level if you want granular overview for each hit in reports, session / user level if you need top status (so if I have a cookie that states I am a member I will not send Guest value again) - In a way you could then create a one way funnel - guest > member > subscriber
2) If you set it to session level there is no default way to circumvent this value override unless you create a condition in tracking code where if a user logs out you will not change the value of the variable so Member will persist OR go hit level just make sure the values are available on each page / event which happens on the site
3) That depends on how Purchased plan Goal is set up - but simply put if you select a time range and check the CR for the period you will have only sessions for this particular period regardless of the Custom dimension value better say all who purchased in this period - is there a way you can add a new value new / old subscriber in the mix?

Hope it helps.

Kind regards,
Web analyst @

Re: How to track User State and Conversions for subscription product?

Follower ✭ ✭ ☆
# 3
Follower ✭ ✭ ☆

Hi Zorin: Thanks for the detailed reply. This has really helped me think through the problem and have two possible approaches. I would really appreciate your thoughts on this. Pardon the length, but it might help others trying to do similar implementations.


First, some background to answer your questions


The user state is persistent throughout all pages and sessions. At any given moment, a user can be browsing the site as a "Guest" (logged out), a "Member" (logged in, but restricted feature access), or "Subscriber" (logged in, full access). This is like any freemium subscription model, which gives users different levels of access, and user state (login status) is inextricably linked to monetization status. So I don't see the need to separate these two and use up more custom dimensions than necessary.


I would also like to keep the implementation simple, so would prefer to avoid adding another "subscriber new/old" custom dimension in the mix, if I can avoid it.


The questions I want to answer


There are two types of questions that I want to answer with the User State dimension. This applies to any given period of time selected in GA:


  1. How does the activity of "Guests", "Members" and "Subscribers" differ? That is, pages/session, session duration, etc.
  2. What is the purchase conversion rate for "Guests" and "Members"? We don't want Subscribers to be in the denominator for this calculation.


I can answer both questions by creating Advanced Segments, but the scope of the custom dimension will give me very different interpretations.


Suppose I have one user with a single session and their activity during this session is: 5 pages as "Guest", 5 pages as "Member", and 5 pages as "Subscriber".


If the dimension is session-scope, then the entirety of the user's session will appear under the "Subscriber" value. So I won't be able to answer question #2, because any segment that has "Include sessions with User State = Guest or Member" will return zero sessions. In essence, the denominator to properly calculate conversion rate is gone.


So here's what I'm thinking of...


Option 1: Two custom dimensions


  1. User State (session-scope): This gives me the "top level" view for the entirety of the session, which is ok for looking at broad differences.
  2. Page State (hit-scope): Uses exactly same values ("Guest", "Member", "Subscriber"), but sent with each page and event hit.


I can use Page State in an advanced segment that says "Include sessions with Page State = Guest or Member". So in my example above, that single session will now show up, allowing me to answer question #2. I just have to be aware that all of the other metrics (e.g. pages/session, time on site, etc) calculated for this segment include session activity in the subsequent "Member" and "Subscriber" states, since GA is basically saying "give me any session where at least one page or event hit had Page State = Guest or Member". And it pulls the entire session, not just the pages that had that dimension value.


Option 2: One custom dimension, resetting sessions on state change



In this case, I would only have a User State (session-scope) dimension, but start a new session every time a user changes state. I would do this with sessionControl:


Using the example above, the user would end up with three sessions during their visit: one when they were "Guest", another when they were "Member" and yet another when they were "Subscriber".


Each advanced segment in essence would now match the portion of the "original session" that was under any given state, making it possible for me to answer question #2.


Now, I don't know if this introduces other issues, such as the session source attribution getting messed up: for example, if the user arrived through organic search, the first session would be classified as "organic search", but these "forced new sessions" wouldn't. Additionally, I would have to make sure that the "Purchase" event gets sent before the new session gets created, so that the event gets attributed to the right session (i.e. "Purchase" needs to happen while user is still in "Member" state and not "Subscriber" state).


Final thoughts


I think Option #1 is a bit more conventional.


What are your thoughts? And given this explanation, do you think there is a different better approach?


Thanks again. 

Re: How to track User State and Conversions for subscription product?

Top Contributor
# 4
Top Contributor
Hi Ralph,

sorry for the late reply!

Based on the questions you need answers to I would definitely choose option 1. Option 2 is really an extreme way to skew the GA session model (the idea by itself is quite doable but the reporting implications are just too big / serious).

Hit level can be used for tables (page level reporting and similar) and in addition for sequence segments. Session level / user level is a useful thing to have (in this case user level as it will persist).

Kind regards,
Web analyst @

Re: How to track User State and Conversions for subscription product?

Follower ✭ ✭ ☆
# 5
Follower ✭ ✭ ☆
Hi Zorin: Thanks a lot for the advice. I'm going to go with Option 1, with the following small change:

I'll make the User State dimension user-scope instead, and not set it at all for logged out users (i.e. Guests). So it will only be set for Members and Subscribers. This will allow me to find sessions where a Member or Subscriber logged out, came back to the site and browsed the site logged out -- since the user scope would carry over.

Re: How to track User State and Conversions for subscription product?

Top Contributor
# 6
Top Contributor
Happy to help - let me know how it works out!

Kind regards,
Web analyst @