Ecommerce events

How it works

Ecommerce track events typically contain the same information across platforms—products, brands, orders, cart information, etc. However, each place you send this data to might map this information differently.

Our ecommerce specification helps you send events in a uniform format that maps to the actions for any of our ecommerce-supporting integrations. This means can use our out-of-the-box actions without having to map your incoming data to each outbound integration.

Handling arrays of products

Some data-out integrations don’t take arrays. In these cases, you may need to flatten arrays of products. See the documentation for your integration to learn more information about supported events and properties.

Event lifecycles

You can see a complete list of ecommerce events and all associated properties on our Pipelines API reference page. But it can also help to understand the typical events that a person may perform and the order they’re likely to perform them in, as they browse and buy products.

Examples in this section are based on our JavaScript library

To simplify the examples on this page, we’ve based everything on our JavaScript client. But you can send ecommerce events from any of our libraries.

Browsing products

Browsing events represent key events that a customer might have while browsing for products.

ActionDescription
Products SearchedUser searched for products
Product List ViewedUser viewed a product list or category
Product List FilteredUser filtered a product list or category
cioanalytics.track('Products Searched', {
  query: "pepperoni pizza"
})
  • querystring
    The search query the customer entered.
cioanalytics.track('Product List Viewed', {
  list_id: 'hot_deals_1',
  category: 'Deals',
  products: [
    {
      product_id: "coolshoes-123"
      sku: "abc-123-xyz"
      category: "shoes"
      name: "Cool Shoes"
      brand: "A Shoe Brand"
      price: 139.99
      position: 1
      url: "https://www.example.com/product/123"
      image_url: "https://www.example.com/product/123.jpg"
    },
    {
      product_id: "coolshoes-456"
      sku: "abc-456-xyz"
      category: "shoes"
      name: "Even Cooler Shoes"
      brand: "A Different Shoe Brand"
      price: 159.99
      position: 2
      url: "https://www.example.com/product/456"
      image_url: "https://www.example.com/product/456.jpg"
    }
  ]
});
  • list_idstring
    The product list a person viewed.
  • categorystring
    The product category a person viewed.
  • The products displayed in the product list. Each object in the array represents a product.
cioanalytics.track('Product List Filtered', {
  list_id: "all_shoes",
  category: "shoes",
  products: [
    {
      product_id: "coolshoes-123",
      sku: "abc-123-xyz",
      category: "shoes",
      name: "Cool Shoes",
      brand: "A Shoe Brand",
      variant: "red",
      price: 139.99,
      quantity: 1,
      coupon: "NEWUSER20",
      position: 3,
      url: "https://www.example.com/product/123",
      image_url: "https://www.example.com/product/123.jpg"
    }
  ],
  filters: [
    {
      type: "string",
      value: "string"
    }
  ],
  sorts: [
    {
      type: "string",
      value: "string"
    }
  ]
})
  • list_idstring
    The product list a person viewed.
  • categorystring
    The product category a person viewed.
  • The products displayed in the product list. Each object in the array represents a product.
  • The filters a person applied to the product list, where each object in the array is a different filter.
  • The sorts a person applied to the product list, where each object in the array is a different sort.

Promotions overview

Promotion events let you know when someone sees or interacts with offers within your app. For example, you might send a Promotion Viewed event when your app shows a banner advertisement to a user. If the user clicks the ad, you’d send the Promotion Clicked event.

ActionDescription
Promotion ViewedUser viewed promotion
Promotion ClickedUser clicked on promotion
cioanalytics.track('Promotion Viewed', {
  promotion_id: "promo-123",
  creative: "top_banner_2",
  name: "75% store-wide shoe sale",
  position: "banner_slot_1"
})
  • promotion_idstring
    The ID of the promotion a person viewed.
  • creativestring
    The creative content ID associated with the promotion.
  • namestring
    The name of the promotion a person viewed.
  • positionstring
    The position of the promotion a person viewed.
cioanalytics.track('Promotion clicked', {
  promotion_id: "promo-123",
  creative: "top_banner_2",
  name: "75% store-wide shoe sale",
  position: "banner_slot_1"
})
  • promotion_idstring
    The ID of the promotion a person viewed.
  • creativestring
    The creative content ID associated with the promotion.
  • namestring
    The name of the promotion a person viewed.
  • positionstring
    The position of the promotion a person viewed.

