Adjusting Bounce Rate by Calculating Time spent on the Page


The number 1 way to optimize your website conversion rate is to optimize the bounce rate. If majority of people come and leave your website without completing the actions/goals you desire then you can’t have a good conversion rate. But what if people come and leave your website from the landing page but still complete your desired goals. How you will determine such conversions?

In other words you are getting conversions through bounced visits. But since it is a bounced visit you have no idea how valuable your bounced visits could be. Generally a high bounce rate indicates that the landing page is not relevant to your visitors. But what if the landing page is relevant to your visitors but it still has 100% bounce rate majority of the time because it satisfies visitors’ query and there is no need to explore your website any further. This is usually the case with content rich websites like blogs, news site, publishing sites etc.

People come to the site, consume contents and then leave the website from the landing page without browsing any further. Since Google analytics by default can report time spent on a webpage only when a visitor navigate to other web page on the site, we can never know how much time is spent on a particular page and whether 100% bounce rate is good or bad.


We often do experimentation and testing of a landing page on the basis of its bounce rate. High bounce rate is bad. Something is wrong with the page. That’s the general opinion of marketers/analysts.  But what if nothing is wrong with the page and in fact you bounce rate calculations are all wrong. Imagine how dangerous it could be to take business decisions on the basis of a faulty bounce rate.  The landing pages you think stink, don’t stink in the first place and yet we continue to optimize them for I don’t know what.


What should not be considered as BOUNCE?

Before we fix the bounce rate of our website, we need to decide what should not be considered as a bounce.

“When a person completes a goal or a transaction on your website then his/her visit should not be counted as bounce even if that visit is a single page visit.”

This is because our primary reason of running a website is to get conversions and transactions and not to optimize bounce rates.  Once we have done this we have achieved our goals. No crappy bounce rate should mislead us.  Now the next question that comes up is how we can determine the visitors’ behavior that should not be considered as bounce. Follow the steps below:

Step-1:  Head to the Engagement report (under Audience > Behavior) in your Google Analytics account.

Step-2: Set date range of your report to the last 4 months.

Step-3: Apply the advanced segment ‘visits with conversions’



If you look at the screenshot above you can easily determine that majority of conversions take place when visitors spend more than 3 minutes (181-600 seconds) on the website. So if I want a visitor to convert on my website, I need to make him stay at least for 3 minutes on my website. Because if he stays that long then it is highly likely that he will convert. I call this engagement as profitable engagement because it leads to conversions.

Similarly you need to determine the minimum time (visit duration) it takes for majority of your visitors to profitably engage with your website. Remember Visitor’s engagement is profitable only when it results in conversions/transactions. 


If you run/manage an e-commerce websites then you should also apply another advanced segment called ‘visits with transactions’ to determine profitable engagement:


 Again we can see that majority of conversions and transactions take place when visitors spend more than 3 minutes on the website. 3 minutes visit duration is pretty much standard but it may be different in case of your website/niche. So I would strongly suggest you to determine the minimum time (visit duration) it takes for majority of your visitors to profitably engage with your website.


Adjusting your Bounce Rate

Once you have determined the minimum time required to profitably engage with your visitors, you need to make some adjustment to your bounce rate so that you can see true bounce rate metric in your Google Analytics report. Remember it will still not be 100% accurate (more about it later) but still significantly better than the bounce rate you currently see in your reports. Add following line of code to your Google Analytics Tracking code on each page of your website:

setTimeout(“_gaq.push(['_trackEvent','Profitable Engagement','time on page more than 3 minutes'])”,180000);


This is the line of code I am using on this website. The setTimeout() is a JavaScript function (method) which waits for specified number of milliseconds before it executes the specified function.

Syntax: setTimeout(“javascript function”,milliseconds);


The javascript function that I am using for the setTimeout() method is: _gaq.push(). In this function I have passed the value of _trackEvent() method as parameter. As you all know, the _trackEvent() is used to capture events in Google analytics. So once an event is captured by _trackEvent() method, its value is passed to the _gaq.push() method which later sends the value to the Google Analytics server. However the _trackEvent() method will be executed only after 180000 milliseconds (or 3 minutes).

So long story short, I am capturing an event on a web page when more than 3 minutes have elapsed. This will give me a good idea of whether or not visitors are profitably engaging with contents on my site despite of their single page visits. So if visitors are profitably engaging with my site contents then I will treat their visits as non-bounce visit. Remember the geek definition of bounce rate:


Bounce rate is the percentage of single page visits in which only one GIF request is sent to the Google Analytics server.

So if you want to make a visit a non-bounce visit then pass more than one GIF request to the Google Analytics server within a single session. Every Google analytics tracking code contains the _trackPageView() method. This method passes one GIF request to the Google Analytics server. If your Google Analytics tracking code also contains the _trackEvent() method then two GIF requests will be passed to the Google Analytics server in a single session. Since more than one GIF request is sent to the Google Analytics server in a single session, the visit will no longer be treated as bounce visit by Google Analytics.  The complete Google analytics tracking code make look like this:

