This is an uncommon issue and one that is easy to overlook if you’ve recently deployed Sitecore into production.
But you find that the persistant cookie “SC_ANALYTICS_GLOBAL_COOKIE” which Sitecore uses to track contacts across sessions in the xDB is missing. This causes a number of issues, but the main one being is that if a visitor returns to the website, a new contact is created as Sitecore cannot relate the two sessions using this unique visitor id.
The cookie you expect to see is:
There are a number of reasons why this might not appear:
 Sitecore analytics has been disabled using the setting “Analytics.Enabled” or “Xdb.Enabled” depending on your version of Sitecore
 The “@Html.Sitecore().VisitorIdentification()” razor view helper is missing
 Your license is for CMS only and not xDB
 Failure to connect to MongoDB
 You have configured your site domain to a different one being used by external website visitors. This sometimes happens if you are using a load balancer or proxying. What you’ll find is that the “Set-Cookie” response header is trying to set the cookie for the wrong domain which your browser will ignore and not store. See example below.
The final one being a tricky one to hunt down, so i thought i’d share the steps i went through to find the solution. I hope this saves someone else some time.