Version: 2018.2
IAP Promo
IAP Promo Placements

IAP Promo integration


Important note: Your game must initialize Unity IAP before initializing Unity Ads for IAP Promo to work.

This integration guide covers four major steps:

Preparing your Project in the Unity Editor

Setting up Unity Services

To use IAP Promo, you need to:

  1. Configure your project for Unity Services.
  2. Enable the Unity IAP SDK (1.2+) and Unity Ads SDK (2.3+) in your Project.

Setting up Unity IAP

IAP Promo requires a supported version of the Unity IAP SDK (1.17+). To acquire the latest IAP SDK, either enable In-App Purchasing in the Services window (Window > Services), or import it from the Asset store. If you’re enabling it from the Services window, be sure to Import the Asset package when prompted.

Enabling Unity IAP in the Editor’s Services window
Enabling Unity IAP in the Editor’s Services window

See documentation on Setting up IAP for additional information.

Setting up Unity Ads

IAP Promo requires a supported version of the Unity Ads SDK. Unity recommends acquiring the latest Ads SDK (3.0+) by importing it from the Asset store.

See Setting up Ads for Unity for additional information.


With the required services set up, you can implement them in your game.

Implementing IAP

There are two options for initialization: codeless or scripting.

Using Codeless IAP

Codeless IAP handles initialization for you. If you use Codeless IAP initialization, you must call the Unity Ads initialization method elsewhere in your code.

To use Codeless IAP, populate a Product Catalog, then create an IAP Listener to fetch that catalog:

  1. In the Editor, select Window > UnityIAP > IAP Catalog to open the IAP Catalog window. This window lists all of your previously configured Products. You must have at least one Product configured in your Product Catalog. For a complete walkthrough on setting up Products, see Codeless IAP.

  2. In the IAP Catalog window, select App Store Export > Cloud JSON to export a local copy of the Product Catalog.
    Exporting an IAP Product Catalog to JSON

  3. Create an IAP Listener. Select Window > Unity IAP > Create IAP Listener, and add it to the first scene of your game. The listener fetches your Product Catalog as soon as the game boots. This avoids errors where the game requests Promotions but a Product isn’t ready because the codeless button hasn’t appeared in the scene yet.

Using scripting

If you do not use Codeless IAP, you must initialize Unity IAP manually through a script. See the following code example:

using UnityEngine;
using UnityEngine.Purchasing;

public class IAPManager : MonoBehaviour, IStoreListener {
  private IStoreController controller;
  //The following products must be added to the Product Catalog in the Editor:
  private const string coins100 = "";
  private const string coins500 = "";

  public int coin_count = 0;

  void Awake () { 
    StandardPurchasingModule module = StandardPurchasingModule.Instance (); 
    ProductCatalog catalog = ProductCatalog.LoadDefaultCatalog (); 
    ConfigurationBuilder builder = ConfigurationBuilder.Instance (module);
    IAPConfigurationHelper.PopulateConfigurationBuilder (ref builder, catalog); 
    UnityPurchasing.Initialize (this, builder); 

  public void OnInitialized (IStoreController controller, IExtensionProvider extensions) { 
    this.controller = controller; Debug.Log ("Initialization Successful"); 
  public void OnInitializeFailed(InitializationFailureReason error) { 
    Debug.Log ("UnityIAP.OnInitializeFailed (" + error + ")")
  public void OnPurchaseFailed (Product item, PurchaseFailureReason reason) { 
    Debug.Log("UnityIAP.OnPurchaseFailed (" + item + ", " + reason + ")"); 

  public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e) {
    string purchasedItem =;
    switch (purchasedItem) { 
      case coins100: Debug.Log ("IAPLog: Congratualtions you are richer!"); 
      coin_count += 100; 
      Debug.Log ("IAPLog: Coin count: " + coin_count); 
      case coins500: Debug.Log ("IAPLog: Congratualtions you are richer!"); 
      coin_count += 500; 
      Debug.Log ("IAPLog: Coin count: " + coin_count);
    return PurchaseProcessingResult.Complete;

  public void Buy(string productId) { 
    Debug.Log ("UnityIAP.BuyClicked (" + productId + ")");
    controller.InitiatePurchase (productId);

Implementing Unity Ads

You must also initialize Unity Ads, whether or not you use the Codeless or manual IAP initialization method. The following code sample illustrates an initialization method to invoke:

using UnityEngine;
using UnityEngine.Monetization;

public class AdManager : MonoBehaviour {

  public bool testMode = true;
  private const string adPlacement = "video";
  private const string promoPlacement = "promo";

    private string gameId = "0000000"; // Your iOS game ID here
    private string gameId = "9999999"; // Your Android game ID here
    private string gameId = "0123456"; // Prevents Editor Errors

  private void Awake () {
    if (Monetization.isSupported && !Monetization.isInitialized) {
      Monetization.Initialize (gameId, testMode); 

  public void ShowVideoAd () { 
    ShowAdPlacementContent ad = Monetization.GetPlacementContent (adPlacement) as ShowAdPlacementContent; ad.Show (); 

  public void ShowPromo () { 
    PromoAdPlacementContent promo = Monetization.GetPlacementContent (promoPlacement) as PromoAdPlacementContent; promo.Show (); 

Configuring Promotions on the Developer Dashboard

Navigate to the Monetization section of the Operate Dashboard to configure your IAP Promo offers:

  • Use Placements to control when and how your Promotions display in-game.
  • Use the Products interface to import your Product Catalog and manage each Product’s creative assets.
  • Define the parameters of your Promotions, such as when to run them, which Placements and Products they include, and which users they target.

Testing your integration

Call your IAP Promo content by implementing the following example code:

public void ShowPromo()
    Advertisement.Show (placementID);

Press Play in the Editor to check that a test ad appears when the Placement makes its request. To see real promotional creative assets, you must build the game to a device in production mode.

IAP Promo
IAP Promo Placements