<!--
{
  "availability" : [
    "iOS: 16.4.0 -",
    "iPadOS: 16.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/Product/PromotionInfo",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit7ProductV13PromotionInfoV"
  },
  "title" : "Product.PromotionInfo"
}
-->

# Product.PromotionInfo

Information about a promoted In-App Purchase that customizes its order and visibility on the device.

```
struct PromotionInfo
```

## Overview

The `Product.PromotionInfo` structure represents promoted in-app purchases available in your app. You set up promoted in-app purchases using App Store Connect, including their default display order and visibility settings. Use this API to override and customize their order and visibility. Overrides are per device. They can take effect after the user launches the app at least once.

You don’t instantiate this structure. To get a list of `Product.PromotionInfo` objects, call the static method [`updateProductOrder(byID:)`](/documentation/StoreKit/Product/PromotionInfo/updateProductOrder(byID:)) with a list of product identifiers that represent your promoted in-app purchases. Then call [`currentOrder`](/documentation/StoreKit/Product/PromotionInfo/currentOrder) to get the list of `Product.PromotionInfo` objects. To change their order, call [`updateAll(_:)`](/documentation/StoreKit/Product/PromotionInfo/updateAll(_:)) with the promoted in-app purchases listed in the desired order. To change the order using product identifiers, call [`updateProductOrder(byID:)`](/documentation/StoreKit/Product/PromotionInfo/updateProductOrder(byID:)).

To prevent a promoted in-app purchase from appearing in the App Store on the device, there are two options:

- Hide the product by setting the [`visibility`](/documentation/StoreKit/Product/PromotionInfo/visibility-swift.property) value to [`Product.PromotionInfo.Visibility.hidden`](/documentation/StoreKit/Product/PromotionInfo/Visibility-swift.enum/hidden) and calling [`update()`](/documentation/StoreKit/Product/PromotionInfo/update()), or call [`updateProductVisibility(_:for:)`](/documentation/StoreKit/Product/PromotionInfo/updateProductVisibility(_:for:)).
- Remove the product from the list by excluding it when you call [`updateAll(_:)`](/documentation/StoreKit/Product/PromotionInfo/updateAll(_:)) or [`updateProductOrder(byID:)`](/documentation/StoreKit/Product/PromotionInfo/updateProductOrder(byID:)).

To cancel your overrides and return to the default order and visibility, call [`updateAll(_:)`](/documentation/StoreKit/Product/PromotionInfo/updateAll(_:)) or [`updateProductOrder(byID:)`](/documentation/StoreKit/Product/PromotionInfo/updateProductOrder(byID:)) with an empty array.

For more information about promoting in-app purchases, see [Supporting promoted In-App Purchases in your app](/documentation/StoreKit/supporting-promoted-in-app-purchases-in-your-app).

## Topics

### Getting the product ID

[`productID`](/documentation/StoreKit/Product/PromotionInfo/productID)

The product identifier of the promoted in-app purchase.

### Managing promotion order

[`updateProductOrder(byID:)`](/documentation/StoreKit/Product/PromotionInfo/updateProductOrder(byID:))

Sets the display order of promoted in-app purchases in the App Store, using product identifiers.

### Getting overridden order

[`currentOrder`](/documentation/StoreKit/Product/PromotionInfo/currentOrder)

Gets the customized order of the promotion info objects the represent promoted products.

### Managing promotion visibility

[`visibility`](/documentation/StoreKit/Product/PromotionInfo/visibility-swift.property)

A value that indicates whether the promoted in-app purchase is visible or hidden on the user’s device.

[`Visibility`](/documentation/StoreKit/Product/PromotionInfo/Visibility-swift.enum)

The visibility states for product promotion information.

[`updateProductVisibility(_:for:)`](/documentation/StoreKit/Product/PromotionInfo/updateProductVisibility(_:for:))

Updates a value that indicates whether a promoted in-app purchase appears in the App Store on the user’s device.

### Updating order and visibility

[`update()`](/documentation/StoreKit/Product/PromotionInfo/update())

Saves your changes to the promoted product’s visibility.

[`updateAll(_:)`](/documentation/StoreKit/Product/PromotionInfo/updateAll(_:))

Sets the order and visibility of all the promoted products and saves your changes.

## Relationships

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)