Skip to main content

Ecommerce events

Snowplow provides support for tracking and modeling events from ecommerce stores directly in our trackers and data models.

Events and context entities

Ecommerce action event

Each ecommerce event is a self-describing event using a single ecommerce action schema.

The events are distinguished by their type property, which is different for each Event class tracked.

snowplow_ecommerce_action

Event
Schema for an Ecommerce action
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/snowplow_ecommerce_action/jsonschema/1-0-2
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"type": "list_view",
"name": "shop the look"
}
Schema
PropertyDescription
type
Required. Standard ecommerce actions.
Must be one of: add_to_cart, remove_from_cart, product_view, list_click, list_view, promo_click, promo_view, checkout_step, transaction, refund, trns_error
name
string
Optional. The name of the list presented to the user E.g. product list, search results, shop the look, frequently bought with.
Warehouse query
select
unstruct_event_com_snowplowanalytics_snowplow_ecommerce_snowplow_ecommerce_action_1_0_2
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'snowplow_ecommerce_action'
and events.event_vendor = 'com.snowplowanalytics.snowplow.ecommerce'

Ecommerce context entities

All tracked ecommerce properties are tracked as context entities.

Cart

cart

Entity
Schema for a cart entity in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/cart/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"cart_id": null,
"currency": "EUR",
"total_value": 12
}
Schema
PropertyDescription
cart_id
string
Optional. The unique ID representing this cart.
total_value
number
Required. The total value of the cart after this interaction.
currency
string
Required. The currency used for this cart (ISO 4217).

Checkout step

checkout_step

Entity
Schema for a checkout step entity in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/checkout_step/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"step": 2,
"account_type": "guest",
"billing_full_address": null,
"billing_postcode": null,
"coupon_code": null,
"delivery_method": null,
"delivery_provider": null,
"marketing_opt_in": null,
"payment_method": null,
"proof_of_payment": null,
"shipping_full_address": null,
"shipping_postcode": null
}
Schema
PropertyDescription
step
integer
Required. Checkout step index.
shipping_postcode
string
Optional. Shipping address postcode.
billing_postcode
string
Optional. Billing address postcode.
shipping_full_address
string
Optional. Full shipping address.
billing_full_address
string
Optional. Full billing address.
delivery_provider
string
Optional. Can be used to discern delivery providers DHL, PostNL etc.
delivery_method
string
Optional. Can be used to discern delivery methods selected E.g. store pickup, standard delivery, express delivery, international.
coupon_code
string
Optional. Coupon applied at checkout.
account_type
string
Optional. Type of account used on checkout. E.g. existing user, guest.
payment_method
string
Optional. Any kind of payment method the user selected to proceed E.g. card, PayPal, Alipay etc.
proof_of_payment
string
Optional. Invoice or receipt.
marketing_opt_in
boolean
Optional. If opted in to marketing campaigns.

Page

page

Entity
Schema for a page entity in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/page/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"type": "checkout step 1",
"language": null,
"locale": null
}
Schema
PropertyDescription
type
string
Required. The type of the page that was visited E.g. homepage, product page, checkout page.
language
string
Optional. The language that the web page is based in.
locale
string
Optional. The locale version of the site that is running.

Product

product

Entity
Schema for a product entity in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/product/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"id": "1236",
"name": null,
"category": "Hats",
"price": 12,
"list_price": null,
"quantity": null,
"size": null,
"variant": null,
"brand": "Snowplow",
"inventory_status": null,
"position": null,
"currency": "EUR",
"creative_id": null
}
Schema
PropertyDescription
id
string
Required. The SKU or product ID.
name
string
Optional. The name or title of the product.
category
string
Required. The category the product belongs to. Use a consistent separator to express multiple levels. E.g. Woman/Shoes/Sneakers
price
number
Required. The price of the product at the current time.
list_price
number
Optional. The list or recommended retail price of a product.
quantity
integer
Optional. The quantity of the product taking part in the ecommerce action.
size
string
Optional. The size of the product.
variant
string
Optional. The variant of the product.
brand
string
Optional. The brand of the product.
inventory_status
string
Optional. The inventory status of the product E.g. in stock, out of stock, preorder, backorder.
position
integer
Optional. The position the product was presented in a list of products E.g. search results, product list page.
currency
string
Required. The currency in which the product is being priced (ISO 4217).
creative_id
string
Optional. Identifier/Name/Url for the creative presented on a list or product view.

Promotion

promotion

Entity
Schema for a promotion entity in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/promotion/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{}
Schema
PropertyDescription
id
string
Required. The ID of the promotion.
name
string
Optional. The name of the promotion.
product_ids
array
Optional. Array of SKUs or product IDs showcased in the promotion.
position
integer
Optional. The position the promotion was presented in a list of promotions E.g. banner, slider.
creative_id
string
Optional. Identifier/Name/Url for the creative presented on the promotion.
type
string
Optional. Type of the promotion delivery mechanism. E.g. popup, banner, intra-content
slot
string
Optional. The website slot in which the promotional content was added to. E.g. Identifier for slot sidebar-1, intra-content-2

Refund

refund

