Skip to content

Events

Every event extends AffiseEvent (src/events/base/AffiseEvent.ts:19) and exposes two send modes.

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();

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
});
  • AffiseEvent (src/events/base/AffiseEvent.ts:19) - name, category, userData, firstForUser, serialize, predefinedParameters.
  • NativeEvent extends AffiseEvent (src/events/base/NativeEvent.ts:6) - sets category = '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): adds eventName: string.

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();
}
}

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.

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.

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();
}
}

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).