HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunitySubmit a ticketLog In
GitHubNuGetDev CommunitySubmit a ticket

Tracking event model/data properties

Describes properties used by tracking events in the core tracking.

Tracking personalizes content and product recommendations, and collects profile data to be used for segmented marketing actions. You can track data to any source. 

Required tracking event model/data properties

Name Description
DeviceId [string] The website for the client generates the device identifier, and must be provided in each tracking request to Tracking API. Use _madid as the name of the cookie when storing a device ID in a visitor browser.
EventType [string] The type of tracking event.
Value [string] The tracking data value, such as epiPageView or basket.

Optional tracking event model/data properties

Name Description
PageTitle [string] The page title.
User [object] A JSON object with user information that can have the following optional properties:

  • Name [string]. The user's name.
  • Email [string]. The valid email address of the user.
  • Info [object]. Information related to the user as a list of strings. See Info collection in the profile model for details about expected properties and values.
Payload [object] A JSON object with any kind of data.
PageUri [string] The page URI where the event occurred.
EventTime [string] The UTC date and time when the event occurred.
Scope [string] The scope this tracking event belongs to; default is used when not set. (Scope is a concept for separating tracking events, and profiles into different scopes.)
RemoteAddress [string] The client IP address. If set. this property overrides the value in Epi-User-IP-Address header.

Tracking IP address

The following methods set the client IP address in Tracking API.

Epi-User-IP-AddressPasses the visitor IP address to the Tracking API. 
remoteAddressSets IP address in track event. It overrides the IP address set in Epi-User-IP-Address header.

Tracking IP address in batch requests

You can set the IP address in remoteAddress for each individual track event, which overrides the value set in the header. The same behavior applies to batch requests. Therefore, you can set the IP address for individual track events in the batch requests, instead of having one IP address for all the track events in the header.


TrackID provides a way to define TrackEvent uniqueness on a specific ClientID and Scope, regardless of other values. This means that if two TrackEvents have the same TrackID, ClientID and Scope, they are treated as equal.

  • If TrackID is duplicated, the TrackEvent is skipped from processing silently; no error messages will inform the user.
  • If TrackID is not specified, then TrackEvent behaves normally and TrackID is left empty on that TrackEvent.
  • TrackID can validate duplicate track events within 72 hours. Track events that are tracked for more than 72 hours are still tracked if they have the same ClientID, Scopeand TrackID.
  • TrackID accepts 64 characters only. It is trimmed to 64 characters if the user sends more than that.


Applies to versions: Tracking.Core 1.9 and higher

From version 1.9. The Tracking.Core package depends on the EPiServer.Sessions package. With this change, there is a new field named SessionID.

SessionID [string]The SessionID is generated by the website for a client each time they interact with website. By default, each session has a duration of 30 minutes; if a user does not interact with website for more than 30 minutes, a new SessionID is created.