Skip to main content

Snowplow atomic event properties

This page provides a reference for the standard fields that are found in all Snowplow events. These fields define the Snowplow tracker protocol, and are often called "atomic properties" or "atomic fields" in reference to the Snowplow atomic.events table. They're also sometimes called "canonical fields".

Fields that are populated during tracking have two names associated with them:

  • Payload property: a short payload name, to reduce the size of the HTTP request
  • Field name: a more descriptive column or field name

The field type refers to the data type in the enriched event data. For some fields, the type is different for the raw tracker payload and the enriched event. Again, this is to reduce the size of the HTTP request.

Different event fields are populated by different applications, such as tracker SDKs or enrichments. The source of data for each field is indicated in the tables below.

The reqd? values in these tables specify whether a field is required for a Snowplow event. Required fields will always have values.

Any payload that conforms to this protocol is a valid Snowplow event payload, whether it's sent by a Snowplow tracker SDK, a webhook, or a custom application. If you want to get into the details, check out these example HTTP requests. In total, the tracker protocol defines 131 fields, of which 89 are in use by Snowplow applications.

Common fields#

These fields are common to all Snowplow events, regardless of platform or event type.

Event fields#

The event_id is the unique identifier (UUID) for the table row. This should be generated by trackers, but if missing will be generated by the enrichment process.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
eeventtextThe type of event recordedYespage_viewTracking
eidevent_idtextA UUID for each eventYesc6ef3124-b53a-4b13-a233-0088f79dcbcbTracking (or enrichment if empty)
event_fingerprinttextHash client-set event fields, used to de-dupe recordsNoAADCE520E20C2899F4CED228A79A3083Event fingerprint enrichment

This table shows the possible values for the event field:

Event typePayload e valueField event value
Self-describing eventueunstruct
Page viewpvpage_view
Page pingpppage_ping
Structured eventsestruct
Legacy ecommerce eventstr and titransaction and transaction_item

User fields#

The domain_userid is regarded as the most reliable session based identifier for most use cases. It's treated as the primary user_identifier field in our data models that rely on sessionization, including the Unified Digital data model.

The domain_sessionidx is the number or index of the current user session. For example, an event occurring during a user's first session would have domain_sessionidx set to 1. The JavaScript tracker calculates this field by storing a visit count in a first-party cookie.

The equivalent values on mobile are tracked in a session entity.

The network_userid is set by a Collector cookie by default. You can override it by setting a network_userid with your tracker.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
uiduser_idtextUnique identifier for user, set by the business using setUserIdNoc94f860b-1266-4dad-ae57-3a36a414a521Tracking
duiddomain_useridtextUnique identifier for a user, based on a first party cookieNo4b0dfa75-9a8c-46a1-9691-01add9db4200Tracking
tnuidnetwork_useridtextUser ID set by Snowplow using server-set cookieNoecdff4d0-9175-40ac-a8bb-325c49733607Tracking or pipeline
siddomain_sessionidtextUnique identifier (UUID) for this visit of this domain_userid to this domainNoc6ef3124-b53a-4b13-a233-0088f79dcbcbTracking
viddomain_sessionidxintIndex of number of visits that this domain_userid has made to this domainNo3Tracking
ipuser_ipaddresstextUser IP address, can be overwritten with the IP anonymization enrichmentNo92.231.54.234Tracking or IP anonymization enrichment

Application fields#

Use the application ID to distinguish events tracked from different applications or websites by the same Snowplow stack.

The platform ID is used to distinguish the same app running on different platforms, e.g. iOS vs web.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
aidapp_idtextApplication IDYessnow-game-androidTracking
pplatformtextPlatform the app runs onYeswebTracking
tnaname_trackertextTracker namespaceNotracker_1Tracking

This table shows the possible values for the platform field:

Platformplatform value
Web, including mobile webweb
Mobile, tabletmob
Desktop, laptoppc
Server-side applicationsrv
General applicationapp
Connected TVtv
Games consolecnsl
Internet of Thingsiot
Tracker namespacing

The tracker namespace parameter is used to distinguish between different trackers. The name can be any string that doesn't contain a colon or semicolon character. Tracker namespacing allows you to run multiple trackers, pinging to different collectors.

Time and date fields#

The etl_tstamp field records when the event was validated and enriched, not when it was loaded into the warehouse. The name is historical.