Product order overview

These events represent the typical lifecycle of a product order.

ActionDescription
Product ClickedUser clicked on a product
Product ViewedUser viewed a 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 (a transaction is created) You should send this event on the page that the customer lands on after they click Checkout (or a similar button).
Checkout Step ViewedUser viewed a checkout step. You can have as many checkout steps as you want.
Checkout Step CompletedUser completed a checkout step. You can have as many checkout steps as you want.
Payment Info EnteredUser added payment information
Order CompletedUser completed the order
Order UpdatedUser updated the order
Order RefundedUser refunded the order
Order CancelledUser canceled the order
cioanalytics.track('Product Clicked', {
  product_id: "coolshoes-123"
  sku: "abc-123-xyz"
  category: "shoes"
  name: "Cool Shoes"
  brand: "A Shoe Brand"
  variant: "red"
  price: 139.99
  quantity: 1
  coupon: "NEWUSER20"
  position: 3
  url: "https://www.example.com/product/123"
  image_url: "https://www.example.com/product/123.jpg"
  currency: "USD"
  value: 119.99
})
  • currencystring
    The currency of the transaction.
  • valuenumber
    The total value of the product, after multiplying by quantity.
cioanalytics.track('Product Viewed', {
  product_id: "coolshoes-123"
  sku: "abc-123-xyz"
  category: "shoes"
  name: "Cool Shoes"
  brand: "A Shoe Brand"
  variant: "red"
  price: 139.99
  quantity: 1
  coupon: "NEWUSER20"
  position: 3
  url: "https://www.example.com/product/123"
  image_url: "https://www.example.com/product/123.jpg"
  currency: "USD"
  value: 119.99
})
  • currencystring
    The currency of the transaction.
  • valuenumber
    The total value of the product, after multiplying by quantity.
cioanalytics.track('Product Added', {
  product_id: "coolshoes-123"
  sku: "abc-123-xyz"
  category: "shoes"
  name: "Cool Shoes"
  brand: "A Shoe Brand"
  variant: "red"
  price: 139.99
  quantity: 1
  coupon: "NEWUSER20"
  position: 3
  url: "https://www.example.com/product/123"
  image_url: "https://www.example.com/product/123.jpg"
  currency: "USD"
  value: 119.99
})
  • cart_idstring
    The cart ID the product was added to.
cioanalytics.track('Product Removed', {
  product_id: "coolshoes-123"
  sku: "abc-123-xyz"
  category: "shoes"
  name: "Cool Shoes"
  brand: "A Shoe Brand"
  variant: "red"
  price: 139.99
  quantity: 1
  coupon: "NEWUSER20"
  position: 3
  url: "https://www.example.com/product/123"
  image_url: "https://www.example.com/product/123.jpg"
  currency: "USD"
  value: 119.99
})
  • cart_idstring
    The cart ID the product was removed from.
cioanalytics.track('Cart Viewed', {
  cart_id: "cool_persons_cart_123",
  products: [
    {
      product_id: "coolshoes-123",
      sku: "abc-123-xyz",
      category: "shoes",
      name: "Cool Shoes",
      brand: "A Shoe Brand",
      variant: "red",
      price: 139.99,
      quantity: 1,
      coupon: "NEWUSER20",
      position: 3,
      url: "https://www.example.com/product/123",
      image_url: "https://www.example.com/product/123.jpg"
    }
  ]
})
  • cart_idstring
    The cart ID a person viewed.
  • The products in the cart. Each object in the array represents a product.
cioanalytics.track('Checkout Started', {
  order_id: "cool_persons_cart_123",
  affiliation: "Shopify",
  revenue: 139.99,
  shipping: 5,
  tax: 10,
  discount: 20,
  coupon: "NEWUSER20",
  currency: "USD",
  products: [
    {
      product_id: "coolshoes-123",
      sku: "abc-123-xyz",
      category: "shoes",
      name: "Cool Shoes",
      brand: "A Shoe Brand",
      variant: "red",
      price: 139.99,
      quantity: 1,
      coupon: "NEWUSER20",
      position: 3,
      url: "https://www.example.com/product/123",
      image_url: "https://www.example.com/product/123.jpg"
    }
  ]
})
  • valuenumber
    The expected total revenue of the transaction calculated with discounts/coupons.
