XDM ExperienceEvent class
XDM ExperienceEvent is a standard Experience Data Model (XDM) class. Use this class 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 this class, while the rest are optional. The values of some of the fields are automatically populated when data is ingested.
_id
(Required)
_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
eventType
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
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
See the section on identity maps in the basics of schema composition for more information on their use case.
timestamp
(Required)
Best practices for event modeling
The following sections cover best practices for designing your event-based Experience Data Model (XDM) schemas in Adobe Experience Platform.
Timestamps timestamps
The root timestamp
field of an event schema can only represent the observation of the event itself, and must occur in the past. However, the event must take place from 1970 onwards. 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.
Using calculated fields calculated
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.
Use Adobe Experience Platform Data Prep 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.
Compatible schema field groups field-groups
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:
- Adobe Analytics ExperienceEvent Full Extension
- Balance Transfers
- Campaign Marketing Details
- Card Actions
- Channel Details
- Commerce Details
- Deposit Details
- Device Trade-In Details
- Dining Reservation
- End User ID Details
- Environment Details
- Flight Reservation
- IAB TCF 2.0 Consent
- Lodging Reservation
- MediaAnalytics Interaction Details
- Quote Request Details
- Reservation Details
- Web Details
Appendix
The following section contains additional information about the XDM ExperienceEvent class.
Accepted values for eventType
eventType
The following table outlines the accepted values for eventType
, along with their definitions:
advertising.clicks
advertising.completes
advertising.conversions
advertising.federated
advertising.firstQuartiles
advertising.impressions
advertising.midpoints
advertising.starts
advertising.thirdQuartiles
advertising.timePlayed
application.close
application.launch
commerce.backofficeCreditMemoIssued
commerce.backofficeOrderCancelled
commerce.backofficeOrderItemsShipped
commerce.backofficeOrderPlaced
commerce.backofficeShipmentCompleted
commerce.checkouts
commerce.productListAdds
commerce.productListOpens
commerce.productListRemovals
commerce.productListReopens
commerce.productListViews
commerce.productViews
commerce.purchases
commerce.saveForLaters
decisioning.propositionDisplay
decisioning.propositionDismiss
decisioning.propositionInteract
decisioning.propositionSend
decisioning.propositionTrigger
delivery.feedback
directMarketing.emailBounced
directMarketing.emailBouncedSoft
directMarketing.emailClicked
directMarketing.emailDelivered
directMarketing.emailOpened
directMarketing.emailSent
directMarketing.emailUnsubscribed
inappmessageTracking.dismiss
inappmessageTracking.display
inappmessageTracking.interact
leadOperation.callWebhook
leadOperation.changeCampaignStream
leadOperation.changeEngagementCampaignCadence
leadOperation.convertLead
leadOperation.interestingMoment
leadOperation.mergeLeads
leadOperation.newLead
leadOperation.scoreChanged
leadOperation.statusInCampaignProgressionChanged
listOperation.addToList
listOperation.removeFromList
media.adBreakComplete
adBreakComplete
event has occurred. This event is triggered at the start of an ad break.media.adBreakStart
adBreakStart
event has occurred. This event is triggered at the end of an ad break.media.adComplete
adComplete
event has occurred. This event is triggered when an advert has been completed.media.adSkip
adSkip
event has occurred. This event is triggered when an advert has been skipped.media.adStart
adStart
event has occurred. This event is triggered when an advert has begun.media.bitrateChange
bitrateChange
event has occurred. This event is triggered when there is a change in the bit rate.media.bufferStart
bufferStart
event has occurred. This event is triggered when media has begun to buffer.media.chapterComplete
chapterComplete
event has occurred. This event is triggered at the completion of a chapter in the media.media.chapterSkip
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
chapterStart
event has occurred. This event is triggered at the start of a specific section or chapter within the media content.media.downloaded
media.error
error
event has occurred. This event is triggered when an error or issue occurs during media playback.media.pauseStart
pauseStart
event has occurred. This event is triggered when a user initiates a pause in the media playback.media.ping
ping
event has occurred. This verifies the availability of a media resource.media.play
play
event has occurred. This event is triggered when the media content is playing, indicating active consumption by the user.media.sessionComplete
sessionComplete
event has occurred. This event marks the end of a media playback session.media.sessionEnd
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
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
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
opportunityEvent.opportunityUpdated
opportunityEvent.removeFromOpportunity
pushTracking.applicationOpened
pushTracking.customAction
web.formFilledOut
web.webinteraction.linkClicks
web.webpagedetails.pageViews
location.entry
location.exit
Suggested values for producedBy
producedBy
The following table outlines some accepted values for producedBy
:
self
system
salesRef
customerRep