What is "Average Visit Duration: 0"?
If you take a look through your Google Analytics account at almost any of the metrics, you will see a column called 'Avg. Visit Duration'. Hopefully you'll see some nice healthy figures popping up here, but if you drill down through the figures, particularly to where the number of views for each page or organic SEO keyword get lower and lower, you will begin to see the following pop up in the visit duration column:
There is a lot of confusion surrounding the cause of this, but the reason is in fact very simple. It means that every visit in your set time period for that particular page or keyword (depending on what you're viewing) was a one page bounce. In short, everyone who came to the site for that term left before they went to a second page.
Check the bounce rate for any page that has 00.00.00 as the average visit duration. You will also see that bounce rate is 100%.
What Causes This To Happen?
Each time your browser loads a page that contains Analytics tracking script, it fires off a notification to Analytics, and starts a timer. Then when you load another page, it fires off the code for that page and restarts the timer, and again and again for each page that you load on that site. However, if you go somewhere else, the Analytics account that is linked to the site you were on does not get notified, and that timer that was running will not be told when to stop.
So when Analytics tells you it's tracking the total time on site, in reality it's checking the total time between page loads on that particular site. This is somewhat pedantic, but it makes one crucial difference; Analytics will not display the time for the final page that you view on a website.
Why Doesn't Analytics Track Time On The Last Page?
Simple, it's to reduce load on your server. If it were to track the exact time for the last page view for any user, it would have to constantly (once a second) be pinging Google to track each second for the entire time a user is on any page of your site, since no one knows which page is going to be that user's last. This would cause most servers to crash, and would probably cost Google millions of pounds in additional bandwidth at their end. Having a smoothly running site is a small price to pay for loss of this data!
Some Possible Scenarios
1. You land on a website, spend 1 minute on the landing page, 5 minutes on the second page, 30 seconds on the third page, then leave. Your time on site will be recorded as 6 minutes.
2. You land on a website, spend 1 minute on the landing page, and 30 minutes on the second page, then leave. Your time on site will be recorded as 1 minute.
3. You land on a website, spend 10 minutes on the landing page, then leave. Your time on site is recorded as 0 minutes, shown as that troublesome "00.00.00" in Google Analytics.
Forget Time on Site, Focus on Bounce Rate
This issue does cause confusion. Despite what you hear, it's not an error, it's (probably) not people landing on your site and instantly clicking away, and it's not caused by search engine crawlers (Analytics does not display page loads from robots, you'd need to check your server logs to view this data). It's simply a result of the way Google Analytics tracks time.
Time on site is a useful metric to have, but if you notice that the time is 0 for any page view or any source, then it means every person to that page or from that source is bouncing. Work out why, and work out how to change this, and most importantly don't get hung up on data like this. Quite often it represents a tiny amount of your traffic, a low traffic keyword that your SEO company has been targeting, or an obscure landing page, and the data may not be statistically significant.
Most importantly, look at the bigger picture and work out what you can do to increase user engagement across your website.