Event SpecsE-commerce

E-Commerce Event Spec

This page defines all standard e-commerce events for Datafly Signal. Implement these events to enable accurate server-side delivery to advertising and analytics platforms.

All events are sent via _df.track(). Properties listed here are sent inside the properties object.


Browsing Events

product_list_viewed

Fired when a user views a product listing, category page, or search results grid.

_df.track('product_list_viewed', {
  list_id: 'womens-jackets',
  category: 'Women > Jackets',
  products: [
    { product_id: 'PKT-001', sku: 'PKT-001-BLK-M', name: 'Parka Jacket', price: 129.99, position: 1, category: 'Jackets', brand: 'NorthEdge' },
    { product_id: 'PKT-002', sku: 'PKT-002-NAV-L', name: 'Puffer Jacket', price: 99.99, position: 2, category: 'Jackets', brand: 'NorthEdge' }
  ]
})
PropertyTypeRequiredDescription
list_idstringOptionalMachine-readable identifier for the list or collection
categorystringOptionalCategory or section being browsed
productsarrayOptionalArray of product objects displayed in the list (see schema below)

product_searched

Fired when a user submits a search query for products.

_df.track('product_searched', {
  query: 'waterproof jacket'
})
PropertyTypeRequiredDescription
querystringRequiredThe search term entered by the user

promotion_viewed

Fired when a promotional banner or hero image is visible to the user.

_df.track('promotion_viewed', {
  promotion_id: 'SUMMER24',
  name: 'Summer Sale Banner',
  creative: 'summer-sale-hero-v2.jpg',
  position: 'homepage-hero'
})
PropertyTypeRequiredDescription
promotion_idstringOptionalIdentifier for the promotion
namestringOptionalHuman-readable name of the promotion
creativestringOptionalName or URL of the creative asset shown
positionstringOptionalSlot or placement where the promotion appeared

promotion_clicked

Fired when a user clicks on a promotional banner or creative.

_df.track('promotion_clicked', {
  promotion_id: 'SUMMER24',
  name: 'Summer Sale Banner',
  creative: 'summer-sale-hero-v2.jpg',
  position: 'homepage-hero'
})
PropertyTypeRequiredDescription
promotion_idstringOptionalIdentifier for the promotion
namestringOptionalHuman-readable name of the promotion
creativestringOptionalName or URL of the creative asset shown
positionstringOptionalSlot or placement where the promotion appeared

Product Events

product_viewed

Fired when a user lands on a product detail page.

_df.track('product_viewed', {
  product_id: 'PKT-001',
  sku: 'PKT-001-BLK-M',
  name: 'Parka Jacket',
  price: 129.99,
  currency: 'GBP',
  category: 'Women > Jackets',
  brand: 'NorthEdge',
  variant: 'Black / M',
  url: 'https://example.com/products/parka-jacket',
  image_url: 'https://example.com/images/parka-jacket-blk.jpg'
})
PropertyTypeRequiredDescription
product_idstringOptionalYour internal product ID
skustringOptionalStock keeping unit for the specific variant
namestringOptionalProduct display name
pricenumberOptionalUnit price
currencystringOptionalISO 4217 currency code (e.g. GBP, USD)
categorystringOptionalProduct category or breadcrumb path
brandstringOptionalBrand name
variantstringOptionalSelected variant (e.g. Blue / XL)
urlstringOptionalCanonical URL of the product page
image_urlstringOptionalURL of the primary product image

product_added

Fired when a user adds a product to their cart.

_df.track('product_added', {
  product_id: 'PKT-001',
  sku: 'PKT-001-BLK-M',
  name: 'Parka Jacket',
  price: 129.99,
  currency: 'GBP',
  category: 'Women > Jackets',
  brand: 'NorthEdge',
  variant: 'Black / M',
  quantity: 1
})
PropertyTypeRequiredDescription
product_idstringOptionalYour internal product ID
skustringOptionalStock keeping unit
namestringOptionalProduct display name
pricenumberOptionalUnit price
currencystringOptionalISO 4217 currency code
categorystringOptionalProduct category
brandstringOptionalBrand name
variantstringOptionalSelected variant
quantitynumberOptionalNumber of units added (defaults to 1 if omitted)

product_removed

Fired when a user removes a product from their cart.

_df.track('product_removed', {
  product_id: 'PKT-001',
  sku: 'PKT-001-BLK-M',
  name: 'Parka Jacket',
  price: 129.99,
  currency: 'GBP',
  category: 'Women > Jackets',
  brand: 'NorthEdge',
  variant: 'Black / M',
  quantity: 1
})

