Sitecore Experience Platform

Experience Profile architecture and data overview

Abstract

An overview of how the Experience Profile is populated with contact data from the xDB

The Experience Profile enables sales and marketing employees to view experience data from the MongoDB collection database for contacts and their interactions.

You can identify current as well as future customers from their very first point of contact, even if they have not provided a name. You can examine their level of engagement and commitment with your organization by viewing the pages they have visited, profile pattern matches, goals, campaigns, and the outcomes they have achieved.

All contact and interaction data is collected and stored in the MongoDB collection database and is then aggregated by the processing layer for use by the reporting database. All marketing definition data such as goals, campaigns, page events, engagement plans, and outcomes is stored in Sitecore in the Master database. The MongoDB collection database stores the IDs of these marketing entities so it can track them, but it does not store the definition items themselves.

Experience Profile data flow

40B351960C6A4FFFB2F280DF3723CD38.png

When you open the Experience Profile for the first time, a list of latest contacts is displayed in the Experience Profile dashboard. You can click on a contact or use the search box to search for a known contact if you have a name or an email address.

All experience data on contacts, and their activities is stored in the MongoDB collection database. This data is first aggregated by the processing layer and then sent to the reporting database and the segmentation index.

The Experience Profile retrieves a list of latest contacts directly from the segmentation index to display on the dashboard. It does not need to use the reporting database. The segmentation index can be implemented either as a Lucene or Solr search index.

You use a standard set of queries to build a list of latest contacts taken from the segmentation index, and when you use the search box, the segmentation index fetches contacts to display in your search results. The contacts list and contact search in the dashboard are the only parts of the Experience Profile that use the segmentation index – all other data comes from the collection database.

When you click on a contact in the contacts list and open it in the Experience Profile, all the data displayed comes from the MongoDB collection database.

To populate the Experience Profile, a set of standard queries run via the Reporting Service, query the collection database and send back experience data on contacts and interactions to the Experience Profile.

You create queries as C# classes using the appropriate application programming interface which enables you to query a data source. In the xDB, there are several APIs available for querying the contacts, interactions, and outcomes collections in the MongoDB database. If you need to extend the standard functionality in the Experience Profile, you can create your own custom C# query classes and add them to the query processors defined in the Sitecore.ExperienceProfile.Reporting.config file.

When you have created a query and added it to the list of processors, you need to create a view to display information in the Experience Profile. A view contains a link to the query and other processors that perform actions such as transformations, sorting, and paging (see the example query for campaigns). You can extend views by adding more processors, and you can change the settings in each processor to display data in different ways.

Example query for campaigns

<campaigns-query>
      <processor 
       type="Sitecore.Cintel.Reporting.ReportingServerDatasource.Campaigns.GetCampaigns, 
       Sitecore.Cintel"/>
</campaigns-query>

Example view for displaying campaigns in the Experience Profile

<campaigns>
   <processor 
      type="Sitecore.Cintel.Reporting.Contact.Campaign.Processors.ConstructCampaignsDataTable,            
        Sitecore.Cintel"/>
   <processor 
        type="Sitecore.Cintel.Reporting.Processors.ExecuteReportingServerDatasourceQuery, 
        Sitecore.Cintel">
        <param desc="queryName">campaigns-query</param>
   </processor>
   <processor 
        type="Sitecore.Cintel.Reporting.Contact.Campaign.Processors.PopulateCampaignsWithXdbData, 
        Sitecore.Cintel"/>
   <processor         
        type="Sitecore.Cintel.Reporting.Contact.Campaign.Processors.ApplyMasterDataToCampaigns, 
        Sitecore.Cintel"/>
   <processor type="Sitecore.Cintel.Reporting.Processors.ApplySorting,Sitecore.Cintel"/>
   <processor type="Sitecore.Cintel.Reporting.Processors.ApplyPaging, Sitecore.Cintel"/>
</campaigns>

Reporting Service API

Use the Reporting API via the Reporting Service to retrieve experience data (interactions, campaigns, and goals) from the MongoDB collection database.

The current contact session must have ended before data can be written to the MongoDB collection database. The default session timeout setting is 20 minutes. Therefore, data from the collection database populates the Experience Profile, at minimum, 20 minutes after the last session has ended.

You can change the default setting if you want data to reach the collection database more quickly. To find the session timeout setting, open the web.config file from your website root folder and navigate to the <sessionState> node and change the timeout setting to a lower value (in minutes).

<sessionState mode="InProc" cookieless="false" timeout="20"/>

Note

This is a system-wide ASP.NET setting used across the entire Sitecore Experience Platform, and it is not specific to the Experience Profile.