Skip to main content

Overview

You still pick the product in App Store Connect and the Encore Dashboard exactly as in Add Subscription Product. What changes with Superwall is how Superwall learns about the purchase your EncorePurchaseController makes.

Add the product to Superwall first

Creating the product in App Store Connect is not enough. Superwall keeps its own product list, and the mapping from a product to an entitlement lives there rather than in the store.
1

Add the product

In the Superwall dashboard, select your app, open Products in the sidebar, and choose + Add Product. The form is manual, so copy the identifier from App Store Connect and fill in the fields yourself. Superwall does offer a store import, but it stays unavailable until you connect your store under Integrations, and for a single product the manual form is the shorter path.
2

Link it to an entitlement

Set the Entitlements field to the entitlement the product should unlock. Superwall states the requirement plainly: “Every subscription product must be linked to at least one entitlement.”The field is optional in the form even though the rule is not, so nothing stops you from saving a product without one.
Superwall derives access from entitlements, not from the transaction, and it describes the failure directly: a product with no entitlement “grants no access”, and “the purchase succeeds, but the user’s subscription status stays inactive.”So this does not surface as an error. The customer is charged, your dashboard shows a sale, and the feature stays locked.
Leaving Entitlements empty is correct for a consumable product, which is not meant to unlock ongoing access. Set Period to None (Lifetime / Consumable) and select no entitlement. A non-consumable product uses the same period but must be linked to the entitlement it unlocks.

Purchase with StoreKit 2, let Superwall observe

Superwall exposes no purchase API in observer mode, so register the StoreKit 2 controller from Presenting Offers and turn on observer mode at Superwall configure time. Your controller purchases through StoreKit 2, and Superwall picks the transaction up on its own:
No extra sync code is needed. Superwall detects the StoreKit transaction itself.
Detecting the transaction is not the same as granting the entitlement. Observer mode leaves Superwall in charge of subscriptionStatus, and it computes that value from the entitlements attached to the product. A product you never added to Superwall still needs the preceding setup.
Observer mode requires iOS 17.2 or later and disables Superwall.shared.purchase(). All purchases go through StoreKit directly.

Next