> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encorekit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Add Subscription Product

> Connect your App Store Connect catalog and pick the subscription Encore offers.

## Overview

Now that you've set up placements, choose the subscription product Encore offers. When a user accepts a win-back offer, Encore triggers a real App Store subscription purchase using the product you select here. The App Store handles all entitlement state — no custom entitlement tracking code is needed in your app.

The fastest path is to **connect your App Store Connect catalog** so Encore auto-syncs your subscriptions and you pick one from a dropdown — no typing Product IDs by hand. This happens in the **Entitlements** step (labelled **Connect store**) of the Integration Progress tracker.

<Info>
  Connect your App Store Connect API key once, then pick your subscription from the auto-synced list. Manual Product ID entry is still available as a fallback if you don't connect a credential.
</Info>

***

## Connect Your App Store Connect Catalog (Recommended)

<Steps>
  <Step title="Upload your App Store Connect API key">
    In your app's **Entitlements** step, upload an App Store Connect API key (**Key ID**, **Issuer ID**, and **.p8** file). Encore verifies it with Apple, then pulls your subscription catalog.

    See [Connect Your Store Credentials](/publishers/connect-store-credentials#ios-app-store-connect-api-key) for the full walkthrough, including the **App Manager** role requirement and where to find each value.
  </Step>

  <Step title="Pick your subscription product">
    Once the catalog syncs, the **Subscription product** section shows a picker. Choose the product that gates entitlements — Encore reads its price and intro-offer details automatically, so there's nothing else to type.
  </Step>

  <Step title="Don't have a product yet? Let Encore create one">
    If you don't already have a suitable subscription, Encore can pre-fill a recommended annual product (priced from your existing catalog, with a free trial) and **create it in App Store Connect for you**. Review the auto-filled fields, confirm, and Encore writes the product as a draft — promote it to **ACTIVE** in App Store Connect when you're ready.
  </Step>
</Steps>

<Note>
  Newly created products land in your App Store Connect catalog as a **draft**. Review the auto-filled display name, price tier, and introductory offer, then promote to **ACTIVE** before users can purchase.
</Note>

***

## Manual Product ID Entry (Fallback)

If you haven't connected a store credential, you can still enter a Product ID by hand. Create the subscription yourself in App Store Connect, then enter its ID in the Encore Dashboard.

<Steps>
  <Step title="Create the subscription in App Store Connect">
    Go to [appstoreconnect.apple.com](https://appstoreconnect.apple.com) → **Your App → Subscriptions**.

    | Field                     | Value                                |
    | ------------------------- | ------------------------------------ |
    | **Product Type**          | Auto-renewable subscription          |
    | **Reference Name**        | Encore Annual 1 Month Trial          |
    | **Subscription Duration** | 1 Year                               |
    | **Introductory Offer**    | Free Trial, 1 Month                  |
    | **Product ID**            | `com.yourapp.encore.annual.1m.trial` |

    Create a subscription group if you don't have one, add the subscription, set its duration and availability, then add a **Free** introductory offer. Save and submit for review.

    <Tip>
      Subscriptions can be approved independently of app updates.
    </Tip>
  </Step>

  <Step title="Enter the Product ID in Encore">
    In your app's **Entitlements** step, type the **Product ID** (e.g. `com.yourapp.encore.annual.1m.trial`) into the fallback input and save.
  </Step>
</Steps>

### What the SDK does with this Product ID at runtime

You never hard-code the Product ID in your app — Encore delivers it to the SDK as **remote configuration**:

* The SDK fetches your app's config (including the configured subscription Product ID) on `configure()` and again on each `identify()`.
* That config is **disk-cached**, so it's available immediately on cold start; the SDK refreshes it in the background on the next launch. The very first launch (before the first fetch completes) is the only time the Product ID may be momentarily unavailable.
* When a user accepts an offer, the SDK uses the configured Product ID to start the App Store purchase — either via native StoreKit (no `onPurchaseRequest` handler set) or by passing it to your handler as `purchaseRequest.productId`.

Because it's remote config, changing the product in the Encore Dashboard takes effect without an app update.

***

## Next Steps

* [Configure Analytics](./configure-analytics) - Set up App Store Server Notifications to track subscription events
