XDM ExperienceEvent is a standard Experience Data Model (XDM) class which allows you to create a timestamped snapshot of the system when a specific event occurs or a certain set of conditions have been reached.
An Experience Event is a fact record of what occurred, including the point in time and identity of the individual involved. Events can be either explicit (directly observable human actions) or implicit (raised without a direct human action) and are recorded without aggregation or interpretation. For more high-level information on the use of this class in the Platform ecosystem, refer to the XDM overview.
The XDM ExperienceEvent class itself provides several time-series-related fields to a schema. Two of these fields (_id
and timestamp
) are required for all schemas based on the class, while the rest are optional. The values of some of the fields are automatically populated when data is ingested.
Property | Description |
---|---|
_id (Required) |
The Experience Event Class _id field uniquely identifies individual events that are ingested into Adobe Experience Platform. This field is used to track the uniqueness of an individual event, prevent duplication of data, and look up that event in downstream services.Where duplicate events are detected, Platform applications and services may handle the duplication differently. For example, duplicate events in Profile Service are dropped if the event with the same _id already exists in the Profile Store.In some cases, _id can be a Universally Unique Identifier (UUID) or Globally Unique Identifier (GUID).If you are streaming data from a source connection or ingesting directly from a Parquet file, you should generate this value by concatenating a certain combination of fields that make the event unique. Examples of events that could be concatenated include primary ID, timestamp, event type, and so on. The concatenated value must be a uri-reference formatted string, meaning any colon characters must be removed. Afterwards, the concatenated value should be hashed using SHA-256 or another algorithm of your choice.It is important to distinguish that this field does not represent an identity related to an individual person, but rather the record of data itself. Identity data relating to a person should be relegated to identity fields provided by compatible field groups instead. |
eventMergeId |
If using the Adobe Experience Platform Web SDK to ingest data, this represents the ID of the ingested batch that caused the record to be created. This field is automatically populated by the system upon data ingestion. The use of this field outside of the context of a Web SDK implementation is not supported. |
eventType |
A string that indicates the type or category for the event. This field can be used if you want to distinguish different event types within the same schema and dataset, such as distinguishing a product view event from an add-to-shopping-cart event for a retail company. Standard values for this property are provided in the appendix section, including descriptions of their intended use case. This field is an extensible enum, meaning that you can also use your own event type strings to categorize the events you are tracking. eventType limits you to using only a single event per hit on your application, and therefore you must use calculated fields to let the system know which event is most important. For more information, see the section on best practices for calculated fields. |
producedBy |
A string value that describes the producer or origin of the event. This field can be used to filter out certain event producers if needed for segmentation purposes. Some suggested values for this property are provided in the appendix section. This field is an extensible enum, meaning that you can also use your own strings to represent different event producers. |
identityMap |
A map field that contains a set of namespaced identities for the individual that the event applies to. This field is automatically updated by the system as identity data is ingested. In order to properly utilize this field for Real-Time Customer Profile, do not attempt to manually update the field’s contents in your data operations. See the section on identity maps in the basics of schema composition for more information on their use case. |
timestamp (Required) |
An ISO 8601 timestamp of when the event occurred, formatted as per RFC 3339 Section 5.6. This timestamp must occur in the past. See the section below on timestamps for best practices on the use of this field. |
The following sections cover best practices for designing your event-based Experience Data Model (XDM) schemas in Adobe Experience Platform.
The root timestamp
field of an event schema can only represent the observation of the event itself, and must occur in the past. If your segmentation use cases require the use of timestamps that may occur in the future, these values must be constrained elsewhere in your Experience Event schema.
For example, if a business in the travel and hospitality industry is modeling a flight reservation event, the class-level timestamp
field represents the time when the reservation event was observed. Other timestamps that are related to the event, such as the start date of the travel reservation, should be captured in separate fields provided by standard or custom field groups.
By keeping the class-level timestamp separate from other related datetime values in your event schemas, you can implement flexible segmentation use cases while preserving a timestamped account of customer journeys in your experience application.
Certain interactions in your experience applications can result in multiple related events that technically share the same event timestamp, and can therefore be represented as a single event record. For example, if a customer views a product on your website, this can result in an event record that has two potential eventType
values: a “product view” event (commerce.productViews
) or a generic “page view” event (web.webpagedetails.pageViews
). In these cases, you can use calculated fields to capture the most important attributes when multiple events are captured in a single hit.
Adobe Experience Platform Data Prep allows you to map, transform, and validate data to and from XDM. Using the available mapping functions provided by the service you can invoke logical operators to prioritize, transform, and/or consolidate data from multi-event records when being ingested into Experience Platform. In the example above, you could designate eventType
as a calculated field that would prioritize a “product view” over a “page view” whenever they both occur.
If you are manually ingesting data into Platform via the UI, see the guide on calculated fields for specific steps on how to create calculated fields.
If you are streaming data to Platform using a source connection, you can configure the source to utilize calculated fields instead. Refer to the documentation for your particular source for instructions on how to implement calculated fields when configuring the connection.
The names of several field groups have changed. See the document on field group name updates for more information.
Adobe provides several standard field groups for use with the XDM ExperienceEvent class. The following is a list of some commonly used field groups for the class:
The following section contains additional information about the XDM ExperienceEvent class.
eventType
The following table outlines the accepted values for eventType
, along with their definitions:
Value | Definition |
---|---|
advertising.clicks |
This event tracks when an action to select an advertisement occurs. |
advertising.completes |
This event tracks when a timed media asset has been watched to completion. This does not necessarily mean that the viewer watched the whole video, as the viewer could have skipped ahead. |
advertising.conversions |
This event tracks a pre-defined action performed by a customer that triggers an event for performance evaluation. |
advertising.federated |
This event tracks whether an Experience Event was created through data federation (data sharing between customers). |
advertising.firstQuartiles |
This event tracks when a digital video ad has played through 25% of its duration at normal speed. |
advertising.impressions |
This event tracks the impressions of an advertisement to a customer with the potential of being viewed. |
advertising.midpoints |
This event tracks when a digital video ad has played through 50% of its duration at normal speed. |
advertising.starts |
This event tracks when a digital video ad has started playing. |
advertising.thirdQuartiles |
This event tracks when a digital video ad has played through 75% of its duration at normal speed. |
advertising.timePlayed |
This event tracks the amount of time spent by a user on a specific timed media asset. |
application.close |
This event tracks when an application was closed or sent into the background. |
application.launch |
This event tracks when an application was launched or brought into the foreground. |
commerce.backofficeCreditMemoIssued |
This event tracks when a notice of credit has been issued to a customer. |
commerce.backofficeOrderCancelled |
This event tracks when a previously initiated purchase process has been terminated before completion. |
commerce.backofficeOrderItemsShipped |
This event tracks when the purchased items have been physically shipped to the customer. |
commerce.backofficeOrderPlaced |
This event tracks the placement of an order. |
commerce.backofficeShipmentCompleted |
This event tracks the successful completion of the entire shipment process. |
commerce.checkouts |
This event tracks when a checkout event has occurred for a product list. There can be more than one checkout event if there are multiple steps in a checkout process. If there are multiple steps, the timestamp and referenced page/experience for each event are used to identify each individual event (step), represented in order. |
commerce.productListAdds |
This event tracks when a product has been added to the product list or shopping cart. |
commerce.productListOpens |
This event tracks when a new product list (shopping cart) has been initialized or created. |
commerce.productListRemovals |
This event tracks when a product entry has been removed from a product list or shopping cart. |
commerce.productListReopens |
This event tracks when a product list (shopping cart) that was no longer accessible (abandoned) has been reactivated by a customer, such as via a re-marketing activity. |
commerce.productListViews |
This event tracks when a product list or shopping cart has received a view. |
commerce.productViews |
This event tracks when a product has received one or more views. |
commerce.purchases |
This event tracks when an order has been accepted. This is the only required action in a commerce conversion. A purchase event must have a product list referenced. |
commerce.saveForLaters |
This event tracks when a product list has been saved for future use, such a product wishlist. |
decisioning.propositionDisplay |
This event tracks when a decisioning proposition was displayed to a person. |
decisioning.propositionDismiss |
This event tracks when a decision has been made not to engage with the presented offer. |
decisioning.propositionInteract |
This event tracks when a person interacted with a decisioning proposition. |
decisioning.propositionSend |
This event tracks when it has been decided to send to a prospective customer a recommendation or offer for consideration. |
decisioning.propositionTrigger |
This event tracks the activation of a proposition process. A certain condition or action has occurred to prompt the presentation of an offer. |
delivery.feedback |
This event tracks feedback events for a delivery, such as an email delivery. |
directMarketing.emailBounced |
This event tracks when an email to a person bounced. |
directMarketing.emailBouncedSoft |
This event tracks when an email to a person soft-bounced. |
directMarketing.emailClicked |
This event tracks when a person clicked a link in a marketing email. |
directMarketing.emailDelivered |
This event tracks when an email was successfully delivered to a person’s email service. |
directMarketing.emailOpened |
This event tracks when a person opened a marketing email. |
directMarketing.emailSent |
This event tracks when a marketing email has been sent to a person. |
directMarketing.emailUnsubscribed |
This event tracks when a person unsubscribed from a marketing email. |
inappmessageTracking.dismiss |
This event tracks when an in-app message was dismissed. |
inappmessageTracking.display |
This event tracks when an in-app message was displayed. |
inappmessageTracking.interact |
This event tracks when an in-app message was interacted with. |
leadOperation.callWebhook |
This event tracks when a webhook was called in response to a lead. |
leadOperation.changeCampaignStream |
This event signifies a shift in the marketing or engagement strategy for a particular business lead. |
leadOperation.changeEngagementCampaignCadence |
This event tracks when there has been a change in how often a lead is engaged with as part of a campaign. |
leadOperation.convertLead |
This event tracks when a lead was converted. |
leadOperation.interestingMoment |
This event tracks when an interesting moment was recorded for a person. |
leadOperation.mergeLeads |
This event tracks when information from multiple leads, that refer to the same entity, were consolidated. |
leadOperation.newLead |
This event tracks when a lead was created. |
leadOperation.scoreChanged |
This event tracks when the value of the lead’s score attribute was changed. |
leadOperation.statusInCampaignProgressionChanged |
This event tracks when a lead’s status in a campaign has changed. |
listOperation.addToList |
This event tracks when a person was added to a marketing list. |
listOperation.removeFromList |
This event tracks when a person was removed from a marketing list. |
media.adBreakComplete |
This event tracks when an adBreakComplete event has occurred. This event is triggered at the start of an ad break. |
media.adBreakStart |
This event tracks when an adBreakStart event has occurred. This event is triggered at the end of an ad break. |
media.adComplete |
This event tracks when an adComplete event has occurred. This event is triggered when an advert has been completed. |
media.adSkip |
This event tracks when an adSkip event has occurred. This event is triggered when an advert has been skipped. |
media.adStart |
This event tracks when an adStart event has occurred. This event is triggered when an advert has begun. |
media.bitrateChange |
This event tracks when a bitrateChange event has occurred. This event is triggered when there is a change in the bit rate. |
media.bufferStart |
This event tracks when a bufferStart event has occurred. This event is triggered when media has begun to buffer. |
media.chapterComplete |
This event tracks when a chapterComplete event has occurred. This event is triggered at the completion of a chapter in the media. |
media.chapterSkip |
This event tracks when a chapterSkip event has occurred. This event is triggered when a user skips forward or backward to another section or chapter within the media content. |
media.chapterStart |
This event tracks when a chapterStart event has occurred. This event is triggered at the start of a specific section or chapter within the media content. |
media.downloaded |
This event tracks when media downloaded content has occurred. |
media.error |
This event tracks when an error event has occurred. This event is triggered when an error or issue occurs during media playback. |
media.pauseStart |
This event tracks when a pauseStart event has occurred. This event is triggered when a user initiates a pause in the media playback. |
media.ping |
This event tracks when an ping event has occurred. This verifies the availability of a media resource. |
media.play |
This event tracks when a play event has occurred. This event is triggered when the media content is playing, indicating active consumption by the user. |
media.sessionComplete |
This event tracks when a sessionComplete event has occurred. This event marks the end of a media playback session. |
media.sessionEnd |
This event tracks when a sessionEnd event has occurred. This event indicates the conclusion of a media session. This conclusion could involve closing the media player or stopping playback. |
media.sessionStart |
This event tracks when a sessionStart event has occurred. This event marks the beginning of a media playback session. It is triggered when a user starts playing a media file. |
media.statesUpdate |
This event tracks when a statesUpdate event has occurred. The player state tracking capabilities can be attached to an audio or video stream. The standard states are: fullscreen, mute, closedCaptioning, pictureInPicture, and inFocus. |
opportunityEvent.addToOpportunity |
This event tracks when a person was added to an opportunity. |
opportunityEvent.opportunityUpdated |
This event tracks when an opportunity was updated. |
opportunityEvent.removeFromOpportunity |
This event tracks when a person was removed from an opportunity. |
pushTracking.applicationOpened |
This event tracks when a person opened an application from a push notification. |
pushTracking.customAction |
This event tracks when a person selected a custom action in a push notification. |
web.formFilledOut |
This event tracks when a person filled out a form on a web page. |
web.webinteraction.linkClicks |
This event tracks when a link has been selected one or more times. |
web.webpagedetails.pageViews |
This event tracks when a webpage has received one or more views. |
location.entry |
This event tracks the entry of a person or device at a specific location. |
location.exit |
This event tracks the exit of a person or device from a specific location. |
producedBy
The following table outlines some accepted values for producedBy
:
Value | Definition |
---|---|
self |
Self |
system |
System |
salesRef |
Sales Representative |
customerRep |
Customer Representative |