cioanalytics.track('Checkout Step Viewed', {
  checkout_id: "cool_persons_checkout_123",
  step: 2,
  shipping_method: "ground",
  payment_method: "Visa"
})
  • checkout_idstring
    The checkout/transaction ID.
  • stepinteger
    The step number of the checkout process.
  • shipping_methodstring
    The shipping method selected by the user.
  • payment_methodstring
    The payment method selected by the user.
cioanalytics.track('Checkout Step Completed', {
  checkout_id: "cool_persons_checkout_123",
  step: 2,
  shipping_method: "ground",
  payment_method: "Visa"
})
  • checkout_idstring
    The checkout/transaction ID.
  • stepinteger
    The step number of the checkout process.
  • shipping_methodstring
    The shipping method selected by the user.
  • payment_methodstring
    The payment method selected by the user.
cioanalytics.track('Payment Info Entered', {
  checkout_id: "cool_persons_checkout_123",
  step: 2,
  shipping_method: "ground",
  payment_method: "Visa",
  order_id: "order123"
})
  • order_idstring
    The order ID.
cioanalytics.track('Order Completed', {
  subtotal: 119.99,
  products: [
    {
      product_id: "coolshoes-123",
      sku: "abc-123-xyz",
      category: "shoes",
      name: "Cool Shoes",
      brand: "A Shoe Brand",
      variant: "red",
      price: 139.99,
      quantity: 1,
      coupon: "NEWUSER20",
      position: 3,
      url: "https://www.example.com/product/123",
      image_url: "https://www.example.com/product/123.jpg"
    }
  ],
  order_id: "cool_persons_cart_123",
  checkout_id: "checkout123",
  total: 0,
  affiliation: "Shopify",
  revenue: 139.99,
  shipping: 5,
  tax: 10,
  discount: 20,
  coupon: "NEWUSER20",
  currency: "USD"
})
  • subtotalnumber
    The order total after discounts but before taxes and shipping.
  • The products displayed in the product list. Each object in the array represents a product.
  • order_idstring
    The order ID.
  • checkout_idstring
    The checkout/transaction ID.
  • totalnumber
    The total amount of the order.
cioanalytics.track('Order Updated', {
  order_id: "cool_persons_cart_123",
  affiliation: "Shopify",
  revenue: 139.99,
  shipping: 5,
  tax: 10,
  discount: 20,
  coupon: "NEWUSER20",
  currency: "USD",
  products: [
    {
      product_id: "coolshoes-123",
      sku: "abc-123-xyz",
      category: "shoes",
      name: "Cool Shoes",
      brand: "A Shoe Brand",
      variant: "red",
      price: 139.99,
      quantity: 1,
      coupon: "NEWUSER20",
      position: 3,
      url: "https://www.example.com/product/123",
      image_url: "https://www.example.com/product/123.jpg"
    }
  ]
})
  • The products displayed in the product list. Each object in the array represents a product.
cioanalytics.track('Order Refunded', {
  order_id: "order123",
  affiliation: "Shopify",
  revenue: 139.99,
  shipping: 5,
  tax: 10,
  discount: 20,
  coupon: "NEWUSER20",
  currency: "USD",
  products: [
    {
      product_id: "coolshoes-123",
      sku: "abc-123-xyz",
      category: "shoes",
      name: "Cool Shoes",
      brand: "A Shoe Brand",
      variant: "red",
      price: 139.99,
      quantity: 1,
      coupon: "NEWUSER20",
      position: 3,
      url: "https://www.example.com/product/123",
      image_url: "https://www.example.com/product/123.jpg"
    }
  ],
  total: 119.99,
  subtotal: 119.99,
  checkout_id: "checkout123"
})
  • The products displayed in the product list. Each object in the array represents a product.
  • totalnumber
    The total amount refunded.
  • subtotalnumber
    The order total after discounts but before taxes and shipping.
  • order_idstring
    The order ID.
  • checkout_idstring
    The checkout/transaction ID.