Entity
Schema for a refund in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/refund/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{}
Schema
PropertyDescription
transaction_id
string
Required. The ID of the transaction.
currency
string
Required. The currency in which the product is being priced (ISO 4217).
refund_amount
number
Required. The monetary amount refunded.
refund_reason
string
Optional. Reason for refunding the whole or part of the transaction.

Transaction

transaction

Entity
Schema for a transaction entity in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/transaction/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"transaction_id": "TtlZ3b",
"currency": "EUR",
"payment_method": "BNPL",
"revenue": 13,
"total_quantity": 1,
"credit_order": null,
"discount_amount": null,
"discount_code": null,
"shipping": 1,
"tax": null
}
Schema
PropertyDescription
transaction_id
string
Required. The ID of the transaction.
revenue
number
Required. The revenue of the transaction.
currency
string
Required. The currency used for the transaction (ISO 4217).
payment_method
string
Required. The payment method used for the transaction.
total_quantity
integer
Required. Total quantity of items in the transaction.
tax
number
Optional. Total amount of tax on the transaction.
shipping
number
Optional. Total cost of shipping on the transaction.
discount_code
string
Optional. Discount code used.
discount_amount
number
Optional. Discount amount taken off.
credit_order
boolean
Optional. Whether the transaction is a credit order or not.

Transaction error

transaction_error

Entity
Schema for a transaction error or rejection entity in ecommerce.
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/transaction_error/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{}
Schema
PropertyDescription
error_code
string
Optional. Error-identifying code for the transaction issue. E.g. E522
error_shortcode
string
Optional. Shortcode for the error occurred in the transaction. E.g. declined_by_stock_api, declined_by_payment_method, card_declined, pm_card_radarBlock
error_description
string
Optional. Longer description for the error occurred in the transaction.
error_type
string
Optional. Hard error types mean the customer must provide another form of payment e.g. an expired card. Soft errors can be the result of temporary issues where retrying might be successful e.g. processor declined the transaction.
Must be one of: hard, soft,
resolution
string
Optional. The resolution selected for the error scenario. E.g. retry_allowed, user_blacklisted, block_gateway, contact_user, default

User

user

Entity
Schema for an user entity in Ecommerce
Schema URIiglu:com.snowplowanalytics.snowplow.ecommerce/user/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"id": "U12345",
"email": "john@email.com",
"is_guest": true
}
Schema
PropertyDescription
id
string
Required. The user ID.
is_guest
boolean
Optional. Whether or not the user is a guest.
email
string
Optional. The user's email address.

How to track?

Modeled data using the snowplow-ecommerce dbt package

The package contains a fully incremental model that transforms raw ecommerce event data into a set of derived tables based around the following ecommerce data objects: carts, checkouts, products and transactions.

Derived tableTable description
snowplow_ecommerce_base_events_this_runBase: Performs the incremental logic, the table contains a de-duped data set of all events required for the current run of the model, and is the foundation for all other models generated.Docs
snowplow_ecommerce_cart_interactionsCarts: Parses the cart interactions that occur to provide handy filters and aggregations, which helps identify what happened to carts on a session level to extract, for example, abandoned carts with ease.Docs
snowplow_ecommerce_checkout_interactionsCheckouts: Parses checkout steps that occur to provide handy filters and aggregations to help identify which checkout steps were walked through, and what details were entered in each of these steps. This lends itself well to a funnel analysis.Docs
snowplow_ecommerce_product_interactionsProducts: Parses product view and list information to provide insights into which products were being viewed, what details were being shown to the end user and how the user then interacted with these products.Docs
snowplow_ecommerce_transaction_interactionsTransactions: Parses transaction actions to provide insights into which transactions occurred, how much revenue was generated from them, and other insights leveraging the many properties of the transaction ecommerce context.Docs
snowplow_ecommerce_sessionsSessions: Aggregates all other data into a sessions table which leverages the domain_sessionid.Docs

Ecommerce analytics accelerator

Follow the ecommerce accelerator for a complete guide to build a deeper understanding of customer behavior in your ecommerce store.

Old ecommerce events

Some of our trackers also provide ecommerce tracking APIs for older ecommerce events. This is no longer the recommended approach to track ecommerce events.

Transaction tracking

Transaction events allow you to track a transaction. The items of the transaction can be tracked using Transaction Item events.

ParameterTable ColumnTypeDescription
tr_idtr_orderidtextOrder ID
tr_aftr_affiliationtextTransaction affiliation (e.g. channel)
tr_tttr_totaldecimalTransaction total value
tr_txtr_taxdecimalTransaction tax value (i.e. amount of VAT included)
tr_shtr_shippingdecimalDelivery cost charged
tr_citr_citytextDelivery address: city
tr_sttr_statetextDelivery address: state
tr_cotr_countrytextDelivery address: country
tr_cutr_currencytextTransaction Currency

Transaction item events

Transaction item events are separate events, representing the items of a transaction, which are linked to a Transaction event via ti_id which should map to tr_id of a transaction event.

ParameterTable ColumnTypeDescriptionExample values
ti_idti_orderidtextOrder ID12345
ti_skti_skutextItem SKUYes
ti_nmti_nametextItem nameYes
ti_cati_categorytextItem categoryYes
ti_prti_pricedecimalItem priceYes
ti_quti_quantityintegerItem quantityYes
ti_cuti_currencytextCurrencyYes