> ## 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.

# Google Play Subscription Product

> Connect your Google Play catalog and pick, or create, the subscription product Encore offers.

## Overview

When a user accepts an offer, Encore starts a real Google Play subscription purchase of the product you configure here, and Google Play owns entitlement state from then on. This page is the store-console half of that setup: connect your Google Play catalog so Encore can auto-sync your subscriptions (and their offers), then pick the product from a dropdown (or let Encore create one for you).

<Info>
  Connect your Google Play service account once, then pick your subscription from the auto-synced list. Manual Product ID entry remains available as a fallback if you don't connect a credential.
</Info>

***

## Connect your Google Play catalog (recommended)

Encore reads your Google Play catalog through a **service account** from the Play Developer API. You upload it in the **Entitlements** phase of the [Integration Progress](/quickstart#integration-progress) tracker (the step labelled **Connect store**).

<Steps>
  <Step title="Create a service account in Google Cloud Console">
    Service accounts are created in the **Google Cloud Console**, not in Play Console. Go to [Google Cloud Console → IAM & Admin → Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts), making sure you're in the Cloud project linked to your Play developer account.

    Click **Create service account** and give it a name. Once created, copy its email address; it looks like `name@project-id.iam.gserviceaccount.com`.
  </Step>

  <Step title="Download the JSON key file">
    Open the service account, go to the **Keys** tab, and choose **Add key → Create new key → JSON**. The **JSON** key file downloads automatically; store it securely.
  </Step>

  <Step title="Grant the three required permissions in Play Console">
    Now switch to **Play Console → Users and permissions → Invite new users**, and paste the service account email you copied. Grant it these three app-specific permissions **on this app**:

    * **View app information (read-only)**
    * **View financial data**
    * **Manage store presence**

    Encore uses these to read your existing catalog, verify your subscription configuration, and create new subscriptions on your behalf when you use the suggested-product flow.
  </Step>

  <Step title="Upload to Encore">
    In your app's **Entitlements** step, choose the service-account **JSON** file and click **Upload and verify**. Encore verifies the credential with Google, reads your catalog, and shows how many subscriptions and offers it found. You can re-run the sync anytime with **Sync now**.
  </Step>

  <Step title="Pick your subscription, base plan, and offer">
    Once the catalog syncs, the **Subscription product** section shows a picker. Work top-down: pick your subscription, then (if it has more than one base plan) the base plan, then the offer:

    1. **Subscription**: choose the product that gates entitlements.
    2. **Base plan**: a Google Play subscription can expose several base plans (e.g. monthly, annual, a seasonal 12-month plan) at different prices. The base plan you pick determines the **price and billing period** the user sees and is charged.
    3. **Offer**: within the chosen base plan, pick the **offer** (e.g. a free trial) users see at purchase. Choose **No offer** to charge the base plan immediately.

    <Note>
      The base-plan step only appears for Play subscriptions that expose more than one base plan; single-base-plan products skip straight to the offer. iOS has no base plans (each subscription is its own product), so this step doesn't apply there either.
    </Note>
  </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 Google Play Console for you**, base plan, price, and trial offer included. Review the fields and confirm, and Encore writes the subscription.
  </Step>
</Steps>

<Note>
  Newly created products land in your Play Console catalog as a draft. Review the auto-filled base plan, price, and trial offer, then activate both the base plan and the subscription; products in **Draft** state cannot be purchased.
</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 Google Play Console, then enter its details in the Encore Dashboard.

<Steps>
  <Step title="Create the subscription in Google Play Console">
    Go to [play.google.com/console](https://play.google.com/console) → your app → **Monetize → Subscriptions** → **Create subscription**.

    | Field            | Value                                        |
    | ---------------- | -------------------------------------------- |
    | **Product Type** | Subscription (auto-renewing)                 |
    | **Product ID**   | `{your.package.name}.encore.annual.1m.trial` |
    | **Base Plan**    | 1 Year, auto-renewing                        |
    | **Offer**        | Free Trial, 1 Month                          |

    Add a base plan with your billing period and pricing, add a **Free trial** offer, then **Activate** both the base plan and the subscription. Products in "Draft" state cannot be purchased.

    <Warning>
      The **Product ID** and **Base Plan ID** cannot be changed or reused after creation.
    </Warning>
  </Step>

  <Step title="Enter the details in Encore">
    In your app's **Entitlements** step, type the **Product ID** (e.g. `com.yourapp.encore.annual.1m.trial`) and, if you want a specific trial, the optional **Offer ID** (e.g. `intro-7d-trial`) into the fallback inputs and save.
  </Step>
</Steps>

***

## How Encore stores your credential

<Note>
  Uploaded credentials are **encrypted at rest**. The service-account JSON is held continuously (Real-Time Developer Notifications depend on it) and its scope is enforced server-side. You can **remove** the credential at any time from the same Entitlements step.
</Note>

***

## Next step

<Card title="Real-Time Developer Notifications" icon="bell" href="/publishers/android/platform-setup/server-notifications">
  Forward Google Play's subscription lifecycle events to Encore so your dashboard can measure offer impact.
</Card>
