What's up with the fast bounces?
By Philip Tellis on
Table of Contents
A couple of days ago, Sia started a thread on the public web performance slack asking why bounce rate appeared to spike for fast sessions, and correspondingly, conversion rate had a dip for the same region.
We've looked at this issue in the past, but through all the acquisitions and mPulse blog restructuring here at Akamai, those posts have long since flown off into the ether. It was probably time for a refresh anyway, so I decided to take a stab. This time, I used the Largest Contentful Paint (LCP) timer rather than page load, as it is often a better indicator to the user whether something useful is happening or not.
For simplicity, I limited the analysis to bounce rate alone as the concept of a conversion differs from site to site and it's hard to make a good comparison.
I looked at different kinds of retail sites, as well as other high traffic sites (eight different sites in all).
In this post, I'll mainly talk about one of these sites which is representative of the sample of sites I looked at.
Definitions
- Session
- A sequence of pages that a useragent visits with no more than 30 minutes of inactivity between requests.
- Landing Page
- The first page of a session.
- Bounce
- A session in which the user visits one and only one page. (Note that we do not track users across sessions, so a second page view after 30 minutes of inactivity would count as a separate session.)
- Fast Bounce
- A bounce where the user's experience was faster than the average user's experience. We consider anything faster than the 20th percentile here as fast.
- Largest Contentful Paint (LCP)
- The time it takes, from navigation start, for the largest piece of content to be painted to screen.
- Session LCP
- A summarized value of the LCP of multiple pages across a single session. This could be the arithmetic mean, median, trimmed mean, weighted mean, first value, last value, fastest value, 95th percentile, or some other expression that summarizes multiple values into one.
The Data
All data was collected with boomerang, and processed with mPulse. The data analysis was done in Julia using our Datascience Workbench.
Bounce rate vs LCP
Using the arithmetic mean
In our first chart, we see the bounce rate vs mean Session LCP. That is to say, for all pages in a user's session, we take the unweighted arithmetic mean of the LCP for each of those pages, and assign that as the session's LCP.
The yellow line in this chart is the bounce rate, and we immediately see that there's a huge spike in the buckets between 100 & 500ms. It might look like a small sample size at those buckets, but they each contain thousands of sessions, so the sample is large enough.
While the overall bounce rate of this site is around 34%, we see that the spike measures 45% at peak.
Using the first page
In the second experiment, I decided to only use the LCP value of the first page in the session as the overall session LCP. The reasoning behind this is that users who bounce only ever experience the LCP of the first page, so to be fair, we should only use the LCP of the first page across all users.
We see that the spike has significantly reduced in this case.
Looking into the data a little closer shows that the total number of sessions in these buckets has increased from about 16,000 to 26,000 while the number of bounced sessions has remained almost constant (0.1% change).
What caused the move?
When we examine the non-bounced sessions in more detail, we find that most of them are fast at the start of the experience, but have one or two slow pages that skew the mean. In most cases, this slow page was a conversion page, i.e., one that required credit card processing or some other slow back-end processing. At the point of the slow experience, the user had already completed the task they set out to do, so the performance of that experience had no bearing on either bounce or conversion.
The LCP of the first page, was a much better indicator of whether the user would bounce or not, but we still see a smaller spike.
The bounce rate at the buckets between 100-400ms is around 18-19%, which is far lower than the average of 34%, but it are still higher than what we'd expect. Based on the curve of the bounce rate, we'd expect a bounce rate of between 12-15% in this range.
Other dimensions
Navigation Type
I then looked at data across navigation types. We had three navigation types represented in the sample: navigate
, back-forward
and reload
. As we're only looking
at LCP of the first page, the majority of first page navigation types were navigate
. There were a few back-forward
and reload
, but they did not contribute to
fast bounces.
Device Type
Looking at Device Type brings up some interesting results.
We see that the majority of the fast bounces are on Mobile. The bounce rate on Mobile is more than twice that of Desktop for fast pages.
At this point, it helps to know how the site is structured.
Most retail pages have a Product Listing Page, or Search Results Page, and then a Product Detail Page. It turns out that on mobile, most users visit a Product Detail Page and then bounce.
Connection Type as a proxy for location (work/home/on the go)
Lastly, I looked at Connection Type. The majority of users who bounce from Mobile are using it over a Cellular network, i.e., they're unlikely to be home. Perhaps they're at a store and looking online for more details on a product. The second most likely connection type is a corporate LAN, indicating that users might be surfing a site from work and do not plan to complete the transaction at that point.
Result hypotheses
My educated guess at this point is that, after accounting for bugs in methodology, the most likely reason for users bouncing even with fast experiences is that they're looking for a quick lookup, and were able to complete the task with a single page view.