First party data
Nefta collects first party data in order to deliver value to partners. Nefta's core deep learning models ingest this data to understand user value to provide personalised bid floor optimisation, improved ad revenue and ROAS campaign performance.
Automatic AdSDK data collection
The integrated Nefta SDK automatically collects certain data from partners. Device data, user sessions and ad engagement events are recorded automatically.
Manual AdSDK data collection
The integrated SDK provides an interface for partners to configure specific event tags throughout the game or app.
Nefta has four types of SDK events requiring partner integration.
- Purchase events: A specific event for In App Purchases (IAPs).
- Progression events: An event to track progression through the game.
- Receive events: An event where the player "gets" something to their account or inventory.
- Spend events: An event where something is spent from the account or inventory.
How many events should I integrate?
The more events you integrate, the better the predictions are. With better predictions we are able to better match users to ads, generating higher revenue for you. Nefta suggests 10-20 manually recorded events of the most frequent Purchase, Progression, Receive and Spend events.
Purchase event (IAP)
For tracking player in app purchases (IAPs):
// Iap name, Localized price of purchase, Currency
new PurchaseEvent("iap name", 2.99m, "USD").Record();
// Iap name, Localized price of purchase, Currency
NeftaPlugin._instance.Events.AddPurchaseEvent(name: "iap name", price: 3.99, currency: "USD")
// Iap name, Localized price of purchase, Currency
[NeftaPlugin._instance.Events AddPurchaseEventWithName: @"iap name"
price: [[NSDecimalNumber decimalNumberWithString:@"2.99"] decimalValue]
currency: @"USD"];
// Iap name, Localized price of purchase in micros, Currency
NeftaPlugin.Events.AddPurchaseEvent("iap name", 2990000, "USD");
Progression event
For tracking player progress through the application:
// Record tutorial start event progression event
new ProgressionEvent(Type.Unlock, Status.Start) {_name = "tutorial_start", _source = Source.CoreContent }.Record();
// Record tutorial complete progression event
new ProgressionEvent(Type.Unlock, Status.Complete) {_name = "tutorial_complete", _source = Source.CoreContent }.Record();
// Record level start progression event
new ProgressionEvent(Type.GameplayUnit, Status.Start) {_name = "level_start", _source = Source.CoreContent }.Record();
// Record level failed progression event
new ProgressionEvent(Type.GameplayUnit, Status.Fail) {_name = "level_failed", _source = Source.CoreContent }.Record();
// Record level completed progression event
new ProgressionEvent(Type.GameplayUnit, Status.Complete) {_name = "level_completed", _source = Source.CoreContent }.Record();
// Record achievement unlocked progression event
new ProgressionEvent(Type.Achievement, Status.Complete) {_name = "achievement_unlocked", _source = Source.CoreContent }.Record();
// Record tutorial start event progression event
NeftaPlugin._instance.Events.AddProgressionEvent(status: NeftaEvents.ProgressionStatus.Start,
type: NeftaEvents.ProgressionType.Unlock,
source: NeftaEvents.ProgressionSource.CoreContent
name: "tutorial_start", value: 0)
// Record tutorial complete progression event
NeftaPlugin._instance.Events.AddProgressionEvent(status: NeftaEvents.ProgressionStatus.Complete,
type: NeftaEvents.ProgressionType.Unlock,
source: NeftaEvents.ProgressionSource.CoreContent,
name: "tutorial_complete", value: 0)
// Record level start progression event
NeftaPlugin._instance.Events.AddProgressionEvent(status: NeftaEvents.ProgressionStatus.Start,
type: NeftaEvents.ProgressionType.GameplayUnit,
source: NeftaEvents.ProgressionSource.CoreContent,
name: "level_start", value: 12)
// Record level failed progression event
NeftaPlugin._instance.Events.AddProgressionEvent(status: NeftaEvents.ProgressionStatus.Fail,
type: NeftaEvents.ProgressionType.GameplayUnit,
source: NeftaEvents.ProgressionSource.CoreContent,
name: "level_failed", value: 12)
// Record level completed progression event
NeftaPlugin._instance.Events.AddProgressionEvent(status: NeftaEvents.ProgressionStatus.Complete,
type: NeftaEvents.ProgressionType.GameplayUnit,
source: NeftaEvents.ProgressionSource.CoreContent,
name: "level_completed", value: 12)
// Record achievement unlocked progression event
NeftaPlugin._instance.Events.AddProgressionEvent(status: NeftaEvents.ProgressionStatus.Complete,
type: NeftaEvents.ProgressionType.Achievement,
source: NeftaEvents.ProgressionSource.CoreContent,
name: "achievement_unlocked", value: 9)
// Record tutorial start event progression event
[NeftaPlugin._instance.Events AddProgressionEventWithStatus: ProgressionStatusStart
type: ProgressionTypeUnlock
source: ProgressionSourceCoreContent,
name: @"tutorial_start"
value: 0];
// Record tutorial complete progression event
[NeftaPlugin._instance.Events AddProgressionEventWithStatus: ProgressionStatusComplete
type: ProgressionTypeUnlock
source: ProgressionSourceCoreContent
name: @"tutorial_complete"
value: 0];
// Record level start progression event
[NeftaPlugin._instance.Events AddProgressionEventWithStatus: ProgressionStatusStart
type: ProgressionTypeGameplayUnit
source: ProgressionSourceCoreContent
name: @"level_start"
value: 12];
// Record level failed progression event
[NeftaPlugin._instance.Events AddProgressionEventWithStatus: ProgressionStatusFail
type: ProgressionTypeGameplayUnit
source: ProgressionSourceCoreContent
name: @"level_failed"
value: 12];
// Record level completed progression event
[NeftaPlugin._instance.Events AddProgressionEventWithStatus: ProgressionStatusComplete
type: ProgressionTypeGameplayUnit
source: ProgressionSourceCoreContent
name: @"level_completed"
value: 12];
// Record achievement unlocked progression event
[NeftaPlugin._instance.Events AddProgressionEventWithStatus: ProgressionStatusComplete
type: ProgressionTypeAchievement
source: ProgressionSourceCoreContent
name: @"achievement_unlocked"
value: 9];
// Record tutorial start event progression event
NeftaPlugin.Events.AddProgressionEvent(NeftaEvents.ProgressionStatus.Start,
NeftaEvents.ProgressionType.Unlock,
NeftaEvents.ProgressionSource.CoreContent,
"tutorial_start",
0);
// Record tutorial complete progression event
NeftaPlugin.Events.AddProgressionEvent(NeftaEvents.ProgressionStatus.Complete,
NeftaEvents.ProgressionType.Unlock,
NeftaEvents.ProgressionSource.CoreContent,
"tutorial_complete",
0);
// Record level start progression event
NeftaPlugin.Events.AddProgressionEvent(NeftaEvents.ProgressionStatus.Start,
NeftaEvents.ProgressionType.GameplayUnit,
NeftaEvents.ProgressionSource.CoreContent,
"level_start",
12);
// Record level failed progression event
NeftaPlugin.Events.AddProgressionEvent(NeftaEvents.ProgressionStatus.Fail,
NeftaEvents.ProgressionType.GameplayUnit,
NeftaEvents.ProgressionSource.CoreContent,
"level_failed",
12);
// Record level completed progression event
NeftaPlugin.Events.AddProgressionEvent(NeftaEvents.ProgressionStatus.Complete,
NeftaEvents.ProgressionType.GameplayUnit,
NeftaEvents.ProgressionSource.CoreContent,
"level_completed",
12);
// Record achievement unlocked progression event
NeftaPlugin.Events.AddProgressionEvent(NeftaEvents.ProgressionStatus.Complete,
NeftaEvents.ProgressionType.Achievement,
NeftaEvents.ProgressionSource.CoreContent,
"achievement_unlocked",
12);
Receive Event
Event for recording the player receiving any resource:
// Record receiving of coins event
new ReceiveEvent(ResourceCategory.SoftCurrency) { _name = "coins", _quantity = 5 }.Record();
// Record receiving of gems event
new ReceiveEvent(ResourceCategory.SoftCurrency) { _name = "gems", _quantity = 5 }.Record();
// Record receiving of daily gems event
new ReceiveEvent(ResourceCategory.SoftCurrency){ _name = "gems_daily_reward", _method = ReceiveMethod.Reward, _quantity = 5 }.Record();
// Record receiving of gems from watching a rewarded ad event
new ReceiveEvent(ResourceCategory.SoftCurrency){ _name = "rewarded_ad_watched", _method = ReceiveMethod.Reward, _quantity = 5 }.Record();
// Record receiving of coins event
NeftaPlugin._instance.Events.AddReceiveEvent(
category: NeftaEvents.ResourceCategory.SoftCurrency,
method: NeftaEvents.ReceiveMehotd.LevelEnd,
name: "coins",
quantity: 5)
// Record receiving of gems event
NeftaPlugin._instance.Events.AddReceiveEvent(
category: NeftaEvents.ResourceCategory.SoftCurrency,
method: NeftaEvents.ReceiveMehotd.Shop,
name: "gems",
quantity: 5)
// Record receiving of daily gems event
NeftaPlugin._instance.Events.AddReceiveEvent(
category: NeftaEvents.ResourceCategory.SoftCurrency,
method: NeftaEvents.ReceiveMethod.Reward,
name: "gems_daily_reward",
quantity: 5)
// Record receiving of gems from watching a rewarded ad event
NeftaPlugin._instance.Events.AddReceiveEvent(
category: NeftaEvents.ResourceCategory.SoftCurrency,
method: NeftaEvents.ReceiveMethod.Reward,
name: "rewarded_ad_watched",
quantity: 5)
// Record receiving of coins event
[NeftaPlugin._instance.Events AddReceiveEventWithCategory: ResourceCategorySoftCurrency
method: ReceiveMethodLevelEnd
name: @"coins"
quantity: 5];
// Record receiving of gems event
[NeftaPlugin._instance.Events AddReceiveEventWithCategory: ResourceCategorySoftCurrency
method: ReceiveMethodShop
name: @"gems"
quantity: 5];
// Record receiving of daily gems event
[NeftaPlugin._instance.Events AddReceiveEventWithCategory: ResourceCategorySoftCurrency
method: ReceiveMethodReward
name: @"gems_daily_reward"
quantity: 5];
// Record receiving of gems from watching a rewarded ad event
[NeftaPlugin._instance.Events AddReceiveEventWithCategory: ResourceCategorySoftCurrency
method: ReceiveMethodReward
name: @"rewarded_ad_watched"
quantity: 5];
// Record receiving of coins event
NeftaPlugin.Events.AddReceiveEvent(NeftaEvents.ResourceCategory.SoftCurrency,
NeftaEvents.ReceiveMethod.LevelEnd,
"coins",
5);
// Record receiving of gems event
NeftaPlugin.Events.AddReceiveEvent(NeftaEvents.ResourceCategory.SoftCurrency,
NeftaEvents.ReceiveMethod.Shop,
"gems",
5);
// Record receiving of daily gems event
NeftaPlugin.Events.AddReceiveEvent(NeftaEvents.ResourceCategory.SoftCurrency,
NeftaEvents.ReceiveMethod.Reward,
"gems_daily_reward",
5);
// Record receiving of gems from watching a rewarded ad event
NeftaPlugin.Events.AddReceiveEvent(NeftaEvents.ResourceCategory.SoftCurrency,
NeftaEvents.ReceiveMethod.Reward,
"rewarded_ad_watched",
5);
Spend event
Event for tracking player spending any resource:
// Record spending of coins event
new SpendEvent(ResourceCategory.SoftCurrency) { _name = "coins", _quantity = 10 }.Record();
// Record spending of gems event
new SpendEvent(ResourceCategory.SoftCurrency) { _name = "gems", _quantity = 10 }.Record();
// Record spending of coins event
NeftaPlugin._instance.Events.AddSpendEvent(
category: NeftaEvents.ResourceCategory.SoftCurrency,
method: NeftaEvents.SpendMethod.Other,
name: "coins",
quantity: 5)
// Record spending of gems event
NeftaPlugin._instance.Events.AddSpendEvent(
category: NeftaEvents.ResourceCategory.SoftCurrency,
method: NeftaEvents.SpendMethod.Shop,
name: "gems",
quantity: 10)
// Record spending of coins event
[NeftaPlugin._instance.Events AddSpendEventWithCategory: ResourceCategorySoftCurrency
method: SpendMethodOther
name: @"coins"
quantity: 5];
// Record spending of gems event
[NeftaPlugin._instance.Events AddSpendEventWithCategory: ResourceCategorySoftCurrency
method: SpendMethodShop
name: @"gems"
quantity: 10];
// Record spending of coins event
NeftaPlugin.Events.AddSpendEvent(NeftaEvents.ResourceCategory.SoftCurrency,
NeftaEvents.SpendMethod.Other,
"coins",
5);
// Record spending of gems event
NeftaPlugin.Events.AddSpendEvent(NeftaEvents.ResourceCategory.SoftCurrency,
NeftaEvents.SpendMethod.Shop,
"gems",
10);
QuantityShould always be a positive number.
Very large numbers (values over billion) will be truncated.
Updated about 12 hours ago