Reporting Events Using Kotlin SDK
Events are used to track meaningful user interactions (purchase, add to cart, form completion, rating a product, and so on) for the purpose of behavioral targeting, reporting, and recommendations. Learn more about Events.
Use the DYSdk object to report events to Dynamic Yield.
Required events per vertical
reportPurchaseEvent
Mandatory event for E-commerce sections
Returns DYResult
Parameter | Data Structure |
---|---|
name: String Required | String |
value: Float Required | Float |
currency | CurrencyType? = null |
uniqueTransactionId | String? = null |
cart Required | <CartInnerItem> |
CartInnerItem.productId | String |
CartInnerItem.quantity | Int |
CartInnerItem.Itemprice | Float |
Example
private suspend fun reportPurchaseEvent() {
var result = DYSdk.getInstance().events.reportPurchaseEvent(
"purchase-event",
value = 5.3f,
currency = CurrencyType.IDR,
uniqueTransactionId = "unique-id",
cart = listOf(
CartInnerItem(
productId = "product-id",
quantity = 2u,
itemPrice = 8f
)
)
)
//Check the result status
}
reportAddToCartEvent
Mandatory event for Section with Ecommerce Vertical
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
value Required | Float |
currency | CurrencyType? = null |
quantity Required | Int |
productId Required | String |
cart | <CartInnerItem>? = null |
CartInnerItem.productId | String |
CartInnerItem.quantity | Int |
CartInnerItem.Itemprice | Float |
Example
private suspend fun reportAddToCartEvent() {
var result = DYSdk.getInstance().events.reportAddToCartEvent(
"add-to-cart-event",
value = 5.3f,
currency = CurrencyType.IDR,
productId = "product-id",
quantity = 3u,
cart = listOf(
CartInnerItem(
productId = "product-id-red-shirt",
quantity = 2u,
itemPrice = 8f
)
)
)
//Check the result status
}
reportApplicationEvent
Mandatory event for Financial Institute sections
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
value Required | Float |
currency | CurrencyType? = null |
quantity Required | Int |
productId Required | String |
cart | <CartInnerItem>? = null |
CartInnerItem.productId | String |
CartInnerItem.quantity | Int |
CartInnerItem.Itemprice | Float |
Example
private suspend fun reportApplicationEvent() {
var result = DYSdk.getInstance().events.reportApplicationEvent(
"application-event",
value = 5.3f,
currency = CurrencyType.IDR,
productId = "application-id",
quantity = 3u,
cart = listOf(
CartInnerItem(
productId = "application-id",
quantity = 2u,
itemPrice = 8f
)
)
)
//Check the result status
}
reportSubmissionEvent
Mandatory event for Financial Institute sections
Returns DYResult
Parameter | Data Structure |
---|---|
name: String Required | String |
value: Float Required | Float |
currency | CurrencyType? = null |
uniqueTransactionId | String? = null |
cart: Required | <CartInnerItem> |
CartInnerItem.productId | String |
CartInnerItem.quantity | Int |
CartInnerItem.Itemprice | Float |
Example
private suspend fun reportSubmissionEvent() {
var result = DYSdk.getInstance().events.reportSubmissionEvent(
"submission-event",
value = 5.3f,
currency = CurrencyType.IDR,
uniqueTransactionId = "unique-id",
cart = listOf(
CartInnerItem(
productId = "product-id",
quantity = 2u,
itemPrice = 8f
)
)
)
//Check the result status
}
Events used for cross-channel identification
reportSignUpEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
cuidType | String? |
cuid | String?=null |
secondaryIdentifiers | <SecondaryIdentifier>? = null |
secondaryIdentifiers.type | String |
secondaryIdentifiers.value | String |
Example
private suspend fun reportSignUpEvent() {
var result = DYSdk.getInstance().events.reportSignUpEvent(
"sign-in-event",
cuidType = "email",
cuid = "cuid",
secondaryIdentifiers = listOf(
SecondaryIdentifier(
type = "phoneNumber",
value = "+972503803434"
)
)
)
//Check the result status
}
reportLoginEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
cuidType Required | String |
cuid Required | String?=null |
secondaryIdentifiers | <SecondaryIdentifier>? = null |
secondaryIdentifiers.type | String |
secondaryIdentifiers.value | String |
Example
private suspend fun reportLoginEvent() {
var result = DYSdk.getInstance().events.reportLoginEvent(
"log-in-event",
cuidType = "email",
cuid = "cuid",
secondaryIdentifiers = listOf(
SecondaryIdentifier(
type = "phoneNumber",
value = "+972503803434"
)
)
)
//Check the result status
}
reportIdentifyUserEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
cuidType Required | String |
cuid | String?=null |
secondaryIdentifiers | <SecondaryIdentifier>? = null |
secondaryIdentifiers.type | String |
secondaryIdentifiers.value | String |
Example
private suspend fun reportIdentifyUserEvent() {
var result = DYSdk.getInstance().events.reportIdentifyUserEvent(
"identify-user-id-event",
cuidType = "email",
cuid = "cuid",
secondaryIdentifiers = listOf(
SecondaryIdentifier(
type = "phoneNumber",
value = "+972503803434"
)
)
)
//Check the result status
}
reportNewsletterEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
cuidType | String? |
cuid | String?=null |
secondaryIdentifiers | <SecondaryIdentifier>? = null |
secondaryIdentifiers.type | String |
secondaryIdentifiers.value | String |
Example
private suspend fun reportNewsletterEvent() {
var result = DYSdk.getInstance().events.reportNewsletterEvent(
"news-letter-event",
cuidType = "email",
cuid = "cuid",
secondaryIdentifiers = listOf(
SecondaryIdentifier(
type = "phoneNumber",
value = "+972503803434"
)
)
)
//Check the result status
}
Additional event schemas
reportRemoveFromCartEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
value Required | Float |
quantity Required | int |
productId Required | String |
currency | CurrencyType? = null |
cart | <CartInnerItem>? = null |
CartInnerItem.productId | String |
CartInnerItem.quantity | int |
CartInnerItem.Itemprice | Float |
Example
private suspend fun reportRemoveFromCartEvent() {
var result = DYSdk.getInstance().events.reportRemoveFromCartEvent(
"submission-event",
value = 5.3f,
currency = CurrencyType.IDR,
productId = "product-id",
quantity = 1u,
cart = listOf(
CartInnerItem(
productId = "product-id",
quantity = 2u,
itemPrice = 8f
)
)
)
//Check the result status
}
reportSyncCartEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
value Required | Float |
currency Required | CurrencyType? = null |
cart | <CartInnerItem>? = null |
CartInnerItem.productId | String |
CartInnerItem.quantity | int |
CartInnerItem.Itemprice | Float |
Example
private suspend fun reportSyncCartEvent() {
var result = DYSdk.getInstance().events.reportSyncCartEvent(
"submission-event",
value = 5.3f,
currency = CurrencyType.IDR,
cart = listOf(
CartInnerItem(
productId = "product-id",
quantity = 2u,
itemPrice = 8f
)
)
)
//Check the result status
}
reportMessageOptInEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
cuidType Required | CuidType |
plainTextEmail | String? |
externalId | String? |
Example
private suspend fun reportMessageOptInEvent() {
var result = DYSdk.getInstance().events.reportMessageOptInEvent(
"message-opt-in-event",
cuidType = CuidType.EMAIL,
plainTextEmail = "a@a",
externalId = "externalId"
)
//Check the result status
}
reportMessageOptOutEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
cuidType Required | CuidType |
plainTextEmail | String? |
externalId | String? |
Example
private suspend fun reportMessageOptOutEvent() {
var result = DYSdk.getInstance().events.reportMessageOptInEvent(
"message-opt-out-event",
cuidType = CuidType.EMAIL,
plainTextEmail = "a@a",
externalId = "externalId"
)
//Check the result status
}
reportInformAffinityEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
source | String? = null |
data Required | <InformAffinityData> |
Example
private suspend fun reportInformAffinityEvent() {
var result = DYSdk.getInstance().events.reportInformAffinityEvent(
"report-inform-affinity",
source = "source",
data = listOf(
InformAffinityData(
attribute = "attribute",
listOf("value-1", "value-2")
)
),
)
//Check the result status
}
}
reportAddToWishListEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
productId Required | String |
size | String? = null |
Example
private suspend fun reportAddToWishListEvent() {
var result = DYSdk.getInstance().events.reportAddToWishListEvent(
"add-to-wish-list-event",
productId = "productId",
size = "medium"
)
}
reportVideoWatchEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
itemId Required | String |
autoplay Required | Boolean |
progress Required | VideoProgressType |
progressPercent Required | uint |
categories | <String>? = null |
Example
private suspend fun reportVideoWatchEvent() {
var result = DYSdk.getInstance().events.reportVideoWatchEvent(
"report-video-watch-event",
itemId = "itemId",
categories = listOf("category-1", "category-2"),
autoplay = true,
progress = VideoProgressType.VIDEO_PROGRESS,
progressPercent = 3u
)
//Check the result status
}
reportKeywordSearchEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
keywords Required | String |
Example
private suspend fun reportKeywordSearchEvent() {
var result = DYSdk.getInstance().events.reportKeywordSearchEvent(
"keyword-search-event",
keywords = "search"
)
//Check the result status
}
reportChangeAttributesEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
attributeType Required | String |
attributeValue Required | String |
Example
private suspend fun reportChangeAttributesEvent() {
var result = DYSdk.getInstance().events.reportChangeAttributesEvent(
"change-attribute-event",
attributeType = "price",
attributeValue = "5"
)
//Check the result status
}
reportFilterItemsEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
filterType Required | String |
filterStringValue | String? = null |
filterNumericValue Required | int?=null |
Example
private suspend fun reportFilterItemsEvent() {
var result = DYSdk.getInstance().events.reportFilterItemsEvent(
"filter-items-event",
filterType = "someType",
filterStringValue = "value"
)
//Check the result status
}
reportSortItemsEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
sortBy Required | String |
sortOrder Required | SortOrderType |
Example
private suspend fun reportSortItemsEvent() {
var result = DYSdk.getInstance().events.reportSortItemsEvent(
"sort-items-event",
sortBy = "price",
sortOrder = SortOrderType.ASC
)
//Check the result status
}
reportPromoCodeEnterEvent
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | String |
code Required | Float |
Example
private suspend fun reportSingleEvent() {
var result = DYSdk.getInstance().events.reportPromoCodeEnterEvent(
"promoCodeEvent",
code = "code-example"
)
when (result.status) {
ResultStatus.SUCCESS -> {
//Event reported successfully
}
ResultStatus.WARNINGS -> {
//Event reported successfully with warnings received from the server
result.warnings?.let { warnings ->
}
}
ResultStatus.ERROR -> {
//Failed
result.error?.let {
//Handle the error
}
}
}
}
Custom Events
Use custom events to report events that are not defined in the SDK but are significant to your business.
reportCustomEvents
Returns DYResult
Parameter | Data Structure |
---|---|
name Required | |
properties Required | CustomProperties |
Note:To create your own custom event, create a class that inherits from the CustomProperties class and use the
@Serializable
annotation (org.jetbrains.kotlinx:kotlinx-serialization-json). After that, register your new class. after doing do you can then report your custom event.
Example
@Serializable
class CustomEventProperties(val color: String, val size: Int):
CustomProperties(dyType = "CustomEventProperties-id")
//register your new class
DYSdk.getInstance().choose.encodingManager.addCustomPropertiesSerializer(CustomEventProperties::class, CustomEventProperties.serializer())
private suspend fun reportCustomEvent() {
var result = DYSdk.getInstance().events.reportCustomEvents(
"custom-event-name",
CustomEventProperties(color = "red", size = 38)
)
when (result.status) {
ResultStatus.SUCCESS -> {
//Event reported successfully
}
ResultStatus.WARNINGS -> {
//Event reported successfully with warnings received from the server
result.warnings?.let { warnings ->
}
}
ResultStatus.ERROR -> {
//Failed
result.error?.let {
//Handle the error
}
}
}
}
Reporting multiple events
reportEvents
Returns DYResult
Parameter | Data Structure |
---|---|
DYEvent Required |
Example
private suspend fun reportMultiEvent() {
var result = DYSdk.getInstance().events.reportEvents(
PredefinedEvent(
"promo-code-event",
PromoCodeEnterEventProperties(code = "code-example")
),
PredefinedEvent(
"keyword-search-event",
KeywordSearchEventProperties(keywords = "word-example")
)
)
}
Updated 5 days ago