Accepts the same properties as product_added.


product_reviewed

Fired when a user submits a review for a product.

_df.track('product_reviewed', {
  product_id: 'PKT-001',
  review_id: 'rev-8821',
  review_body: 'Great jacket, really warm and the sizing is accurate.',
  rating: 5
})
PropertyTypeRequiredDescription
product_idstringRequiredProduct being reviewed
review_idstringRequiredUnique ID for this review submission
review_bodystringRequiredText content of the review
ratingnumberRequiredNumeric rating (e.g. 1–5)

Cart & Checkout Events

cart_viewed

Fired when a user opens or views their shopping cart.

_df.track('cart_viewed', {
  cart_id: 'cart-f3a9c2',
  currency: 'GBP',
  total: 259.98,
  products: [
    { product_id: 'PKT-001', name: 'Parka Jacket', price: 129.99, quantity: 2 }
  ]
})
PropertyTypeRequiredDescription
cart_idstringOptionalUnique identifier for the cart session
productsarrayOptionalProducts currently in the cart (see schema below)
totalnumberOptionalCart total value
currencystringOptionalISO 4217 currency code

checkout_started

Fired when a user initiates the checkout process.

_df.track('checkout_started', {
  order_id: 'ORD-10042',
  revenue: 259.98,
  currency: 'GBP',
  coupon: 'SAVE10',
  products: [
    { product_id: 'PKT-001', name: 'Parka Jacket', price: 129.99, quantity: 2 }
  ]
})
PropertyTypeRequiredDescription
order_idstringOptionalOrder identifier (may be provisional at this stage)
revenuenumberOptionalTotal revenue value of the checkout
currencystringOptionalISO 4217 currency code
couponstringOptionalCoupon code applied
productsarrayOptionalProducts in the checkout (see schema below)

checkout_step_viewed

Fired when a user arrives at a distinct step in the checkout flow (e.g. address, shipping, payment).

_df.track('checkout_step_viewed', {
  checkout_id: 'chk-a83f1',
  step: 2,
  step_name: 'Shipping Method'
})
PropertyTypeRequiredDescription
checkout_idstringRequiredUnique identifier for this checkout session
stepnumberRequiredStep number (1-indexed)
step_namestringRequiredHuman-readable name for the step

checkout_step_completed

Fired when a user completes a checkout step and advances to the next.

_df.track('checkout_step_completed', {
  checkout_id: 'chk-a83f1',
  step: 2,
  step_name: 'Shipping Method',
  option: 'Express Delivery'
})
PropertyTypeRequiredDescription
checkout_idstringRequiredUnique identifier for this checkout session
stepnumberRequiredStep number completed
step_namestringRequiredHuman-readable name for the step
optionstringOptionalOption selected at this step (e.g. payment method, shipping tier)

payment_info_entered

Fired when a user submits their payment details.

_df.track('payment_info_entered', {
  checkout_id: 'chk-a83f1',
  payment_method: 'credit_card'
})
PropertyTypeRequiredDescription
checkout_idstringOptionalCheckout session identifier
payment_methodstringOptionalPayment method type (e.g. credit_card, paypal, apple_pay)

Order Events

order_completed

Fired on the order confirmation page after a successful purchase. This is the most important e-commerce event — ensure it fires reliably.

_df.track('order_completed', {
  order_id: 'ORD-10042',
  revenue: 259.98,
  subtotal: 249.98,
  tax: 43.33,
  shipping: 10.00,
  currency: 'GBP',
  coupon: 'SAVE10',
  affiliation: 'NorthEdge Online Store',
  products: [
    { product_id: 'PKT-001', sku: 'PKT-001-BLK-M', name: 'Parka Jacket', price: 129.99, quantity: 2, category: 'Jackets', brand: 'NorthEdge' }
  ]
})
PropertyTypeRequiredDescription
order_idstringRequiredUnique order identifier — used for deduplication
revenuenumberOptionalTotal revenue including tax and shipping
subtotalnumberOptionalRevenue before tax and shipping
taxnumberOptionalTax amount
shippingnumberOptionalShipping cost
currencystringOptionalISO 4217 currency code
couponstringOptionalCoupon code applied to the order
affiliationstringOptionalStore or affiliate that generated the order
productsarrayOptionalProducts purchased (see schema below)
⚠️

Always send order_id to enable server-side deduplication. Platforms like Meta CAPI and GA4 use the order ID to prevent double-counting alongside browser-side events.


order_updated

Fired when an existing order is modified (e.g. quantity change, address update).

