E-commerce Spec

MetaRouter’s e-commerce spec helps define the journey for a customer as they browse your store, click on promotions, view products, add those products to a cart, and complete a purchase.
Note: Not all integrations support every event listed here. Please refer to individual integration documentation for more information on supported events and properties.

Event Lifecycles

Here is a list of supported events within the e-commerce spec that represent a user's journey through typical e-commerce websites and apps.

Browsing Overview

ActionDescription
products_searchedUser searched for products
product_list_viewedUser viewed a product list or category
product_list_filteredUser filtered a product list or category

Promotions Overview

ActionDescription
promotion_viewedUser viewed promotion
promotion_clickedUser clicked on promotion

Core Ordering Overview

ActionDescription
product_clickedUser clicked on a product
product_viewedUser viewed product details
product_addedUser added a product to their shopping cart
product_removedUser removed a product from their shopping cart
cart_viewedUser viewed their shopping cart
checkout_startedUser initiated the order process
checkout_step_viewedUser viewed a checkout step
checkout_step_completedUser completed a checkout step
payment_info_enteredUser added payment information
order_completedUser completed the order
order_updatedUser updated the order
order_refundedUser refunded the order
order_cancelledUser cancelled the order

Coupons Overview

ActionDescription
coupon_enteredUser entered a coupon in a shopping cart or on an order
coupon_appliedCoupon was applied in a user’s shopping cart or on an order
coupon_deniedCoupon was denied from a user’s shopping cart or order
coupon_removedUser removed a coupon from a cart or order

Wishlisting Overview

ActionDescription
product_added_to_wishlistUser added a product to the wishlist
product_removed_from_wishlistUser removed a product from the wishlist
wishlist_product_added_to_cartUser added a wishlist product to the cart

Sharing Overview

ActionDescription
product_sharedUser shared a product
cart_sharedUser shared their cart

Reviewing Overview

ActionDescription
product_reviewedUser provided a product review

The following section lists more detail for each lifecycle event as well as an example API call.

Browsing

Browsing lifecycle events represent key events that a customer might have while browsing your e-commerce website or app.

products_searched

Fire this event when a visitor searches for products.

This event supports the following semantic properties:

PropertyTypeDescription
queryStringQuery the user searched with

Example:

analytics.track('products_searched', {
  query: 'blue hotpants',
})

product_list_viewed

Fire this event when a visitor views a product list or category.

This event supports the following semantic properties:

PropertyTypeDescription
list_idStringProduct list being viewed
categoryStringProduct category being viewed
productsArrayProducts displayed in the product list
products.{}.product_idStringProduct ID displayed on the list
products.{}.skuStringSku of the product being viewed
products.{}.categoryStringProduct category being viewed
products.{}.nameStringName of the product being viewed
products.{}.brandStringBrand associated with the product
products.{}.variantStringVariant of the product (e.g. Black)
products.{}.priceNumberPrice ($) of the product being viewed
products.{}.quantityNumberQuantity of a product
products.{}.couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
products.{}.positionNumberPosition in the product list (ex. 3)
products.{}.urlStringURL of the product page
products.{}.image_urlStringImage url of the product

Example:

analytics.track('product_list_viewed', {
  list_id: 'hot_deals_1',
  category: 'Deals',
  products: [
    {
      product_id: '507f1f77bcf86cd799439011',
      sku: '45790-32',
      name: 'Monopoly: 3rd Edition',
      price: 19,
      position: 1,
      category: 'Games',
      url: 'https://www.example.com/product/path',
      image_url: 'https://www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc183733',
      sku: '46493-32',
      name: 'Uno Card Game',
      price: 3,
      position: 2,
      category: 'Games',
    },
  ],
})

product_list_filtered

Fire this event when a visitor filters a product list or category.

This event supports the following semantic properties:

PropertyTypeDescription
list_idStringProduct list being viewed
categoryStringProduct category being viewed
filtersArrayProduct filters that the customer is using
filters.{}.typeStringID of the filter type that the customer is using
filters.{}.valueStringID of the selection that the customer chose
sortsArrayProduct sorting that the customer is using
sorts.{}.typeStringID of the sort type that the customer is using
sorts.{}.valueStringID of the selection type the customer is using (ascending, descending)
productsArrayProducts displayed in the product list
products.{}.product_idStringProduct ID displayed on the list
products.{}.skuStringSku of the product being viewed
products.{}.categoryStringProduct category being viewed
products.{}.nameStringName of the product being viewed
products.{}.brandStringBrand associated with the product
products.{}.variantStringVariant of the product (e.g. Black)
products.{}.priceNumberPrice ($) of the product being viewed
products.{}.quantityNumberQuantity of a product
products.{}.couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
products.{}.positionNumberPosition in the product list (ex. 3)
products.{}.urlStringURL of the product page
products.{}.image_urlStringImage url of the product