<script type=”text/javascript”>


  var _gaq = _gaq || [];

  _gaq.push(['_setAccount', 'UA-XXXXXXX-1']);


  setTimeout(“_gaq.push(['_trackEvent','Profitable Engagement','time on page more than 3 minutes'])”,180000);

  (function() {

    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;

    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘’;

    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);






Note: Replace the ‘UA-XXXXXXX-1’ with your Google Analytics Account number otherwise your tracking will stop working if you simply copy-paste this code.


What will happen next?

Once you have adjusted your bounce rate metric via Google Analytics Tracking code, the overall bounce rate of your website will most probably go down within few days and you will see a bounce rate which is a better representative of true bounce rate. After adjustment, the bounce rate of my website went down from the whooping 78.72% to 27.74% within a week.

That’s a massive difference. Isn’t it? I will take different marketing decision on the basis of 27% bounce rate than on the basis of 78% bounce rate.


Tracking conversions through Bounced Visits

If people are converting in a single page visit then you need to track this behavior. But how? One answer is tracking events as goals. For example let us say that when a visitor spends more than 3 minutes on your website he/she is most likely to convert may be in next visit or subsequent visit via same or different medium or marketing channel. But in case of single page visit the bounce rate is always 100% by default and Google is not able to calculate the time spent on a web page.

So if you look at the average time spent on the pages with 100% bounce rate, you will see that Google generally reports 00:00:00 as ‘average time on page’.  But if you can track the time spent on a web page somehow then this problem can be solved. In such situations, the setTimeout() method comes handy which can ask _trackEvent() method to capture an event after certain amount of time has elapsed.

For example I can configure the setTimeout() method to capture the event via _trackEvent() once a visitor has spend say 3 or more minutes on a web page. The code for this is the same as above:

setTimeout(“_gaq.push(['_trackEvent','Profitable Engagement','time on page more than 3 minutes'])”,180000);


Here ‘profitable engagement’ is the event category, ‘time on page more than 3 minutes’ is the event action. To know more about event tracking in Google Analytics, check out this post: Event Tracking – Google Analytics (Simplified Version). Set up this event as a goal in your analytics profile:



Once you have set up this goal and starts collecting goals data you will see a report like the one below:



As you can see from the screenshot, 1596 visitors spent more than 3 minutes in reading the post: The Super Duper Guide to Google Analytics Pivot Tables. So this post is the most profitably engaging post on my website in the last one month.

Now if I look at the ‘top landing pages report’ (under Content > Site Content), I am presented with this muddy insight about the same blog post:


The average visit duration is 1.22 minutes and bounce rate is whopping 81.93%. What I am supposed to interpret from this report? That the visitors are not engaging in a profitable way with my post because the average visit duration is less than 3 minutes and bounce rate is so high.  That’s how one can easily take wrong decisions on the basis of regular reports with faulty bounce rates.

Note: You can also do some PHP wizardry so that _trackEvent() is executed say after every 1 minute. In this way you can get more accurate time spent on a web page.


Adjusting your Bounce Rate (Advanced way)

In order to get bounce rate as accurate as technically possible, I would suggest you to determine profitable engagement duration for each section or content type of your website and then adjust your bounce rate accordingly. This means you need to add different tracking code to different pages on your website which record bounce rate differently.

If you are not using a tag management system then it is going to be very time consuming esp. for large websites. But that’s the only way to get bounce rate as accurate as technically possible. People spend different amount of time on different type of contents. For example you can’t expect visitors to spend 3 or more minutes on a ‘contact us’ page, support page or ‘about us’ page or on a small infographic or article. So you need to adjust your bounce rate for different sections or type of contents on your site accordingly. In the end it all depends upon how accurate you want your bounce rate calculations to be and how much bounce rate impact your marketing decisions.


Now it is your turn. Do you agree/ disagree with this post? How do you calculate real bounce rate? Do you think bounce rate calculations should be as accurate as technically possible? Please share your views and insights.

Other Posts you may find usefulAnalytics Case Study: When your Conversions don’t matter



Himanshu Sharma About the Author: is the founder of which provides SEO Consulting, PPC Management and Analytics Consulting services to medium and large size businesses. He holds a bachelors degree in ‘Internet Science’, is a member of 'Digital Analytics Association', a Google Analytics Certified Individual and a Certified Web Analyst. He is also the founder of and

My business thrives on referrals, so I really appreciate recommendations to people who would benefit from my help. Please feel free to endorse/forward my LinkedIn Profile to your clients, colleagues, friends and others you feel would benefit from SEO, PPC or Web Analytics.