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"
    }
  ]
});
  • categorystring
    The product category a person viewed.
  • list_idstring
    The product list 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"
    }
  ]
})
  • categorystring
    The product category a person viewed.
  • The filters a person applied to the product list, where each object in the array is a different filter.
  • list_idstring
    The product list a person viewed.
  • The products displayed in the product list. Each object in the array represents a product.
  • 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"
})
  • 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.
  • promotion_idstring
    The ID 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"
})
  • 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.
  • promotion_idstring
    The ID 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.
  • payment_methodstring
    The payment method selected by the user.
  • shipping_methodstring
    The shipping method selected by the user.
  • stepinteger
    The step number of the checkout process.
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.
  • payment_methodstring
    The payment method selected by the user.
  • shipping_methodstring
    The shipping method selected by the user.
  • stepinteger
    The step number of the checkout process.
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"
})
  • checkout_idstring
    The checkout/transaction ID.
  • order_idstring
    The order ID.
  • The products displayed in the product list. Each object in the array represents a product.
  • subtotalnumber
    The order total after discounts but before taxes and shipping.
  • 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"
})
  • checkout_idstring
    The checkout/transaction ID.
  • order_idstring
    The order ID.
  • The products displayed in the product list. Each object in the array represents a product.
  • subtotalnumber
    The order total after discounts but before taxes and shipping.
  • totalnumber
    The total amount refunded.
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"
})
  • cart_idstring
    The ID of the cart that the coupon applies to (if applicable).
  • coupon_idstring
    the coupon ID the person entered.
  • order_idstring
    The order/transaction the coupon applies to (if applicable).

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 })

  • 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.
  • order_idstring
    The order/transaction the coupon applies to (if applicable).

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” })

  • 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.
  • order_idstring
    The order/transaction the coupon applies to (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 })

  • 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.
  • order_idstring
    The order/transaction the coupon applies to (if applicable).

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"
})
  • cart_idstring
    The ID of the cart that the product was added to.
  • wishlist_idstring
    The ID of the wishlist that the product applies to.
  • wishlist_namestring
    The name of the wishlist that the product applies 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"
})
  • brandstring
    The brand associated with the product.
  • categorystring
    The product category a person viewed.
  • image_urlstring
    The URL of the product image.
  • namestring
    The name of the product a person viewed.
  • pricenumber
    The price of the product.
  • product_idstring
    The product ID.
  • recipientstring
    The person the product was shared with.
  • share_messagestring
    The message the customer sent with the share.
  • share_viastring
    The channel the product was shared through.
  • skustring
    The stock keeping unit (SKU) of the product a person viewed.
  • urlstring
    The URL of the product page.
  • variantstring
    The variant of the product a person viewed, if applicable.
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"
    }
  ]
})
  • cart_idstring
    The shopping cart ID.
  • An array of product IDs contained in the shared cart.
  • recipientstring
    The person the product was shared with.
  • share_messagestring
    The message the customer sent with the share.
  • share_viastring
    The channel the product was shared through.

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.
  • ratinginteger
    The rating the customer gave the product.
  • review_bodystring
    The body of the review.
  • review_idstring
    The ID of the review.
Updated September 1, 2026