cioanalytics.track('Order Cancelled', {
  order_id: "order123",
  affiliation: "Shopify",
  revenue: 139.99,
  shipping: 5,
  tax: 10,
  discount: 20,
  coupon: "NEWUSER20",
  currency: "USD",
  products: [
    {
      product_id: "coolshoes-123",
      sku: "abc-123-xyz",
      category: "shoes",
      name: "Cool Shoes",
      brand: "A Shoe Brand",
      variant: "red",
      price: 139.99,
      quantity: 1,
      coupon: "NEWUSER20",
      position: 3,
      url: "https://www.example.com/product/123",
      image_url: "https://www.example.com/product/123.jpg"
    }
  ],
  total: 119.99
})
  • order_idstring
    The cancelled order ID.
  • The products displayed in the product list. Each object in the array represents a product.
  • totalnumber
    The total amount of the order.

Coupons overview

Send coupon events when your customers enter, apply, or remove coupons from their shopping carts or orders.

ActionDescription
Coupon EnteredUser entered a coupon on a shopping cart or order
Coupon AppliedCoupon was applied on a user’s shopping cart or order
Coupon DeniedCoupon was denied from a user’s shopping cart or order
Coupon RemovedUser removed a coupon from a cart or order
cioanalytics.track('Coupon Entered', {
  order_id: "order123",
  cart_id: "cool_persons_cart_123",
  coupon_id: "NEWUSER20"
})
  • order_idstring
    The order/transaction the coupon applies to (if applicable).
  • cart_idstring
    The ID of the cart that the coupon applies to (if applicable).
  • coupon_idstring
    the coupon ID the person entered.

cioanalytics.track(‘Coupon Applied’, { order_id: “order123”, cart_id: “cool_persons_cart_123”, coupon_id: “NEWUSER20”, coupon_name: “$20 off for new users”, discount: 20 })

  • order_idstring
    The order/transaction the coupon applies to (if applicable).
  • cart_idstring
    The ID of the cart that the coupon applies to (if applicable).
  • coupon_idstring
    the coupon ID the person entered.
  • coupon_namestring
    The name of the coupon, if applicable.
  • discountnumber
    The discount applied through the coupon. This is the ammount subtracted from the total in other transaction events.

cioanalytics.track(‘Coupon Applied’, { order_id: “order123”, cart_id: “cool_persons_cart_123”, coupon_id: “NEWUSER20”, coupon_name: “$20 off for new users”, reason: “Not customer’s first order” })

  • order_idstring
    The order/transaction the coupon applies to (if applicable).
  • cart_idstring
    The ID of the cart that the coupon applies to (if applicable).
  • coupon_idstring
    the coupon ID the person entered.
  • coupon_namestring
    The name of the coupon, if applicable.
  • reasonstring
    The reason the coupon was denied.

cioanalytics.track(‘Coupon Removed’, { order_id: “order123”, cart_id: “cool_persons_cart_123”, coupon_id: “NEWUSER20”, coupon_name: “$20 off for new users”, discount: 20 })

  • order_idstring
    The order/transaction the coupon applies to (if applicable).
  • cart_idstring
    The ID of the cart that the coupon applies to (if applicable).
  • coupon_idstring
    the coupon ID the person entered.
  • coupon_namestring
    The name of the coupon, if applicable.
  • discountnumber
    The discount applied through the coupon. This is the ammount subtracted from the total in other transaction events.

Wishlisting overview

Send these events if your ecommerce app supports wishlist features.

ActionDescription
Product Added to WishlistUser added a product to the wish list
Product Removed from WishlistUser removed a product from the wish list
Wishlist Product Added to CartUser added a wishlist product to the cart
cioanalytics.track('Product Added to Wishlist', {
  wishlist_id: "wishlist123",
  wishlist_name: "Favorite Shoes",
  product_id: "coolshoes-123",
  sku: "abc-123-xyz",
  category: "shoes",
  name: "Cool Shoes",
  brand: "A Shoe Brand",
  variant: "red",
  price: 139.99,
  quantity: 1,
  coupon: "NEWUSER20",
  position: 3,
  url: "https://www.example.com/product/123",
  image_url: "https://www.example.com/product/123.jpg"
})
  • wishlist_idstring
    The ID of the wishlist that the product applies to.
  • wishlist_namestring
    The name of the wishlist that the product applies to.