To set the os_timezone timezone field, use the timezone plugin on web trackers, or set the timezone in the mobile tracker configuration.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
collector_tstamptimestampTimestamp for the event recorded by the CollectorYes2013-11-26 00:02:05.123Pipeline
dtmdvce_created_tstamptimestampTimestamp for the event recorded on the client deviceNo2013-11-26 00:03:57.885Tracking
stmdvce_sent_tstamptimestampTimestamp when event occurred, as recorded by client deviceNo2013-11-26 00:03:58.032Tracking
etl_tstamptimestampTimestamp for when the event was validated and enrichedNo2017-01-26 00:01:25.292Pipeline
derived_tstamptimestampTimestamp making allowance for inaccurate device clockNo2013-11-26 00:02:04.123Default enrichment
ttmtrue_tstamptimestampUser-set "true timestamp" for the eventNo2013-11-26 00:02:04.123Tracking
load_tstamp timestampTimestamp for when the data was loaded into the warehouseNo2013-11-26 00:02:04.123Pipeline
tzos_timezonetextClient operating system timezoneNoEurope/LondonTracking

The trackers send timestamp properties as int in the payload, representing milliseconds since the Unix epoch, e.g. 1361553733313. They're converted to timestamp type during enrichment. Similarly, the tz property is URL-encoded in the payload, e.g. Europe%2FLondon, and decoded during enrichment.

Read more about Snowplow timestamps here.

Device and operating system fields#

The dvce_screenheight and dvce_screenwidth screen resolution fields originate from a single res payload property. It's a string with the format "<width>x<height>", e.g. 1900x1024. During enrichment, this string is split into the two separate integer fields.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
uauseragenttextRaw useragentNoMozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0Tracking or pipeline
resdvce_screenheightintScreen height in pixelsNo1024Tracking
resdvce_screenwidthintScreen width in pixelsNo1900Tracking

For more information on this topic check out the device data page.

IP address fields#

These fields are populated by the IP enrichment.

Field nameTypeDescriptionReqd?ExampleSourceWebMobile
ip_isptextUser's ISPNoFDN CommunicationsIP enrichment
ip_organizationtextOrganization associated with the user's IP address - defaults to ISP name if none is foundNoBouygues TelecomIP enrichment
ip_domaintextSecond level domain name associated with the user's IP addressNonuvox.netIP enrichment
ip_netspeedtextUser's connection typeNoCable/DSLIP enrichment

Location fields#

These fields are populated by the IP enrichment, based on the IP address.

Field nameTypeDescriptionReqd?ExampleSourceWebMobile
geo_countrytextISO 3166-1 code for the country the user is located inNoGB, USIP enrichment
geo_regiontextISO-3166-2 code for country region the user is inNoI9, TXIP enrichment
geo_citytextCity the user is inNoNew York, LondonIP enrichment
geo_zipcodetextPostcode the user is inNo94109IP enrichment
geo_latitudetextUser location latitudeNo37.443604IP enrichment
geo_longitudetextUser location longitudeNo-122.4124IP enrichment
geo_region_nametextUser region nameNoFloridaIP enrichment
geo_timezonetextUser timezone nameNoEurope/LondonIP enrichment

For more information on this topic check out the geolocation data page.

Marketing fields#

These fields are populated by the campaign attribution enrichment.

Field nameTypeDescriptionReqd?ExampleSourceWebMobile
mkt_mediumtextType of traffic sourceNo'cpc', 'affiliate', 'organic', 'social'Campaign attribution enrichment
mkt_sourcetextThe company or website where the traffic came fromNo'Google', 'Facebook'Campaign attribution enrichment
mkt_termtextAny keywords associated with the referrerNo'new age tarot decks'Campaign attribution enrichment
mkt_contenttextThe content of the ad, or an ID so that it can be looked upNo13894723Campaign attribution enrichment
mkt_campaigntextThe campaign IDNo'diageo-123'Campaign attribution enrichment
mkt_clickidtextThe click IDNo'ac3d8e459'Campaign attribution enrichment
mkt_networktextThe ad network to which the click ID belongsNo'DoubleClick'Campaign attribution enrichment

Cross-domain tracking fields#

The pipeline populates these fields by default if the event's url has a cross-navigation querystring.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
refr_domain_useridtextThe Snowplow domain_userid of the referring websiteNobc2e92ec6c204a14Default enrichment
refr_dvce_tstamptimestampThe time of attaching the domain_userid to the inbound linkNo2013-11-26 00:02:05Default enrichment

Snowplow versions fields#

