Contacts

A contact represents an individual who interacts with or may potentially interact with your organization. Contacts are represented by the Sitecore.XConnect.Contact class, and are uniquely identified by ID (of type Guid) within the xDB. IDs are generated by the service layer when a contact is saved and should not be saved outside the xDB. Contacts also have one or more identifiers that identifies the contact to systems outside the xDB.

Note

Allowing the service layer to generate time-based, sequential guids which are physically closer together on disk improves the performance of inserts and relevancy queries in a SQL context. The manner in which SQL allocates data pages means that randomly generated IDs creates a lot of un-used space, which has a detrimental effect on performance.

Known and anonymous contacts

A contact is either known or anonymous. Known contacts have at least one known identifier. Anonymous contacts only have anonymous identifiers, which always includes the alias identifier.

Extending the contact model

Use facets to extend the contact model with custom, organization-specific data. Several common facets are built in by default. Refer to the following topics for information about creating and using facets:

Note

The Contact Behavior Profile and Key Behavior Cache are available as calculated facets.

Tracking contacts

The web tracker is responsible for recording a contact’s activity during a web session, such as page views and goals triggered. On session end, this data is converted into an xConnect interaction and submitted to xConnect using the xConnect Client API. xConnect and the tracker are separate components with separate data models. For example, the tracker represents contacts using the Sitecore.Analytics.Tracking.Contact class. For more information about web tracking, refer to the following topics:

Merging contacts

When two contacts are merged, the facets and identifiers of a source contact are moved to a target contact. When the merge is complete, the source contact is marked obsolete. A common use for contact merge is when an anonymous contact identifies as an existing known contact. Refer to the following topics for more information about merging contacts:

Anonymizing contacts

The right to be forgotten is a contact’s right to have all personally identifiable data removed from the xDB.

Contacts and users

A contact and a Sitecore user are two entirely separate entities. A contact exists as a recored in the xDB, whereas a Sitecore user is an ASP.NET Membership or Identity user that exists. The xDB should not be used as an authorization system, and was not designed to store passwords or manage user sessions.

There is no automatic relationship between a user and a contact. You must explicitly create that relationship by adding an identifier to the contact that references a unique property of the user, such as the username. In the context of the tracker, you must identify the contact at the point of login in order for subsequent activity to be tracked against that contact.

Note

Web Forms for Marketers has a save action that will link a Sitecore user to a contact record when a user registers. It also offers a save action that will identify the associated contact with a user logs in. If you are not using Web Forms for Marketers to register and log in, it is up to you to perform these two actions.

Contact sharding

Contacts are sharded by ID. Contact identifiers are unique across all shards.