Example:

analytics.track('product_list_filtered', {
  list_id: 'todays_deals_may_11_2016',
  filters: [
    {
      type: 'department',
      value: 'beauty',
    },
    {
      type: 'price',
      value: 'under-$25',
    },
  ],
  sorts: [
    {
      type: 'price',
      value: 'desc',
    },
  ],
  products: [
    {
      product_id: '507f1f77bcf86cd798439011',
      sku: '45360-32',
      name: 'Dove Facial Powder',
      price: 12.6,
      position: 1,
      category: 'Beauty',
      url: 'https://www.example.com/product/path',
      image_url: 'https://www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc283733',
      sku: '46573-32',
      name: 'Artin Hairbrush',
      price: 7.6,
      position: 2,
      category: 'Beauty',
    },
  ],
})

Promotions

Promotion view/click events help you gather analytics on internal offers within your e-commerce web or mobile app. For example, when a banner advertisement is shown on your web or app’s home page, you can fire a viewed_promotion event. If the user proceeds to click the advertisement, fire the clicked_promotion event.

promotion_viewed

`
Fire this event when a user views a promotion.

This event supports the following semantic properties:

PropertyTypeDescriptionExample
promotion_idStringPromotion’s IDpromo_1
creativeStringPromotion’s creativetop_banner_2
nameStringPromotion’s name75% store-wide shoe sale
positionStringPromotion’s positionhome_banner_top

Example:

analytics.track('promotion_viewed', {
  promotion_id: 'promo_1',
  creative: 'top_banner_2',
  name: '75% store-wide shoe sale',
  position: 'home_banner_top',
})

promotion_clicked

Fire this event when a visitor clicks a promotion.

This event supports the following semantic properties:

PropertyTypeDescriptionExample
promotion_idStringPromotion’s IDpromo_1
creativeStringPromotion’s creativetop_banner_2
nameStringPromotion’s name75% store-wide shoe sale
positionStringPromotion’s positionhome_banner_top

Example:

analytics.track('promotion_clicked', {
  promotion_id: 'promo_1',
  creative: 'top_banner_2',
  name: '75% store-wide shoe sale',
  position: 'home_banner_top',
})

Core Ordering

These events represent the a user's journey as they navigate through your e-commerce website or app and ultimately purchase a product.

product_clicked

Fire this event when a visitor clicks a product.

This event supports the following semantic properties:

PropertyTypeDescription
product_idStringDatabase ID of the product being viewed
skuStringSku of the product being viewed
categoryStringProduct category being viewed
nameStringName of the product being viewed
brandStringBrand associated with the product
variantStringVariant of the product (e.g. Black)
priceNumberPrice of the product being viewed
quantityNumberQuantity of a product
couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
positionNumberPosition in the product list (ex. 3)
urlStringURL of the product page
image_urlStringImage URL of the product

Example:

analytics.track('product_clicked', {
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  quantity: 1,
  coupon: 'MAYDEALS',
  position: 3,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

product_viewed

Fire this event when a visitor views a product. That view might happen on a page, screen, or preview modal.

This event supports the following semantic properties:

PropertyTypeDescription
product_idStringDatabase ID of the product being viewed
skuStringSku of the product being viewed
categoryStringProduct category being viewed
nameStringName of the product being viewed
brandStringBrand associated with the product
variantStringVariant of the product (e.g. Black)
priceNumberPrice ($) of the product being viewed
quantityNumberQuantity of a product
couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
currencyStringCurrency of the transaction
positionNumberPosition in the product list (ex. 3)
valueNumberTotal value of the product after quantity
urlStringURL of the product page
image_urlStringImage URL of the product

Example:

analytics.track('product_viewed', {
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  quantity: 1,
  coupon: 'MAYDEALS',
  currency: 'usd',
  position: 3,
  value: 18.99,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

product_added

Fire this event when a visitor adds a product to their shopping cart.

This event supports the following semantic properties:

PropertyTypeDescription
cart_idStringCart ID that the product was added to
product_idStringDatabase ID of the product being viewed
skuStringSku of the product being viewed
categoryStringProduct category being viewed
nameStringName of the product being viewed
brandStringBrand associated with the product
variantStringVariant of the product (e.g. Black)
priceNumberPrice ($) of the product being viewed
quantityNumberQuantity of a product
couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
positionNumberPosition in the product list (ex. 3)
urlStringURL of the product page
image_urlStringImage URL of the product

Example:

analytics.track('product_added', {
  cart_id: 'skdjsidjsdkdj29j',
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  quantity: 1,
  coupon: 'MAYDEALS',
  position: 3,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

product_removed

Fire this event when a user removes a product from their shopping cart.

This event supports the following semantic properties:

PropertyTypeDescription
cart_idStringCart ID to which the product was removed from
product_idStringDatabase ID of the product being viewed
skuStringSku of the product being viewed
categoryStringProduct category being viewed
nameStringName of the product being viewed
brandStringBrand associated with the product
variantStringVariant of the product (e.g. Black)
priceNumberPrice ($) of the product being viewed
quantityNumberQuantity of a product
couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
positionNumberPosition in the product list (ex. 3)
urlStringURL of the product page
image_urlStringImageURL of the product

Example:

analytics.track('product_removed', {
  cart_id: 'ksjdj92dj29dj92d2j',
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  quantity: 1,
  coupon: 'MAYDEALS',
  position: 3,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

cart_viewed

Fire this event when a visitor views a shopping cart.

This event supports the following semantic properties:

PropertyTypeDescription
cart_idStringShopping cart ID
productsArrayProducts displayed in the product list
products.{}.product_idStringProduct ID displayed on the list
products.{}.skuStringSku of the product being viewed
products.{}.categoryStringProduct category being viewed
products.{}.nameStringName of the product being viewed
products.{}.brandStringBrand associated with the product
products.{}.variantStringVariant of the product (e.g. Black)
products.{}.priceNumberPrice ($) of the product being viewed
products.{}.quantityNumberQuantity of a product
products.{}.couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
products.{}.positionNumberPosition in the product list (ex. 3)
products.{}.urlStringURL of the product page
products.{}.image_urlStringImage URL of the product

Example:

analytics.track('cart_viewed', {
  cart_id: 'd92jd29jd92jd29j92d92jd',
  products: [
    {
      product_id: '507f1f77bcf86cd799439011',
      sku: '45790-32',
      name: 'Monopoly: 3rd Edition',
      price: 19,
      position: 1,
      category: 'Games',
      url: 'https://www.example.com/product/path',
      image_url: 'https://www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc183733',
      sku: '46493-32',
      name: 'Uno Card Game',
      price: 3,
      position: 2,
      category: 'Games',
    },
  ],
})

checkout_started

Fire this event whenever an order/transaction was started. Fire on the page that the customer lands on after they press the checkout button. Be sure to include all items in the cart as event properties, with the same properties from the previous calls.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID
affiliationStringStore or affiliation from which this transaction occurred (e.g. Google Store)
valueNumberRevenue ($) with discounts and coupons included.
revenueNumberRevenue ($) associated with the transaction, excluding shipping and tax)
shippingNumberShipping cost associated with the transaction
taxNumberTotal tax associated with the transaction
discountNumberTotal discount associated with the transaction
couponStringTransaction coupon redeemed with the transaction
currencyStringCurrency code associated with the transaction
productsArrayProducts in the order
products.{}.product_idStringDatabase ID of the product being viewed
products.{}.skuStringSku of the product being viewed
products.{}.categoryStringProduct category being viewed
products.{}.nameStringName of the product being viewed
products.{}.brandStringBrand associated with the product
products.{}.variantStringVariant of the product (e.g. Black)
products.{}.priceNumberPrice ($) of the product being viewed
products.{}.quantityNumberQuantity of a product
products.{}.couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
products.{}.positionNumberPosition in the product list (ex. 3)
products.{}.urlStringURL of the product page
products.{}.image_urlStringImage URL of the product

Example:

analytics.track('checkout_started', {
  order_id: '50314b8e9bcf000000000000',
  affiliation: 'Google Store',
  value: 30,
  revenue: 25.0,
  shipping: 3,
  tax: 2,
  discount: 2.5,
  coupon: 'hasbros',
  currency: 'USD',
  products: [
    {
      product_id: '507f1f77bcf86cd799439011',
      sku: '45790-32',
      name: 'Monopoly: 3rd Edition',
      price: 19,
      quantity: 1,
      category: 'Games',
      url: 'https://www.example.com/product/path',
      image_url: 'https://www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc183733',
      sku: '46493-32',
      name: 'Uno Card Game',
      price: 3,
      quantity: 2,
      category: 'Games',
    },
  ],
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

checkout_step_viewed

Fire this event whenever a checkout step is viewed.

This event supports the following semantic properties:

PropertyTypeDescription
checkout_idStringCheckout transaction ID
stepNumberNumber representing the ordinal step in the checkout process
shipping_methodStringString representing the shipping method chosen
payment_methodStringString representing the payment method chosen

Example:

analytics.track('checkout_step_viewed', {
  checkout_id: '50314b8e9bcf000000000000',
  step: 2,
  shipping_method: 'Fedex',
  payment_method: 'Visa',
})

Note: shipping_method and payment_method are semantic properties. If you want to send that information, please do so in this exact spelling.

You can have as many or as few steps in the checkout funnel as you’d like. Note that you will still need to track the order_completed event per our standard e-commerce tracking API below after you’ve tracked the checkout steps.

checkout_step_completed

Fire this event whenever a checkout step is completed.

This event supports the following semantic properties:

PropertyTypeDescription
checkout_idStringCheckout transaction ID
stepNumberNumber representing the ordinal step in the checkout process
shipping_methodStringString representing the shipping method chosen
payment_methodStringString representing the payment method chosen

Example:

analytics.track('checkout_step_completed', {
  checkout_id: '50314b8e9bcf000000000000',
  step: 2,
  shipping_method: 'Fedex',
  payment_method: 'Visa',
})

Note: shipping_method and payment_method are semantic properties. If you want to send that information, please do so in this exact spelling.

You can have as many or as few steps in the checkout funnel as you’d like. Note that you will still need to track the order_completed event per our standard e-commerce tracking API below after you’ve tracked the checkout steps.

payment_info_entered

Fire this event whenever payment information has been successfully entered.

This event supports the following semantic properties:

PropertyTypeDescription
checkout_idStringCheckout transaction ID
order_idStringOrder ID (optional)
stepNumberNumber representing the ordinal step in the checkout process
shipping_methodStringString representing the shipping method chosen
payment_methodStringString representing the payment method chosen

Example:

analytics.track('payment_info_entered', {
  checkout_id: '39f39fj39f3jf93fj9fj39fj3f',
  order_id: 'dkfsjidfjsdifsdfksdjfkdsfjsdfkdsf',
})

Note: shipping_method and payment_method are semantic properties. If you want to send that information, please do so in this exact spelling.

You can have as many or as few steps in the checkout funnel as you’d like. Note that you’ll still need to track the order_completed event per our standard e-commerce tracking API below after you’ve tracked the checkout steps.

order_updated

Fire this event whenever an order/transaction was updated. Be sure to include all items in the cart as event properties, with the same properties from the previous calls.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID
affiliationStringStore or affiliation from which this transaction occurred (e.g. Google Store)
totalNumberRevenue ($) with discounts and coupons included.
revenueNumberRevenue ($) associated with the transaction, excluding shipping and tax
shippingNumberShipping cost associated with the transaction
taxNumberTotal tax associated with the transaction
discountNumberTotal discount associated with the transaction
couponStringTransaction coupon redeemed with the transaction
currencyStringCurrency code associated with the transaction
productsArrayProducts in the order
products.{}.product_idStringDatabase ID of the product being viewed
products.{}.skuStringSku of the product being viewed
products.{}.categoryStringProduct category being viewed
products.{}.nameStringName of the product being viewed
products.{}.brandStringBrand associated with the product
products.{}.variantStringVariant of the product (e.g. Black)
products.{}.priceNumberPrice ($) of the product being viewed
products.{}.quantityNumberQuantity of a product
products.{}.couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
products.{}.positionNumberPosition in the product list (ex. 3)
products.{}.urlStringURL of the product page
products.{}.image_urlStringImage URL of the product

Example:

analytics.track('order_updated', {
  order_id: '50314b8e9bcf000000000000',
  affiliation: 'Google Store',
  total: 27.5,
  revenue: 25.0,
  shipping: 3,
  tax: 2,
  discount: 2.5,
  coupon: 'hasbros',
  currency: 'USD',
  products: [
    {
      product_id: '507f1f77bcf86cd799439011',
      sku: '45790-32',
      name: 'Monopoly: 3rd Edition',
      price: 19,
      quantity: 1,
      category: 'Games',
      url: 'https://www.example.com/product/path',
      image_url: 'https://www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc183733',
      sku: '46493-32',
      name: 'Uno Card Game',
      price: 3,
      quantity: 2,
      category: 'Games',
    },
  ],
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

order_completed

Fire this event whenever an order/transaction was successfully completed by the customer. Be sure to include all items in the cart as event properties, with the same properties from the previous calls.

This event supports the following semantic properties:

PropertyTypeDescription
checkout_idStringCheckout ID
order_idStringOrder/transaction ID
affiliationStringStore or affiliation from which this transaction occurred (e.g. Google Store)
totalNumberRevenue ($) with discounts and coupons included.
revenueNumberRevenue ($) associated with the transaction, excluding shipping and tax
shippingNumberShipping cost associated with the transaction
taxNumberTotal tax associated with the transaction
discountNumberTotal discount associated with the transaction
couponStringTransaction coupon redeemed with the transaction
currencyStringCurrency code associated with the transaction
productsArrayProducts in the order
products.{}.product_idStringDatabase ID of the product being viewed
products.{}.skuStringSku of the product being viewed
products.{}.categoryStringProduct category being viewed
products.{}.nameStringName of the product being viewed
products.{}.brandStringBrand associated with the product
products.{}.variantStringVariant of the product (e.g. Black)
products.{}.priceNumberPrice ($) of the product being viewed
products.{}.quantityNumberQuantity of a product
products.{}.couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
products.{}.positionNumberPosition in the product list (ex. 3)
products.{}.urlStringURL of the product page
products.{}.image_urlStringImage URL of the product

Example:

analytics.track('order_completed', {
  checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
  order_id: '50314b8e9bcf000000000000',
  affiliation: 'Google Store',
  total: 27.5,
  revenue: 25.0,
  shipping: 3,
  tax: 2,
  discount: 2.5,
  coupon: 'hasbros',
  currency: 'USD',
  products: [
    {
      product_id: '507f1f77bcf86cd799439011',
      sku: '45790-32',
      name: 'Monopoly: 3rd Edition',
      price: 19,
      quantity: 1,
      category: 'Games',
      url: 'https://www.example.com/product/path',
      image_url: 'https:///www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc183733',
      sku: '46493-32',
      name: 'Uno Card Game',
      price: 3,
      quantity: 2,
      category: 'Games',
    },
  ],
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

order_refunded

Fire this event whenever an order/transaction was refunded. Be sure to include all items in the cart as event properties, with the same properties from the previous “Order Completed” call.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID

Example:

analytics.track('order_refunded', {
  order_id: '50314b8e9bcf000000000000',
  total: 30,
  currency: 'USD',
  products: [
    {
      product_id: '507f1f77bcf86cd799439011',
      sku: '45790-32',
      name: 'Monopoly: 3rd Edition',
      price: 19,
      quantity: 1,
      category: 'Games',
      url: 'https://www.example.com/product/path',
      image_url: 'https://www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc183733',
      sku: '46493-32',
      name: 'Uno Card Game',
      price: 3,
      quantity: 2,
      category: 'Games',
    },
  ],
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

order_cancelled

Fire this event whenever an order/transaction was cancelled. Be sure to include all items in the cart as event properties, with the same properties from the previous calls.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID
affiliationStringStore or affiliation from which this transaction occurred (e.g. Google Store)
totalNumberRevenue ($) with discounts and coupons included
revenueNumberRevenue ($) associated with the transaction, excluding shipping and tax
shippingNumberShipping cost associated with the transaction
taxNumberTotal tax associated with the transaction
discountNumberTotal discount associated with the transaction
couponStringTransaction coupon redeemed with the transaction
currencyStringCurrency code associated with the transaction
productsArrayProducts in the order
products.{}.product_idStringDatabase ID of the product being viewed
products.{}.skuStringSku of the product being viewed
products.{}.categoryStringProduct category being viewed
products.{}.nameStringName of the product being viewed
products.{}.brandStringBrand associated with the product
products.{}.variantStringVariant of the product (e.g. Black)
products.{}.priceNumberPrice ($) of the product being viewed
products.{}.quantityNumberQuantity of a product
products.{}.couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
products.{}.positionNumberPosition in the product list (ex. 3)
products.{}.urlStringURL of the product page
products.{}.image_urlStringImage URL of the product

Example:

analytics.track('order_cancelled', {
  order_id: '50314b8e9bcf000000000000',
  affiliation: 'Google Store',
  total: 30,
  revenue: 25.0,
  shipping: 3,
  tax: 2,
  discount: 2.5,
  coupon: 'hasbros',
  currency: 'USD',
  products: [
    {
      product_id: '507f1f77bcf86cd799439011',
      sku: '45790-32',
      name: 'Monopoly: 3rd Edition',
      price: 19,
      quantity: 1,
      category: 'Games',
      url: 'https://www.example.com/product/path',
      image_url: 'https://www.example.com/product/path.jpg',
    },
    {
      product_id: '505bd76785ebb509fc183733',
      sku: '46493-32',
      name: 'Uno Card Game',
      price: 3,
      quantity: 2,
      category: 'Games',
    },
  ],
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

Coupons

These are events that occur when dealing with coupons in your e-commerce website or app.

coupon_entered

Fire this event whenever a coupon is entered either in a cart or on an order/transaction.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID, if applicable
cart_idStringCart ID, if applicable
coupon_idStringCoupon ID

Example:

analytics.track('coupon_entered', {
  order_id: '50314b8e9bcf000000000000',
  cart_id: '923923929jd29jd92dj9j93fj3'
  coupon_id: 'may_deals_2016'
});

coupon_applied

Fire this event whenever a coupon is successfully applied to either a cart or an order/transaction.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID, if applicable
cart_idStringCart ID, if applicable
coupon_idStringCoupon ID
coupon_nameStringCoupon name
discountNumberMonetary discount applied through the coupon

Example:

analytics.track('coupon_applied', {
  order_id: '50314b8e9bcf000000000000',
  cart_id: '923923929jd29jd92dj9j93fj3'
  coupon_id: 'may_deals_2016',
  coupon_name: 'May Deals 2016',
  discount: 23.32
});

coupon_denied

Fire this event whenever a coupon is denied from a cart or an order/transaction.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID, if applicable
cart_idStringCart ID, if applicable
coupon_idStringCoupon ID
coupon_nameStringCoupon name
reasonStringReason the coupon was denied

Example:

analytics.track('coupon_denied', {
  order_id: '50314b8e9bcf000000000000',
  cart_id: '923923929jd29jd92dj9j93fj3'
  coupon: 'may_deals_2016',
  reason: 'Coupon expired'
});

coupon_removed

Fire this event whenever a coupon is removed from a cart or an order/transaction.

This event supports the following semantic properties:

PropertyTypeDescription
order_idStringOrder/transaction ID, if applicable
cart_idStringCart ID, if applicable
coupon_idStringCoupon ID
coupon_nameStringCoupon name
discountNumberMonetary discount applied through the coupon

Example:

analytics.track('coupon_removed', {
  order_id: '50314b8e9bcf000000000000',
  cart_id: '923923929jd29jd92dj9j93fj3'
  coupon_id: 'may_deals_2016',
  coupon_name: 'May Deals 2016',
  discount: 23.32
});

Wishlists

These events may occur if your e-commerce website or app supports wishlist features.

product_added_to_wishlist

Fire this event when a customer adds a product to their wish list.

This event supports the following semantic properties:

PropertyTypeDescription
wishlist_idStringWishlist ID the product was added to
wishlist_nameStringWishlist name the product was added to
product_idStringDatabase ID of the product being viewed
skuStringSku of the product being viewed
categoryStringProduct category being viewed
nameStringName of the product being viewed
brandStringBrand associated with the product
variantStringVariant of the product (e.g. Black)
priceNumberPrice ($) of the product being viewed
quantityNumberQuantity of a product
couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
positionNumberPosition in the product list (ex. 3)
urlStringURL of the product page
image_urlStringImage URL of the product

Example:

analytics.track('product_added_to_wishlist', {
  wishlist_id: 'skdjsidjsdkdj29j',
  wishlist_name: 'Loved Games',
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  quantity: 1,
  coupon: 'MAYDEALS',
  position: 3,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

product_removed_from_wishlist

Fire this event when a customer removes a product from their wishlist.

This event supports the following semantic properties:

PropertyTypeDescription
wishlist_idStringWishlist ID the product was added to
wishlist_nameStringWishlist name the product was added to
product_idStringDatabase ID of the product being viewed
skuStringSku of the product being viewed
categoryStringProduct category being viewed
nameStringName of the product being viewed
brandStringBrand associated with the product
variantStringVariant of the product (e.g. Black)
priceNumberPrice ($) of the product being viewed
quantityNumberQuantity of a product
couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
positionNumberPosition in the product list (ex. 3)
urlStringURL of the product page
image_urlStringImage URL of the product

Example:

analytics.track('product_removed_from_wishlist', {
  wishlist_id: 'skdjsidjsdkdj29j',
  wishlist_name: 'Loved Games',
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  quantity: 1,
  coupon: 'MAYDEALS',
  position: 3,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

wishlist_product_added_to_cart

Fire this event when a customer moves a product from their wishlist to their cart.

This event supports the following semantic properties:

PropertyTypeDescription
wishlist_idStringWishlist ID the product was added to
wishlist_nameStringWishlist name the product was added to
cart_idStringCart ID this product was added to
product_idStringDatabase ID of the product being viewed
skuStringSku of the product being viewed
categoryStringProduct category being viewed
nameStringName of the product being viewed
brandStringBrand associated with the product
variantStringVariant of the product (e.g. Black)
priceNumberPrice ($) of the product being viewed
quantityNumberQuantity of a product
couponStringCoupon code associated with a product (e.g MAY_DEALS_3)
positionNumberPosition in the product list (ex. 3)
urlStringURL of the product page
image_urlStringImage URL of the product

Example:

analytics.track('wishlist_product_added_to_cart', {
  wishlist_id: 'skdjsidjsdkdj29j',
  wishlist_name: 'Loved Games',
  cart_id: '99j2d92j9dj29dj29d2d',
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  quantity: 1,
  coupon: 'MAYDEALS',
  position: 3,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

Sharing

These events are useful if you are tracking customers who are sharing product information, such as through social apps or other sharing capabilities.

product_shared

Fire this event when a customer shares a product.

This event supports the following semantic properties:

PropertyTypeDescription
share_viaStringMethod of sharing
share_messageStringMessage that the user sent
recipientStringRecipient of the shared information
product_idStringDatabase ID of the product being viewed
skuStringSku of the product shared
categoryStringProduct category shared
nameStringName of the product shared
brandStringBrand associated with the shared product
variantStringVariant of the shared product (e.g. Black)
priceNumberPrice ($) of the product shared
urlStringURL of the product page
image_urlStringImage URL of the product

Example:

analytics.track('product_shared', {
  share_via: 'email',
  share_message: 'Hey, check out this item',
  recipient: '[email protected]',
  product_id: '507f1f77bcf86cd799439011',
  sku: 'G-32',
  category: 'Games',
  name: 'Monopoly: 3rd Edition',
  brand: 'Hasbro',
  variant: '200 pieces',
  price: 18.99,
  url: 'https://www.example.com/product/path',
  image_url: 'https://www.example.com/product/path.jpg',
})

Note: The sku and product_id do not have to be different. If they are different, typically the product_id is a database identifier, like 9714107479 and the sku is a public-facing identifier like ECOM-02.

cart_shared

Fire this event when a customer shares a shopping cart.

This event supports the following semantic properties:

PropertyTypeDescription
share_viaStringMethod of sharing
share_messageStringMessage that the user sent
recipientStringRecipient of the shared product
cart_idStringShopping cart ID
productsArrayProducts displayed in the shared product list
products.{}.product_idStringProduct ID displayed on the shared product list

Example:

analytics.track('cart_shared', {
  share_via: 'email',
  share_message: 'Hey, check out this item',
  recipient: '[email protected]',
  cart_id: 'd92jd29jd92jd29j92d92jd',
  products: [{ product_id: '507f1f77bcf86cd799439011' }, { product_id: '505bd76785ebb509fc183733' }],
})

Reviewing

This event can be useful for tracking product-related reviews.

product_reviewed

Fire this event when a customer reviews a product.

This event supports the following semantic properties:

PropertyTypeDescription
product_idStringProduct’s ID
review_idStringReview ID
review_bodyStringReview body
ratingStringReview rating

Example:

analytics.track('product_reviewed', {
  product_id: '507f1f77bcf86cd799439011',
  review_id: 'kdfjrj39fj39jf3',
  review_body: 'I love this product',
  rating: '5',
})