Event Parameters and Types
For developers
The exhaustive parameter reference (type contract plus runtime behavior) for every event. When the two differ, runtime wins — see Known Gotchas.
How to read this page
This page merges:
- Type contract source:
src/types.ts - Runtime payload behavior:
src/classes/events.ts
If type and runtime behavior differ, runtime behavior wins for what is actually sent.
Common auto fields on most events
Added by sendEvent():
userIdsessionIddeviceososversioncurrencylangtestModeemail(if present in SDK user storage)
Page and product
PageView(params)
- Event name:
PAGE_VIEW - Type:
Omit<PageViewPayload, 'name'> - Parameters:
category?subCategory?params?
ProductView(params)
- Event name:
PRODUCT_VIEW - Type:
Omit<ProductViewPayload, 'name'> - Required:
productId
- Optional highlights:
title,price,oldPrice,brand,category,mainCategoryimage,additionalImagesinStock,stockCount,stockStatuslabels,reviewCount,params
- Runtime note:
paramsentries are JSON-stringified before send.- Boolean-like
inStockandnoUpdateare normalized.
Search
Search(params)
- Event name:
SEARCH - Type:
Omit<SearchPayload, 'name'> - Required:
query
- Optional:
type(instantorfaceted)results
Practical modes used by this SDK:
- Before Search:
query: '',type: 'instant' - After Search: query not empty +
type: 'instant' - Searchandising: query not empty +
type: 'faceted'
Basket and checkout
BasketView(params)
- Event name:
CHECKOUT - Step:
view-basket - Type:
Omit<BasketViewPayload, 'name'> - Required:
totalPriceproductList
- Optional:
cartUrl(recommended for deep links; seeexample/src/screens/BasketScreen.tsx; Event Playground Basket View omits it)
- Runtime note:
- Adds
basketId: basketId_{userId}.
- Adds
BasketAdd(params)
- Event name:
BASKET_OPERATIONS - Step:
add - Type:
Omit<BasketOperationPayload, 'name'> - Required:
productIdquantity
- Optional:
price
- Runtime note:
- Adds
basketId: basketId_{userId}.
- Adds
BasketRemove(params)
- Event name:
BASKET_OPERATIONS - Step:
remove - Type:
Omit<BasketOperationPayload, 'name'> - Required:
productIdquantity
- Optional:
price
- Runtime note:
- Adds
basketId: basketId_{userId}.
- Adds
BasketClear()
- Event name:
BASKET_OPERATIONS - Step:
clear - Input: no params
- Runtime note:
- Adds
basketId: basketId_{userId}.
- Adds
Purchase(params)
- Event name:
CHECKOUT - Step:
purchase - Type:
Omit<PurchasePayload, 'name'> - Required:
totalPriceorderNoproductList
- Optional:
paymentType,discounts,shipment,tax,coupon
- Runtime note:
- Adds
basketId: basketId_{userId}.
- Adds
CustomerInformation(params)
- Event name:
CHECKOUT - Step:
customer-info - Type:
Omit<BasketViewPayload, 'name'> - Required:
totalPriceproductList
- Optional:
cartUrl
PaymentInformation(params)
- Event name:
CHECKOUT - Step:
payment-info - Type:
Omit<PurchasePayload, 'name'> - Required:
totalPriceorderNoproductList
Wishlist
FavoriteAdd(params)
- Event name:
WISHLIST - Step:
add - Type:
FavoritePayload - Required:
productId
- Optional:
favoritesList
FavoriteRemove(params)
- Event name:
WISHLIST - Step:
remove - Type:
FavoritePayload - Required:
productId
- Optional:
favoritesList
FavoriteDetail(params)
- Event name:
WISHLIST - Step:
detail - Type:
Omit<FavoritePayload, 'productId'> - Optional:
favoritesList
FavoriteView(params)
- Event name:
WISHLIST - Step:
view-favorites - Type:
Omit<FavoritePayload, 'productId'> - Optional:
favoritesList
User lifecycle
Identify(params)
- Event name:
USER_OPERATIONS - Step:
update - Type:
IdentifyPayload - Common fields:
email,externalId,phoneisLogin,isRegisteredemailNtf,smsNtf,whatsappNtfsource
- Runtime notes:
- If
isLoginexists, it may setisRegistered. source: 'email-collection'forcesemailNtf = true.source: 'whatsapp-collection'forceswhatsappNtf = true.- Sent with
async: false.
- If
IysPermission(params)
- Event name:
USER_OPERATIONS - Step:
iyspermissions - Type:
Omit<RegisterPayload, 'name' | 'isLogin' | 'isRegistered'> - Purpose:
- IYS consent payload for relevant integrations.
Register(params)
- Event name:
USER_OPERATIONS - Step:
signup - Type:
Omit<RegisterPayload, 'name' | 'isLogin' | 'isRegistered' | 'isNft'> - Required:
email
- Common optional:
externalId,phone,emailNtf,smsNtf,whatsappNtf
- Runtime notes:
- Persists user in SDK storage.
- Sends
isRegistered: true.
Login(params)
- SDK method:
events.Login(Expo playground UI label: LogIn). - Event name:
USER_OPERATIONS - Step:
signin - Type:
Omit<RegisterPayload, 'name' | 'isLogin' | 'isRegistered' | 'isNft'> - Required:
email
- Runtime notes:
- Persists user in SDK storage.
- Sends
isLogin: trueandisRegistered: true.
Logout(params)
- Event name:
USER_OPERATIONS - Step:
signout - Type:
Omit<LogoutPayload, 'name' | 'isLogin'> - Common field:
email
- Runtime note:
- Sends
isLogin: false.
- Sends
Customer Data Platform
CDP methods send dedicated event names (no step field). Payloads go through sendEvent() on /add/events/v1.json. See Customer Data Platform Events for full semantics.
UserTraits(params)
- Event name:
USER_TRAITS - Type:
CdpEventsPayload - Runtime notes:
- No-ops on an empty payload.
- Omitted consent fields are not defaulted.
- Does not persist to
SEGMENTIFY_USERstorage.
IdentifyUser(params)
- Event name:
USER_IDENTIFY - Type:
CdpEventsPayload - Runtime notes:
- Deduplicates against the last successfully sent profile snapshot in
SEGMENTIFY_USER_PROFILE. - Snapshot is cleared on
Logout/LogoutUser.
- Deduplicates against the last successfully sent profile snapshot in
RegisterUser(params) / LoginUser(params) / LogoutUser(params)
- Event names:
USER_REGISTER,USER_LOGIN,USER_LOGOUT - Type:
CdpEventsPayload - Runtime notes:
- No-ops on an empty payload.
- Omitted consent fields are not defaulted.
- Do not persist to
SEGMENTIFY_USERstorage and do not run IYS logic.
SubscribeUser(params)
- Event name:
USER_SUBSCRIBE - Type:
SubscribeProperties(discriminated bychannel) - Channel requirements:
web_push:pushSubscriptionIdemail:email,purposewhatsapp/sms/call:phoneNumber
UnsubscribeUser(params)
- Event name:
USER_UNSUBSCRIBE - Type:
UnsubscribePayload - Fields:
channel(required)email?(foremailchannel)phoneNumber?(forwhatsapp,sms,call)
Interaction, form, custom, gamification
Interaction(params)
- Event name:
INTERACTION - Type:
Omit<InteractionPayload, 'name'> - Required:
type(InteractionPayloadinsrc/types.ts; Event Playground SMS Interaction Click usestype: 'sms', which may require widening the union for strict TypeScript)
- Optional:
instanceId,interactionId
- Runtime note:
- If
instanceIdis provided, runtime setsinteractionIdto the same value (overwriting a distinctinteractionIdpassed in the same object).
- If
Form(params)
- Event name:
FORM - Type:
Omit<FormPayload, 'name'> - Required:
formNamefieldsinstanceId
- Runtime note:
instanceIdis nested intoparams.instanceIdin outgoing payload.
ErrorHandler(error)
- Event name:
CUSTOM_EVENT - Type:
Errorinput, not payload object - Runtime payload:
type: 'error_handler'params.errorMessageparams.nextPage: false
GamificationWof(params) and GamificationScratch(params)
- Event name:
GAMIFICATION - Type:
Omit<GamificationPayload, 'name'> - Common fields:
type,record,used,win,instanceId,interactionId
- Runtime note:
- Both methods set outgoing
type: 'win'.
- Both methods set outgoing
Push events (static methods)
Events.subscribePushNotification(params)
- Endpoint type: push subscription endpoint
- Type:
PushToken - Required:
token
- Optional:
providerType(FIREBASEorAPNS)
- Runtime payload fields include:
providerTypedeviceTokenuserIdostype: 'PERMISSION_INFO'
Events.pushNotificationInteraction(params)
- Endpoint type: push interaction endpoint
- Type:
PushNotificationClickPayloadorPushNotificationViewPayload
- Required:
type(CLICKorVIEW)
- Optional:
instanceId
- Runtime payload fields include:
instanceIduserIdostype
Implementation tips
- Use this reference with
End-to-End Implementation. - Treat
src/classes/events.tsas transport truth andsrc/types.tsas compile-time contract. - Validate critical events (
Purchase,Register,Login,Logout) for duplicates in QA.