Skip to main content

Event Reference

Purpose Of This Page

This page is the source of truth for canonical event names and minimum payload requirements.

For platform-specific sender examples (CDN, npm, React Native), use Event Cookbook.

Sender Models

Selwise supports two logical send paths:

  1. track(name, args?) for direct runtime event emission.
  2. pushDataLayer(payload) for structured event payloads.

Access by integration mode:

  • CDN: window.Selwise.track(...), window.Selwise.pushDataLayer(...)
  • npm instance: widget.track(...), widget.pushDataLayer(...)
  • npm global (optional): window.Selwise.* with exposeGlobal: true
  • React Native: sdk.track(...), sdk.pushDataLayer(...) (local snapshot), sdk.flush() for immediate network send

Canonical Rules

  1. Use canonical names exactly as listed.
  2. Do not send legacy aliases.
  3. For business-specific events, use custom_event.
  4. Include event-family minimum fields.

Complete Event Catalog

EventFamilyRequired Minimum Fields
page_viewPagepage.type or page.path
virtual_page_viewPagepage.path
widget_viewPagecustom.params.widgetId
category_viewPageentityId (category path) or metadata.categoryPath
product_viewProductproduct.sku or metadata.productItemCode
product_clickProductproduct.sku or metadata.productItemCode
product_impressionProductproduct.sku
product_dwell_timeProductproduct.sku
add_to_cartCartbasket.products[]
remove_from_cartCartbasket.products[]
update_cartCartbasket.products[]
cart_abandonCartbasket.id
cart_restoreCartbasket.id
checkout_beginCheckoutcheckout.step
checkout_progressCheckoutcheckout.step
checkout_optionCheckoutcheckout.step, checkout.option
purchaseCheckoutorder.id, order.total
user_signupUseruser.id
user_loginUseruser.id
user_logoutUseruser.id
user_updateUseruser.id
search_instant_openSearchevent
search_querySearchsearch.query
search_filterSearchsearch.filters[]
search_sortSearchsearch.sortBy
search_pageSearchsearch.page
search_resultsSearchsearch.results
search_zero_resultsSearchsearch.query, search.results = 0
search_closeSearchevent
impressionEngagementevent
clickEngagementevent
closeEngagementevent
viewEngagementevent
hoverEngagementevent
scrollEngagementevent
slider_navigateEngagementcustom.params.direction
slider_swipeEngagementcustom.params.direction
widget_impressionEngagementcustom.params.widgetId
script_injectedEngagementcustom.params.scriptId
script_errorEngagementcustom.params.scriptId
identifyUseruser.id
category_filterSearchsearch.category
recent_search_clickSearchsearch.query
popular_search_clickSearchsearch.query
popular_category_clickSearchsearch.category
popular_product_clickProductproduct.sku
wishlistProductproduct.sku
custom_eventCustomcustom.name

Track vs Data Layer Guidance

  • Use track(...) for direct semantic event emission.
  • Use pushDataLayer(...) when mirroring structured analytics payloads.
  • In React Native, pushDataLayer(...) does not send events to network by itself.

Validation Checklist

  1. Canonical event name is used.
  2. Event-family minimum fields are present.
  3. Product-related events include stable product identifier.
  4. Consent state allows event family.
  5. For RN, event network send is validated with flush().