cioanalytics.track('Product Removed from Wishlist', {
  wishlist_id: "wishlist123",
  wishlist_name: "Favorite Shoes",
  product_id: "coolshoes-123",
  sku: "abc-123-xyz",
  category: "shoes",
  name: "Cool Shoes",
  brand: "A Shoe Brand",
  variant: "red",
  price: 139.99,
  quantity: 1,
  coupon: "NEWUSER20",
  position: 3,
  url: "https://www.example.com/product/123",
  image_url: "https://www.example.com/product/123.jpg"
})
  • wishlist_idstring
    The ID of the wishlist that the product applies to.
  • wishlist_namestring
    The name of the wishlist that the product applies to.
cioanalytics.track('Wishlist Product Added to Cart', {
  wishlist_id: "wishlist123",
  wishlist_name: "Favorite Shoes",
  product_id: "coolshoes-123",
  sku: "abc-123-xyz",
  category: "shoes",
  name: "Cool Shoes",
  brand: "A Shoe Brand",
  variant: "red",
  price: 139.99,
  quantity: 1,
  coupon: "NEWUSER20",
  position: 3,
  url: "https://www.example.com/product/123",
  image_url: "https://www.example.com/product/123.jpg"
})
  • wishlist_idstring
    The ID of the wishlist that the product applies to.
  • wishlist_namestring
    The name of the wishlist that the product applies to.
  • cart_idstring
    The ID of the cart that the product was added to.

Sharing overview

If your store integrates with social apps or supports sharing, you can send events when your customers share product information.

ActionDescription
Product SharedShared a product with one or more friends
Cart SharedShared the cart with one or more friends
cioanalytics.track('Product Shared', {
  share_via: "email",
  share_message: "Check out these cool shoes!",
  recipient: "friendOfcool.person@example.com",
  product_id: "coolshoes-123",
  sku: "abc-123-xyz",
  category: "shoes",
  name: "Cool Shoes",
  brand: "A Shoe Brand",
  variant: "red",
  price: 139.99,
  url: "https://www.example.com/product/123",
  image_url: "https://www.example.com/product/123.jpg"
})
  • share_viastring
    The channel the product was shared through.
  • share_messagestring
    The message the customer sent with the share.
  • recipientstring
    The person the product was shared with.
  • product_idstring
    The product ID.
  • skustring
    The stock keeping unit (SKU) of the product a person viewed.
  • categorystring
    The product category a person viewed.
  • namestring
    The name of the product a person viewed.
  • brandstring
    The brand associated with the product.
  • variantstring
    The variant of the product a person viewed, if applicable.
  • pricenumber
    The price of the product.
  • urlstring
    The URL of the product page.
  • image_urlstring
    The URL of the product image.
cioanalytics.track('Cart Shared', {
  share_via: "email",
  share_message: "Check out my cart!",
  recipient: "friendOfcool.person@example.com",
  cart_id: "cool_persons_cart_123",
  products: [
    {
      product_id: "coolshoes-123"
    }
  ]
})
  • share_viastring
    The channel the product was shared through.
  • share_messagestring
    The message the customer sent with the share.
  • recipientstring
    The person the product was shared with.
  • cart_idstring
    The shopping cart ID.
  • An array of product IDs contained in the shared cart.

Reviewing overview

Send the Product Reviewed event when customers review products in your store.

ActionDescription
Product ReviewedUser reviewed a product
cioanalytics.track('Product Reviewed', {
  product_id: "coolshoes-123",
  review_id: "review_123",
  review_body: "These shoes are great!",
  rating: 5
})
  • product_idstring
    The product ID.
  • review_idstring
    The ID of the review.
  • review_bodystring
    The body of the review.
  • ratinginteger
    The rating the customer gave the product.
Updated August 24, 2026