Events
Send control
Section titled “Send control”Every event extends AffiseEvent (src/events/base/AffiseEvent.ts:19) and exposes two send modes.
Batched send
Section titled “Batched send”AffiseEvent.send(): void (src/events/base/AffiseEvent.ts:126-128) queues the event and calls Affise.sendEvent(this) (src/index.ts:49-51).
AddToCartEvent() .send();Immediate send
Section titled “Immediate send”AffiseEvent.sendNow(success, failed) (src/events/base/AffiseEvent.ts:133-135) delegates to Affise.sendEventNow(event, success, failed) (src/index.ts:56-58). Callback type aliases:
OnSendSuccessCallback = () => void(src/events/OnSendSuccessCallback.ts:1)OnSendFailedCallback = (status: HttpResponse) => void(src/events/OnSendFailedCallback.ts:1-3)
AddToCartEvent() .sendNow(() => { // handle event send success }, (status) => { // handle event send failed // Warning: event is NOT cached for later send });Event base classes
Section titled “Event base classes”AffiseEvent(src/events/base/AffiseEvent.ts:19) -name,category,userData,firstForUser,serialize,predefinedParameters.NativeEvent extends AffiseEvent(src/events/base/NativeEvent.ts:6) - setscategory = 'react'(:10) and serializes timestamp.AffiseEventProps(src/events/base/AffiseEventProps.ts:1-4):{ userData?: string | null; timeStampMillis?: number | null }.AffiseCustomEventProps extends AffiseEventProps(src/events/base/AffiseCustomEventProps.ts:3-5): addseventName: string.
Predefined events
Section titled “Predefined events”Each concrete class extends NativeEvent and accepts optional AffiseEventProps. Classes from src/events/predefined/:
| Class | File:line |
|---|---|
| AchieveLevelEvent | src/events/predefined/AchieveLevelEvent.ts:5 |
| AdRevenueEvent | src/events/predefined/AdRevenueEvent.ts:5 |
| AddPaymentInfoEvent | src/events/predefined/AddPaymentInfoEvent.ts:5 |
| AddToCartEvent | src/events/predefined/AddToCartEvent.ts:5 |
| AddToWishlistEvent | src/events/predefined/AddToWishlistEvent.ts:5 |
| ClickAdvEvent | src/events/predefined/ClickAdvEvent.ts:5 |
| CompleteRegistrationEvent | src/events/predefined/CompleteRegistrationEvent.ts:5 |
| CompleteStreamEvent | src/events/predefined/CompleteStreamEvent.ts:5 |
| CompleteTrialEvent | src/events/predefined/CompleteTrialEvent.ts:5 |
| CompleteTutorialEvent | src/events/predefined/CompleteTutorialEvent.ts:5 |
| ContactEvent | src/events/predefined/ContactEvent.ts:5 |
| ContentItemsViewEvent | src/events/predefined/ContentItemsViewEvent.ts:5 |
| CustomizeProductEvent | src/events/predefined/CustomizeProductEvent.ts:5 |
| DeepLinkedEvent | src/events/predefined/DeepLinkedEvent.ts:5 |
| DonateEvent | src/events/predefined/DonateEvent.ts:5 |
| FindLocationEvent | src/events/predefined/FindLocationEvent.ts:5 |
| InitiateCheckoutEvent | src/events/predefined/InitiateCheckoutEvent.ts:5 |
| InitiatePurchaseEvent | src/events/predefined/InitiatePurchaseEvent.ts:5 |
| InitiateStreamEvent | src/events/predefined/InitiateStreamEvent.ts:5 |
| InviteEvent | src/events/predefined/InviteEvent.ts:5 |
| LastAttributedTouchEvent | src/events/predefined/LastAttributedTouchEvent.ts:5 |
| LeadEvent | src/events/predefined/LeadEvent.ts:5 |
| ListViewEvent | src/events/predefined/ListViewEvent.ts:5 |
| LoginEvent | src/events/predefined/LoginEvent.ts:5 |
| OpenedFromPushNotificationEvent | src/events/predefined/OpenedFromPushNotificationEvent.ts:5 |
| OrderCancelEvent | src/events/predefined/OrderCancelEvent.ts:5 |
| OrderEvent | src/events/predefined/OrderEvent.ts:5 |
| OrderItemAddedEvent | src/events/predefined/OrderItemAddedEvent.ts:5 |
| OrderItemRemoveEvent | src/events/predefined/OrderItemRemoveEvent.ts:5 |
| OrderReturnRequestCancelEvent | src/events/predefined/OrderReturnRequestCancelEvent.ts:5 |
| OrderReturnRequestEvent | src/events/predefined/OrderReturnRequestEvent.ts:5 |
| PurchaseEvent | src/events/predefined/PurchaseEvent.ts:5 |
| RateEvent | src/events/predefined/RateEvent.ts:5 |
| ReEngageEvent | src/events/predefined/ReEngageEvent.ts:5 |
| ReserveEvent | src/events/predefined/ReserveEvent.ts:5 |
| SalesEvent | src/events/predefined/SalesEvent.ts:5 |
| ScheduleEvent | src/events/predefined/ScheduleEvent.ts:5 |
| SearchEvent | src/events/predefined/SearchEvent.ts:5 |
| ShareEvent | src/events/predefined/ShareEvent.ts:5 |
| SpendCreditsEvent | src/events/predefined/SpendCreditsEvent.ts:5 |
| StartRegistrationEvent | src/events/predefined/StartRegistrationEvent.ts:5 |
| StartTrialEvent | src/events/predefined/StartTrialEvent.ts:5 |
| StartTutorialEvent | src/events/predefined/StartTutorialEvent.ts:5 |
| SubmitApplicationEvent | src/events/predefined/SubmitApplicationEvent.ts:5 |
| SubscribeEvent | src/events/predefined/SubscribeEvent.ts:5 |
| TravelBookingEvent | src/events/predefined/TravelBookingEvent.ts:5 |
| UnlockAchievementEvent | src/events/predefined/UnlockAchievementEvent.ts:5 |
| UnsubscribeEvent | src/events/predefined/UnsubscribeEvent.ts:5 |
| UpdateEvent | src/events/predefined/UpdateEvent.ts:5 |
| ViewAdvEvent | src/events/predefined/ViewAdvEvent.ts:5 |
| ViewCartEvent | src/events/predefined/ViewCartEvent.ts:5 |
| ViewContentEvent | src/events/predefined/ViewContentEvent.ts:5 |
| ViewItemEvent | src/events/predefined/ViewItemEvent.ts:5 |
| ViewItemsEvent | src/events/predefined/ViewItemsEvent.ts:5 |
Event name strings live in the EventName enum (src/events/EventName.ts:1-66).
import { Affise, AddToCartEvent } from 'affise-attribution-lib';
class Presenter { onUserAddsItemsToCart(item: string) { const items = { items: 'cookies, potato, milk', };
new AddToCartEvent({ userData: item, timeStampMillis: Date.now() }) .addPredefinedString(PredefinedString.DESCRIPTION, 'groceries') .addPredefinedObject(PredefinedObject.CONTENT, items) .send(); }}Custom events
Section titled “Custom events”Ten slot classes CustomId01Event .. CustomId10Event (src/events/custom/CustomId01Event.ts:11 through CustomId10Event.ts:11) each extend NativeEvent and use the corresponding EventName.CUSTOM_ID_XX.
For arbitrary names use UserCustomEvent extends NativeEvent (src/events/custom/UserCustomEvent.ts:11-15) which accepts AffiseCustomEventProps { eventName, userData?, timeStampMillis? }.
new UserCustomEvent({eventName: "MyCustomEvent"}) .send();Subscription custom events use UserCustomSubscriptionEvent extends BaseSubscriptionEvent (src/events/custom/UserCustomSubscriptionEvent.ts:12-16), which takes AffiseCustomSubscriptionEventProps { type, subtype, data?, userData? } (src/events/subscription/AffiseCustomSubscriptionEventProps.ts:3-6). See the subscription module for the full event catalogue.
Predefined event parameters
Section titled “Predefined event parameters”All parameter names share the "affise_p_" prefix (src/events/parameters/Predefined.ts:9, serialized via ToValue() at :14-16). Add parameters via fluent setters on AffiseEvent:
addPredefinedFloat(parameter: PredefinedFloat, value: number): AffiseEvent(src/events/base/AffiseEvent.ts:63-66)addPredefinedListObject(parameter: PredefinedListObject, value: Record<string, unknown>[]): AffiseEvent(:71-74)addPredefinedListString(parameter: PredefinedListString, value: string[]): AffiseEvent(:79-82)addPredefinedLong(parameter: PredefinedLong, value: bigint): AffiseEvent(:87-90)addPredefinedObject(parameter: PredefinedObject, value: Record<string, unknown>): AffiseEvent(:95-98)addPredefinedString(parameter: PredefinedString, value: string): AffiseEvent(:103-106)
PredefinedGroup (src/events/parameters/PredefinedGroup.ts:6-42) wraps a named group (affise_p_list_group) with its own addPredefinedFloat/Long/String.
PredefinedString (src/events/parameters/PredefinedString.ts:1-70)
Section titled “PredefinedString (src/events/parameters/PredefinedString.ts:1-70)”ADREV_AD_TYPE, CITY, COUNTRY, REGION, CLASS, CONTENT_ID, CONTENT_TYPE, CURRENCY, CUSTOMER_USER_ID, DESCRIPTION, DESTINATION_A, DESTINATION_B, DESTINATION_LIST, ORDER_ID, PAYMENT_INFO_AVAILABLE, PREFERRED_NEIGHBORHOODS, PURCHASE_CURRENCY, RECEIPT_ID, REGISTRATION_METHOD, SEARCH_STRING, SUBSCRIPTION_ID, SUCCESS, SUGGESTED_DESTINATIONS, SUGGESTED_HOTELS, VALIDATED, ACHIEVEMENT_ID, COUPON_CODE, CUSTOMER_SEGMENT, DEEP_LINK, NEW_VERSION, OLD_VERSION, PARAM_01 .. PARAM_10, REVIEW_TEXT, TUTORIAL_ID, VIRTUAL_CURRENCY_NAME, STATUS, BRAND, BRICK, CATALOGUE_ID, CHANNEL_TYPE, CUSTOMER_TYPE, SEGMENT, UTM_CAMPAIGN, UTM_MEDIUM, UTM_SOURCE, VERTICAL, VOUCHER_CODE, CLICK_ID, CAMPAIGN_ID, EVENT_NAME, PID, PRODUCT_ID, CONVERSION_ID, CONTENT_NAME, PRODUCT_NAME, SOURCE, NETWORK, UNIT, PLACEMENT.
PredefinedLong (src/events/parameters/PredefinedLong.ts:1-25)
Section titled “PredefinedLong (src/events/parameters/PredefinedLong.ts:1-25)”AMOUNT, DATE_A, DATE_B, DEPARTING_ARRIVAL_DATE, DEPARTING_DEPARTURE_DATE, HOTEL_SCORE, LEVEL, MAX_RATING_VALUE, NUM_ADULTS, NUM_CHILDREN, NUM_INFANTS, PREFERRED_NUM_STOPS, PREFERRED_STAR_RATINGS, QUANTITY, RATING_VALUE, RETURNING_ARRIVAL_DATE, RETURNING_DEPARTURE_DATE, SCORE, TRAVEL_START, TRAVEL_END, USER_SCORE, EVENT_START, EVENT_END.
PredefinedFloat (src/events/parameters/PredefinedFloat.ts:1-7)
Section titled “PredefinedFloat (src/events/parameters/PredefinedFloat.ts:1-7)”PREFERRED_PRICE_RANGE, PRICE, REVENUE, LAT, LONG.
PredefinedObject (src/events/parameters/PredefinedObject.ts:1-3)
Section titled “PredefinedObject (src/events/parameters/PredefinedObject.ts:1-3)”CONTENT.
PredefinedListObject (src/events/parameters/PredefinedListObject.ts:1-3)
Section titled “PredefinedListObject (src/events/parameters/PredefinedListObject.ts:1-3)”CONTENT_LIST.
PredefinedListString (src/events/parameters/PredefinedListString.ts:1-3)
Section titled “PredefinedListString (src/events/parameters/PredefinedListString.ts:1-3)”CONTENT_IDS.
Example
Section titled “Example”import { Affise, AddToCartEvent, PredefinedString, PredefinedObject,} from 'affise-attribution-lib';
class Presenter { onUserAddsItemsToCart(item: string) { const items = { items: 'cookies, potato, milk', };
new AddToCartEvent({ userData: item, }) .addPredefinedString(PredefinedString.DESCRIPTION, 'best before 2029') .addPredefinedObject(PredefinedObject.CONTENT, items) .send(); }}Events buffering
Section titled “Events buffering”Affise library will send any pending events with first opportunity, but if there is no network connection or device is disabled, events are kept locally for 7 days before deletion.
There is no explicit TS API; buffering is implemented on the native side. Failed delivery of sendNow is surfaced through OnSendFailedCallback with an HttpResponse payload (src/events/OnSendFailedCallback.ts:1-3).