_df.track('order_updated', {
  order_id: 'ORD-10042',
  revenue: 389.97,
  products: [
    { product_id: 'PKT-001', name: 'Parka Jacket', price: 129.99, quantity: 3 }
  ]
})
PropertyTypeRequiredDescription
order_idstringRequiredIdentifier of the order being updated
revenuenumberOptionalUpdated total revenue
productsarrayOptionalUpdated product list

order_cancelled

Fired when an order is cancelled before fulfilment.

_df.track('order_cancelled', {
  order_id: 'ORD-10042',
  revenue: 259.98,
  reason: 'customer_request'
})
PropertyTypeRequiredDescription
order_idstringRequiredIdentifier of the cancelled order
revenuenumberOptionalRevenue value of the cancelled order
reasonstringOptionalReason for cancellation (e.g. customer_request, out_of_stock)

order_refunded

Fired when a full or partial refund is issued. For partial refunds, include only the products being refunded.

_df.track('order_refunded', {
  order_id: 'ORD-10042',
  revenue: 129.99,
  products: [
    { product_id: 'PKT-001', name: 'Parka Jacket', price: 129.99, quantity: 1 }
  ]
})
PropertyTypeRequiredDescription
order_idstringRequiredIdentifier of the order being refunded
revenuenumberOptionalAmount refunded
productsarrayOptionalProducts being refunded. Omit for full order refunds; include specific items for partial refunds.

Coupon Events

coupon_applied

Fired when a coupon code is successfully applied to an order or cart.

_df.track('coupon_applied', {
  order_id: 'ORD-10042',
  coupon_id: 'SAVE10',
  coupon_name: '10% Off Summer Sale',
  discount: 25.99
})
PropertyTypeRequiredDescription
order_idstringOptionalOrder the coupon was applied to
coupon_idstringOptionalMachine-readable coupon code
coupon_namestringOptionalHuman-readable coupon name
discountnumberOptionalMonetary discount value applied

coupon_removed

Fired when a coupon is removed from an order or cart.

_df.track('coupon_removed', {
  order_id: 'ORD-10042',
  coupon_id: 'SAVE10'
})
PropertyTypeRequiredDescription
order_idstringOptionalOrder the coupon was removed from
coupon_idstringOptionalMachine-readable coupon code

Wishlist Events

wishlist_product_added

Fired when a user saves a product to their wishlist.

_df.track('wishlist_product_added', {
  wishlist_id: 'wl-user-3812',
  wishlist_name: 'My Favourites',
  product_id: 'PKT-001',
  name: 'Parka Jacket',
  price: 129.99
})
PropertyTypeRequiredDescription
wishlist_idstringOptionalUnique identifier for the wishlist
wishlist_namestringOptionalDisplay name of the wishlist
product_idstringOptionalProduct added to the wishlist
namestringOptionalProduct display name
pricenumberOptionalProduct price at time of saving

wishlist_product_removed

Fired when a user removes a product from their wishlist.

_df.track('wishlist_product_removed', {
  wishlist_id: 'wl-user-3812',
  wishlist_name: 'My Favourites',
  product_id: 'PKT-001',
  name: 'Parka Jacket',
  price: 129.99
})

Accepts the same properties as wishlist_product_added.


Products Array Schema

💡

Several events accept a products array. Each object in the array can include the following properties. All are optional unless noted.

PropertyTypeDescription
product_idstringYour internal product ID
skustringStock keeping unit for the specific variant
namestringProduct display name
pricenumberUnit price
quantitynumberNumber of units (relevant in cart/order contexts)
positionnumberPosition in list (relevant in list/search contexts, 1-indexed)
categorystringProduct category
brandstringBrand name
variantstringSelected variant (e.g. Blue / XL)
currencystringISO 4217 currency code
urlstringProduct page URL
image_urlstringPrimary product image URL

Vendor Mapping

The table below shows how Datafly Signal maps key e-commerce events to the native event names expected by each vendor’s server-side API.

Signal EventGA4Meta CAPITikTok Events API
product_viewedview_itemViewContentViewContent
product_addedadd_to_cartAddToCartAddToCart
product_list_viewedview_item_listViewContentViewContent
product_searchedsearchSearchSearch
checkout_startedbegin_checkoutInitiateCheckoutInitiateCheckout
payment_info_enteredadd_payment_infoAddPaymentInfoAddPaymentInfo
order_completedpurchasePurchasePlaceAnOrder
order_refundedrefund(custom event)(custom event)
promotion_viewedview_promotion(custom event)(custom event)
promotion_clickedselect_promotion(custom event)(custom event)
wishlist_product_addedadd_to_wishlistAddToWishlistAddToWishlist