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.

The structure of XDM ExperienceEvent as it appears in the Platform UI.

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. 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, but must take place from 1970 onwards. See the section below on timestamps for best practices on the use of this field.

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.

A sample Experience Event schema with Flight Reservation and Start Date highlighted.

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

NOTE
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:

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:

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.
click
Deprecated Instead use decisioning.propositionInteract.
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 is used when the Web SDK automatically sends information about what’s being displayed on a page. However, you don’t need this event type if you’re already including display information in other ways, like with top and bottom of page hits. For bottom of page hits, you can choose any event type you like.
decisioning.propositionDismiss
This event type is used when an Adobe Journey Optimizer in-application message or content card is dismissed.
decisioning.propositionFetch
Used to indicate that an event is primarily to fetch decisioning. Adobe Analytics will drop this event automatically.
decisioning.propositionInteract
This event type is used to track interactions, such as clicks, on personalized content.
decisioning.propositionSend
This event tracks when it has been decided to send to a prospective customer a recommendation or offer for consideration.
decisioning.propositionTrigger
Events of this type are stored in local storage by the Web SDK but are not sent to Experience Edge. Each time a ruleset is satisfied, an event is generated and stored in local storage (if that setting is enabled).
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.
display
Deprecated Instead use decisioning.propositionDisplay.
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 signals the completion of an ad break.
media.adBreakStart
This event signals the start of an ad break.
media.adComplete
This event signals the completion of an advert.
media.adSkip
This event signals when an advert has been skipped.
media.adStart
This event signals the start of an advert.
media.bitrateChange
This event signals when there is a change in the bit rate.
media.bufferStart
The media.bufferStart event type is sent when buffering begins. There is no specific bufferResume event type; buffering is considered to have resumed when a play event is sent following a bufferStart event.
media.chapterComplete
This event signals the completion of a chapter.
media.chapterSkip
This event is triggered when a user skips forward or backward to another section or chapter.
media.chapterStart
This event signals the start of a chapter.
media.downloaded
This event tracks when media downloaded content has occurred.
media.error
This event signals when an error has occurred 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. There is no resume event type. A resume is inferred when you send a play event after a pauseStart.
media.ping
The media.ping event type is used to indicate ongoing playback status. For main content, this event must be sent every 10 seconds during playback, starting 10 seconds after playback begins. For ad content, it must be sent every second during ad tracking. Ping events should not include the params map in the request body.
media.play
The media.play event type is sent when the player transitions to the playing state from another state, such as buffering, paused (when resumed by the user), or error (when recovered), including scenarios like autoplay. This event is triggered by the player’s on('Playing') callback.
media.sessionComplete
This event is sent when the end of the main content is reached.
media.sessionEnd
The media.sessionEnd event type notifies the Media Analytics backend to immediately close a session when a user abandons their viewing and is unlikely to return. If this event is not sent, the session will time out after 10 minutes of inactivity or 30 minutes without playhead movement. Any subsequent media calls with that Session ID will be ignored.
media.sessionStart
The media.sessionStart event type is sent with the session initiation call. Upon receiving a response, the Session ID is extracted from the Location header and used for all subsequent event calls to the Collection server.
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.
personalization.request
Deprecated Instead use decisioning.propositionFetch.
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
The event signals that a link click has been automatically recorded by the Web SDK.
web.webpagedetails.pageViews
This event type is the standard method for marking the hit as a page view.
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.

Suggested values for producedBy producedBy

The following table outlines some accepted values for producedBy:

Value
Definition
self
Self
system
System
salesRef
Sales Representative
customerRep
Customer Representative
recommendation-more-help
62e9ffd9-1c74-4cef-8f47-0d00af32fc07