This article describes the processes for troubleshooting the most frequent issues with Analytics data in the Sitecore Experience Database installation.
To use the troubleshooting instructions in this article, perform the test described in the Verify a connection to the collection database document and then choose one of the following scenarios according to the results:
Description
Contact or interaction data does not appear in the collection database after a contact visits the website.
Note that data does not appear in the collection database until after the session has timed out.
Refer to the How to check interactions stored in the collection database section to check if the new data is saved to the database.
To troubleshoot when data is not collected in the collection database:
- For Sitecore XP 8.0.0 or higher, check the Internet connection and network-related restrictions on the MongoDB server. Ensure that the firewall allows you to connect to the MongoDB server.
For Sitecore XP 9.0.0 or higher, make sure that xConnect services are accessible from CD servers.
- Ensure that both private and shared session states are configured according to the session state configuration scenarios.
- Ensure that no CDN/cache services, such as Akamai, are running. All requests must be processed by the Sitecore instance to ensure that Sitecore Analytics tracks them.
- Using a non-Sitecore session state provider for any private or shared session states requires you to ensure that the service supports the Session_End ASP.NET event.
- Check whether the Global.asax file exists in the Website folder. If not, copy the default Global.asax file to the Website folder from the appropriate Sitecore installation archive.
- If the custom application class is defined in the Global.asax file, ensure that this class is derived from the standard Sitecore.Web.Application class and does not override any standard logic.
- Ensure that all the layout pages contain the <sc:VisitorIdentification runat="server" /> tag (@Html.Sitecore().VisitorIdentification() helper for MVC websites) in the <head> section.
- Ensure that the ...\layouts\system path or files at this path are not added to the <setting name="IgnoreUrlPrefixes"...> setting in the Web.config file.
- When using the Sitecore MVC, ensure that the Sitecore.MvcAnalytics.config file is not disabled.
- If you have a multiserver xDB installation, ensure that all the servers are configured according to the configuration documentation.
Description
Experience Analytics does not show any data. The fact and dimension tables (Reporting database, SQL Server) do not populate with new Analytics data.
Known issues
- The processing might require more time due to the fact that the device detection database cannot be updated. To resolve this issue, see the following article KB0828414. [Fixed in Sitecore XP 9.0.2]
- If exmEnabled:define is set to "No" in the web.config file, install the following patch https://github.com/SitecoreSupport/Sitecore.Support.215205/releases. [Fixed in Sitecore XP 9.1.0]
To troubleshoot when Experience Analytics data is out of sync or missing:
- Ensure that the Interactions collection of the collection database is populated with new interactions. Refer to the How to check interactions stored in the collection database section to check if new interactions are collected. If new interactions are not added to the collection database, have a look at Scenario 1 of this article.
- The Reference Data Service is accessible from CM.
- Check the Internet connection and network-related restrictions on the reporting SQL database. Ensure that the firewall allows you to connect to the SQL server instance.
- For Sitecore XP 8.0.0-8.2.7, ensure that the Segment table of the reporting SQL database is not empty. If this table is empty, populate it with data from a clean Sitecore reporting database or redeploy reporting definitions through the /sitecore/admin/RedeployMarketingData.aspx administrative page.
- Check and analyze how many records are in the processing pool by running the sequence of the same queries within a certain time limit. The increasing number of records signals the need for adjusted aggregation speed.
Notes:
- Experience Analytics application caches report data by date range. This can lead to behavior so that the data does not appear in reports immediately. To force the application to take data from the reporting database, change the date range using the date picker in the top-right corner of the application. Use a date range that has not been previously applied (for example, by changing the upper or lower bound by one day).
- Experience Analytics "Online interactions by visits and value per visit" report shows data for online channels. If only this report does not show any data, the channel definitions can be not deployed. To address the issue the following steps must be performed:
- Go to Launchpad >> Control Panel >> Deploy marketing definitions >> select Taxonomies and run Deploy.
- Try to create a new interaction, wait for the session ending and aggregation, and check the report again.
- If the data for the new interaction is present, rebuild the reporting database to get the historical data.
Description
- The Experience Profile is not updated with new information about visits.
- New contacts do not appear in the Experience Profile reports.
- The Experience Profile reports show a list of contacts, but you cannot open a contact's profile.
- The search does not function properly.
To troubleshoot when Experience Profile data is out of sync or missing:
- For Sitecore XP 8.0.0 or higher:
- Ensure that the MongoDB server is running and accessible for the Sitecore instance.
- Ensure that the Contacts collection of the collection database (MongoDB) is populated with new contacts. To generate a new contact, visit the website using Firefox or Chrome private browsing mode. If the collection database cannot add a new contact, look at Scenario 1 of this article.
- Ensure that sitecore_analytics_index data and collection database (MongoDB) data are consistent. If you have inconsistent data, perform a complete rebuild of the reporting database. This also updates the sitecore_analytics_index to match the collected data.
- For Sitecore XP 9.0.0 or higher:
- Ensure that the xConnect service is accessible from the Sitecore instance.
- Ensure that the SOLR server used for xDB indexes is running and accessible from xConnect instances.
- Ensure that the Contacts collection of the Shard databases is populated with new contacts.
Notes:
- For Sitecore XP 8.2.3 and higher, the Experience Profile application displays only identified contacts to avoid performance issues. Enable indexing of anonymous contacts for troubleshooting, if necessary. We recommend that you disable this in the production environment.
To enable anonymous contacts indexing:
- For Sitecore XP 8.2.3 or higher, set the ContentSearch.Analytics.IndexAnonymousContacts setting value to "true" in the \App_Config\Include\Sitecore.ContentSearch.Analytics.config file.
- For Sitecore XP 9.0.0 or higher, follow the instructions in this article.
- In Sitecore XP 9.x, PII Sensitive data is not indexed by default. The Email, FirstName, and LastName fields that are used in the Experience Profile are marked as PII Sensitive. As a result, the search using these fields does not work by default. Check this article for details.
Scenario
- The Path Analyzer does not display any data.
- The Path Analyzer is not populated with new data.
- The Path Analyzer data is out of sync with the Experience Analytics data.
To troubleshoot when Path Analyzer data is out of sync or missing:
- Ensure that the Interactions collection of the collection database is populated with new interactions. Generate a new interaction by visiting any page on the website. If new interactions are not added to the collection database, look at Scenario 1 of this article.
- Check if the TreeDefinitions table of the reporting SQL database has been populated. If this table is empty, populate it with data from a clean Sitecore reporting database or redeploy reporting definitions through the /sitecore/admin/RedeployMarketingData.aspx administrative page. After that, perform a rebuild of the Path Analyzer maps.
- If the Path Analyzer data does not match the Experience Analytics data, perform a rebuild of the Path Analyzer maps.
To check that interactions appear correctly in the collection database, for all mentioned releases:
- Start InPrivate browsing in Firefox or Chrome and visit a few web pages on the site.
- Find the SC_ANALYTICS_GLOBAL_COOKIE cookie and save the value preceding the pipe. For example, retrieve the value "169e920af41d4960ad9eff4d3260f8d9" from the following cookie "169e920af41d4960ad9eff4d3260f8d9|True".
- Request the Abandon.aspx page to flush the data immediately or close the window and wait for the end of the session.
- Consider one of the following options:
- For Sitecore XP 8.0.0 or higher, connect to the analytics database and run the following query:
db.getCollection('Interactions').find({ContactId: NUUID("169e920a-f41d-4960-ad9e-ff4d3260f8d9")})
//id retrieved from Cookie should go here. Add dashes to make the value correct GUID.
- For Sitecore XP 9.0.0 or higher, when SQL provider is used, connect to shard databases and run the following query against each of them:
SELECT LastKnownContactId FROM [xdb_collection].[DeviceProfiles]
WHERE DeviceProfileId = '169e920a-f41d-4960-ad9e-ff4d3260f8d9'
--id retrieved from Cookie should go here. Add dashes to make the value correct GUID.
One of the databases must contain the LastKnownContactId. Use it to retrieve the interaction (it will be in one of the shard databases):
SELECT * FROM [xdb_collection].[Interactions]
WHERE ContactId = '138E219A-0A5A-0000-0000-05D0EB074C6D'
-- where 138E219A-0A5A-0000-0000-05D0EB074C6D is the copied LastKnownContactId value.
- For Sitecore XP 9.0.2 or higher, when MongoDB provider is used, connect to the collection MongoDB database and execute the following query:
db.getCollection('DeviceProfiles').find({"_id.id":UUID("d2dae1fa-25b7-4948-a426-863115d8af2c")})
//id retrieved from Cookie should go here. Add dashes to make the value correct GUID.
Copy lk_contact_id field value and run the following query:
db.getCollection('Interactions').find({"_id.parent_id":UUID("5e84dc4c-48fa-4b38-bf7c-9e8e1deb0f78")})
//where UUID("5e84dc4c-48fa-4b38-bf7c-9e8e1deb0f78") is the copied lk_contact_id value.