Skip to content
Code samples below use example values.

E-commerce events

Alongside the core event model, Prism recognizes a canonical set of e-commerce events covering the full journey from browsing to purchase. On most stores every one of these is captured automatically — see Detecting e-commerce with dataLayer for how, and the Shopify guide if you're on Shopify.

The journey

EventFires onCaptureSent to ad platforms
ViewItemA product page viewAutoYes, by default
ViewItemListA collection/category page viewAutoFirst-party only
SearchA site searchAutoFirst-party only
AddToCartAn item added to the cartAutoYes, by default
RemoveFromCartAn item removed from the cartAutoFirst-party only
ViewCartThe cart page or drawer openedAutoFirst-party only
BeginCheckoutCheckout startedAutoYes, by default
AddShippingInfoShipping step completedAutoFirst-party only
AddPaymentInfoPayment step completedAutoFirst-party only
PurchaseOrder completedAutoYes, always
CheckoutAbandonCheckout started, never completedDerived — see Cart abandonmentFirst-party only
CartAbandonItem added to cart, checkout never startedDerived — see Cart abandonmentFirst-party only

"Auto" means Prism detects and fires the event with no code changes on your part, either from your site's existing dataLayer/GTM instrumentation or, on Shopify, from the customer-events pixel. "First-party only" events are collected and shown in Adsidian's reporting but held back from Meta, Google, and Reddit unless your agency opts them in — the same auto-capture policy the rest of Prism follows.

Purchase is the exception to "first-party only": it's your conversion, so it always ships to whichever ad platforms are connected. ViewItem, AddToCart, and BeginCheckout join it in the default fan-out because those three plus Purchase are what Meta and Google actually optimize campaigns on — your agency can add more from the dashboard.

Commerce properties

Every journey event carries a consistent shape:

PropertyTypeMeaning
valuenumberMonetary value of the event — cart total, order total, or item price depending on the event
currencystringISO 4217 currency code (USD, CAD, …)
contentsarrayLine items: [{ id, quantity, item_price }, ...]
num_itemsnumberTotal unit count across contents
order_idstringYour order/transaction ID — present on Purchase and used to deduplicate a browser-fired Purchase against the same order arriving by webhook

contents[].id must match your product catalog exactly

Meta's dynamic and Advantage+ catalog retargeting keys off content_ids matching the id field in the product catalog feed Meta ads from — not your internal SKU, not a display name. If the ID format doesn't match (a common mismatch: Shopify's plain variant ID vs. the composite shopify_{country}_{productId}_{variantId} format the Meta sales channel uses), retargeting and dynamic ads fail silently — no error, just empty audiences. If you're on Shopify, the catalog ID format is a setting in your Prism setup; see the Shopify guide.

Manual tracking

If a cart or checkout step isn't auto-captured — a fully custom cart, a step your platform module doesn't reach yet — fire it yourself with the same window.prism('track', ...) API used for every other event:

js
window.prism('track', 'Purchase', {
  value: 129.0,
  currency: 'USD',
  order_id: 'A-1042',
  contents: [
    { id: 'shopify_US_7812093_44120981', quantity: 2, item_price: 49.0 },
    { id: 'shopify_US_7812104_44121002', quantity: 1, item_price: 31.0 },
  ],
  num_items: 3,
});

You can pass email/phone/etc. alongside — see Customer data & privacy for the recognized fields and how they're hashed.

Next

Adsidian Prism — first-party server-side tracking.