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);
❗️

Quantity

Should always be a positive number.

Very large numbers (values over billion) will be truncated.


What’s Next

Learn how to integrate the Nefta Game Event tags: