When tracking user actions in Google Analytics often you need to choose between using Events and Virtual Pageviews.
Making the tough decision: Events vs Virtual Pageviews
I believe the solution lies in asking yourself the right questions. And it’s not about choosing just between two technical implementations. You should think what data you want to collect, how you want to analyse it and how this will impact existing data collection and reporting.
The questions I usually ask myself are presented below.
Questions |
yes |
no |
Do you want to create a Goal for this action? |
pageviews or events |
pageviews or events |
Do you want to build a Goal Funnel for this action? |
pageviews |
events |
Is it ok for this action to impact Pageview metrics (increase Pageviews, Pages per session) ? |
pageviews |
events |
Is it ok for this action to impact (lower) Bounce rate? |
pageviews or events |
events (non interactional) |
Does the action result in new content for the user (text, form, etc.), that potentially could be a separate page? |
pageviews |
events |
Do you want to create a Goal for a specific action you want to track? Here all is simple as both Events and Virtual Pageviews can be used for Goal creation. However in standard Google Analytics you can’t create Goal Funnels with Events, so if positive answer to “Do you want to build a Goal Funnel for this action?” is critical for you – go for the Virtual Pageviews.
Next question to ask – Is it ok for this action to impact Pageview metrics? Virtual pageviews will increase Pageviews and Pages per session. If Virtual Pageviews are used to track JavaScript powered tabs or large content sections – increased Pageview metrics may show true content engagement, while in other cases, like having such setup for an image slider clicks, you risk to have too many Pageviews without a context. Then Events are more appropriate.
Same approach is for Bounce rate impact. If you want user interactions to lower Bounce rate and gain better understanding of user behaviour on a website, having either Events or Virtual Pageviews will do it. While if the interaction is not a desired user action and should not impact Bounce rate – use Events with non-interactive option set to “true” (“false” by default).
If you still haven’t decided, ask yourself does the action result in new content for the user (text, form, etc.), that potentially could be a separate page. If yes, Virtual Pageviews could be more appropriate.
Implementation and data structure
So hopefully you made it this far and decided between Events and Virtual Pageviews. Now you should think about how to implement them, what data to collect and how.
Events have a 3 level structure – Category, Action, Label (there is also Value, but let’s skip it for now). This gives you an opportunity to group interactions for further analysis. The example could be tracking all link clicks with one Category – “Links”, having separate “outbound link” & “inner link” Actions, and link URL as a Label. This way you will be able to see how many links were clicked by looking at the Category level data, get the outer vs inner link share from Action report and see the specific link clicked going down to Labels. Sometimes you may want to put link or button text as Label to distinguish different elements.
Virtual Pageview consist of a single string, so you need to approach it similarly to URL building. I use 2 methods here:
- Appending real URLs. Let’s say you have various pages with a button that opens a modal form on each page. If you are tracking form opens (button clicks) as Virtual Pageviews you can append virtual “form” URL part for an existing /services/seo page, so the virtual URL would be /services/seo/form. That way you will clearly see on what pages the form was used when analysing Content reports. Similar approach may be with JavaScript-powered tabs.
- Building new URLs. Is some cases you may feel the need to construct own URLs instead of appending real ones. Example could be a “thank you” page with a virtual URL /thankyou/service-name.
Remember that Virtual Pageview URLs will be in the same report with your real URLs so build them appropriately – make them readable, clear and consistent while not overloading with unnecessary data.
As for the implementation – the easiest way is to use Google Tag Manager. For Events use Google Analytics tag with Event Type and Virtual Pageviews – Pageview type and define your custom URL in the page field.
If you are not using GMT :( put Event or Pageview JavaScirpt codes directly in the code of your website.