These fields record the versions of the various Snowplow components involved in processing the event.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
tvv_trackertextTracker versionYesjs-3.0.0Tracking
v_collectortextCollector versionYesssc-2.1.0-kinesisPipeline
v_etltextETL application versionsYessnowplow-micro-1.1.0-common-1.4.2Default enrichment

Web-specific fields#

These fields apply only to events from web.

Page fields#

The url, refr and page payload properties are URL-encoded in the payload, e.g. https%3A%2F%2Fwww.snowplow.io%2F or Snowplow%20Behavoral%20Data, and decoded during enrichment.

The url property is further parsed during enrichment to populate the various page_url* fields. Similarly, the refr property is parsed to populate the various refr_* fields.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
urlpage_urltextThe page URLNohttps://www.snowplow.io/product/index.html?id=GTM-DLRG#conclusionTracking
page_urlschemetextScheme, also known as protocolNohttpsDefault enrichment
page_urlhosttextHost, also known as domainNowww.snowplow.ioDefault enrichment
page_urlportintPort if specified, scheme dependent if not; 443 for HTTPS, 80 for HTTPNo443Default enrichment
page_urlpathtextPath to pageNo/product/index.htmlDefault enrichment
page_urlquerytextQuerystringNoid=GTM-DLRGDefault enrichment
page_urlfragmenttextFragment, also known as anchorNoconclusionDefault enrichment
pagepage_titletextWeb page titleNoSnowplow Behavioral DataTracking
refrpage_referrertextURL of the referrerNohttps://www.google.com/search?q=psychic+oracle+cardsTracking
refr_urlschemetextReferrer schemeNohttpsDefault enrichment
refr_urlhosttextReferrer hostNowww.google.comDefault enrichment
refr_urlportintReferrer portNo443Default enrichment
refr_urlpathtextReferrer page pathNo/searchDefault enrichment
refr_urlquerytextReferrer URL querystringNoq=psychic+oracle+cardsDefault enrichment
refr_urlfragmenttextReferrer URL fragmentNoDefault enrichment
refr_mediumtextType of referrerNosearch', 'internalReferrer parser enrichment
refr_sourcetextName of referrer if recognizedNoGoogleReferrer parser enrichment
refr_termtextKeywords if source is a search engineNopsychic oracle cardsReferrer parser enrichment

Document fields#

The doc_width and doc_height page size fields originate from a single ds payload property. It's a string with the format "<width>x<height>", e.g. 3000x1024. During enrichment, this string is split into the two separate integer fields.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
csdoc_charsettextThe page's character encodingNoUTF-8Tracking
dsdoc_widthintThe page's width in pixelsNo1024Tracking
dsdoc_heightintThe page's height in pixelsNo3000Tracking

Browser fields#

The br_viewwidth and br_viewheight page size fields originate from a single vp payload property. It's a string with the format "<width>x<height>", e.g. 1000x1000. During enrichment, this string is split into the two separate integer fields.

Payload propertyField nameTypeDescriptionReqd?ExampleSourceWebMobile
langbr_langtextLanguage the browser is set toNoen-GBTracking
cookiebr_cookiesbooleanWhether the browser is accepting cookiesNo1Tracking
cdbr_colordepthintBit depth of the browser color paletteNo24Tracking
vpbr_viewwidthintViewport widthNo1000Tracking
vpbr_viewheightintViewport heightNo1000Tracking

For more information on this topic check out the device and browser data page.

Baked-in event fields#

Baked-in event data is stored in specific default fields, rather than in self-describing event or entity columns.

Page views#

There are no fields that are specific to page view events. All the relevant fields are included in the standard fields available for any web-based event e.g. page_url, or page_title.

Page pings#

Page ping events include four additional fields. They indicate how a user has scrolled over a web page since the last page ping:

Payload propertyField nameTypeDescriptionReqd?Example
pp_mixpp_xoffset_minintMinimum page x offset seen in the last ping periodNo10
pp_maxpp_xoffset_maxintMaximum page x offset seen in the last ping periodNo100
pp_miypp_yoffset_minintMinimum page y offset seen in the last ping periodNo5
pp_maypp_yoffset_maxintMaximum page y offset seen in the last ping periodNo200

Structured events#

Structured events use these fields to capture event data:

Payload propertyField nameTypeDescriptionReqd?Example
se_case_categorytextCategory of eventYes *ecomm, video
se_acse_actiontextAction performed, or event nameYes *add-to-basket, play-video
se_lase_labeltextThe object of the action e.g. the ID of the video played. or SKU of the product added to basketNopbz00123
se_prse_propertytextA property associated with the object of the actionNoHD, large
se_vase_valuedecimalA value associated with the event or action e.g. the value of goods added-to-basketNo9.99

* These fields are only required for structured events.

Self-describing event fields#

For self-describing events, the pipeline extracts data from the event schema and populates the following fields:

Field nameTypeDescriptionReqd?ExampleSourceWebMobile
event_vendortextBusiness that defined the eventYescom.acmeDefault enrichment
event_nametextEvent nameYeslink_clickDefault enrichment
event_formattextFormat for event; always jsonschemaYesjsonschemaDefault enrichment
event_versiontextVersion of event schemaYes1-0-2Default enrichment
Extra columns for self-describing event data

Data in self-describing events or entities is added as additional columns, rather than in these standard atomic fields.

Check out the warehouse table structure page to learn more.

Deprecated fields#

We have deprecated the following fields. They're no longer populated by Snowplow trackers or enrichments, but they're still part of the Snowplow tracker protocol:

Field nameTypeDescriptionReqd?ExampleSourceWebMobile
txn_idintTransaction ID set client-side, used to de-dupe recordsNo421828Deprecated
dvce_typetextType of deviceNoComputerDeprecated
dvce_ismobilebooleanIs the device mobile?No1Deprecated
os_nametextName of operating systemNoAndroidDeprecated
os_familytextOperating system familyNoLinuxDeprecated
os_manufacturertextCompany responsible for OSNoAppleDeprecated
user_fingerprintintA user fingerprint generated by looking at the individual browser featuresNo2161814971Deprecated
br_nametextBrowser nameNoFirefox 12Deprecated
br_versiontextBrowser versionNo12.0Deprecated
br_familytextBrowser familyNoFirefoxDeprecated
br_typetextBrowser typeNoBrowserDeprecated
br_renderenginetextBrowser rendering engineNoGECKODeprecated
br_features_pdfbooleanWhether the browser recognizes PDFsNo1Deprecated
br_features_flashbooleanWhether Flash is installedNo1Deprecated
br_features_javabooleanWhether Java is installedNo1Deprecated
br_features_directorbooleanWhether Adobe Shockwave is installedNo1Deprecated
br_features_quicktimebooleanWhether QuickTime is installedNo1Deprecated
br_features_realplayerbooleanWhether RealPlayer is installedNo1Deprecated
br_features_windowsmediabooleanWhether mplayer2 is installedNo1Deprecated
br_features_gearsbooleanWhether Google Gears is installedNo1Deprecated
br_features_silverlightbooleanWhether Microsoft Silverlight is installedNo1Deprecated

Legacy ecommerce fields#

There are a large number of fields in the tracker protocol specifically for legacy ecommerce transaction and transaction_item events.

Fields that start tr_ relate to the transaction as a whole. Fields that start ti_ refer to the specific item included in the transaction, e.g. a product in the basket.

Single transactions typically span multiple lines of data: there will be a single line where event = transaction, where the tr_ fields are set, and multiple lines (one for each product included) where event = transaction_item and the ti_ fields are set.

Field nameTypeDescriptionReqd?Example
tr_orderidtextOrder IDYes#134
tr_affiliationtextTransaction affiliation (e.g. store where sale took place)Noweb
tr_totaldecimalTotal transaction valueYes12.99
tr_taxdecimalTotal tax included in transaction valueNo3.00
tr_shippingdecimalDelivery cost chargedNo0.00
tr_total_base *decimalTotal in base currencyNo12.99
tr_tax_base *decimalTotal tax in base currencyNo3.00
tr_shipping_base *decimalDelivery cost in base currencyNo0.00
tr_citytextDelivery address, cityNoLondon
tr_statetextDelivery address, stateNoWashington
tr_countrytextDelivery address, countryNoFrance
tr_currencytextCurrencyNoUSD
ti_orderidtextOrder IDYes#134
ti_skutextProduct SKUYespbz00123
ti_nametextProduct nameNoCone pendulum
ti_categorytextProduct categoryNoNew Age
ti_pricedecimalProduct unit priceYes9.99
ti_price_base *decimalPrice in base currencyNo9.99
ti_quantityintNumber of product in transactionYes2
ti_currencytextCurrencyNoEUR
base_currency *textReporting currencyNoGBP

* Set exclusively by the Currency conversion enrichment.