As of March 16th, 2022, Google announced that the mainstream version of Google Analytics labeled “Universal Analytics” will be deprecated in July 2023, with Google Analytics (360) enterprise depreciating in October 2023, presenting Google Analytics 4 (GA4) as the future of the platform.

To find out more, download our up-to-date guide to GA4 and Privacy-First Measurement.

Download Our GA4 guide.

Time to Transaction?

We all put lots of effort into improving conversions on our website or mobile app traffic. To accomplish that we need to better understand our customers, our conversion path flow, abandonment and struggle points. The more information we have, the better. And this includes time to transaction (or conversion) on our website.



Google Analytics, out of the box gives us invaluable information such as a number of sessions before transactions and the number of days before conversions. This gives data-supported insight into how keen our customers are. Is the purchase an impulsive act or well thought-through decision? Do people tend to research the market before committing to the brand or just convert immediately?

But why is time to transaction so important?

Why do we measure the minutes or seconds (lucky you if it’s just seconds) before the conversion happened? Here are a few analytics questions where such metrics would be invaluable:

How much of the content was consumed prior to the purchase decision? Was the visitor convinced within the first half OR did they need to read to the bottom of the page to satisfy their decision?


How long is it taking my visitors to get through the content? Is it a quick process or long process?


If it is taking visitors a long time for what should be a simple process – does this indicate that there are issues/hurdles in the process which need to be rectified?


How long does it take for my customers to complete the checkout process?

I am sure you can think of a couple more.

Well – Google Analytics is not going to help us with time to transaction. The Goal Funnel in GA is not recording time and you can’t create a funnel for an Event-based Goal.

We, at XPON, believe that if you need some specific data – you should have it! It’s doable, we just need to get a little bit technical.

Luckily, Google Analytics has customisable User Timing reports and Timing Hit Type which can deliver user-specified timing value to Google Analytics. The timing works pretty much like Google Analytics Events – you send a timing hit (instead of the event) together with Category, Variable, Label, and time as a value.

Timing Category – Conversion or Transaction or anything else you see fit
Timing Variable – Completed or Reached Step 1 or 2 or 3 of the conversion pathway
Timing Label – Product Name or Conversion (Goal) Name
Timing Value – time passed in milliseconds

As you can see, it’s pretty flexible and you can fit lots of data in these 4 fields. All you need is to “remember” the time when the current session has started and send a GA timing hit when the transaction or conversion happened.

If you are taking tagging seriously (like me), then you are using a tag manager solution (for example Google Tag Manager) to collect analytics data.

Let’s do this!

1. Create 1st Party Cookie Variable to store the session start timestamp

In my example I named the cookie ****_time2conversion_sesson_start. But you can name the cookie whatever you like.


2. Create Trigger for Session Start

On session start we will save the current timestamp to the cookie and timestamps usually contain numbers. So our trigger checks if the cookie is not empty and contains digits.


3. Create Tag, making sure to write session start time to cookie (very important)


4. Use the Session Start Trigger you just created to fire this Tag, so it will only fire when the cookie has no value (first hit of the session)


5. Create a Variable returning time since Session Start in milliseconds


6. Google Analytics Transaction Timing Tag using Track Type as Timing.

Name your timing Variable Completed, Category Transaction and Label leave empty for now.

Use your just created Variable **** – Time Since Session Started as a timing value.

Fire this tag on your conversion page.


Now, what could possibly go wrong with that implementation? Honestly? A lot! Cookies are not the best place to save data such as this as cookies are being sent with every page request.

A better way of doing so would be leveraging the browsers’ sessionStorage object.

However, not every browser supports this so that’s why we need to fall back to using a cookie.

The current implementation is not robust enough – it just solves razor task of tracking session time to conversion. But what if we want to know the time from the first user touchpoint? What if we need to measure timing on each checkout step? We will have to modify our implementation to be more universal or repeat it again and again.

As you have noticed, we have left the Timing Label variable unused. It can be used to break down timing reports by product name or category, selected payment options, delivery etc. You can even measure how long it takes for the processing centre to process payment.

The beauty of Google Analytics is that Timing data is placed into the right content of page, session, and user.