Entitlements & products

Model your catalog: create the entitlements your app checks, the store products you sell, and the mappings between them. Do this in the dashboard, or over the API.

1. Create entitlements

In Dashboard → Entitlements → New entitlement, give each a key (the stable, code-facing identifier) and a display name. Keys can't change later, so pick short, lowercase ones: premium, pro, team.

2. Create products & map them

In Dashboard → Products → New product, add each store SKU with:

  • Store: app_store, play, stripe, web.
  • Store product id: exactly as registered in that store's console.
  • Type: subscription, non_consumable, or consumable.
  • Entitlements: one or more entitlement keys this product grants (the mapping).
Match store product ids exactly

The store_product_idmust be byte-for-byte identical to the identifier in App Store Connect / Play Console. A mismatch means a real purchase won't resolve to an entitlement (unknown_product).

Worked example

An app with a lifetime unlock and a monthly subscription, on both stores:

EntitlementProduct (store · id)Type
premiumplay · app_premium_lifetime
app_store · app_premium_lifetime
non_consumable
proplay · app_pro_monthly
app_store · app_pro_monthly
subscription

Both platforms' SKUs map to the same entitlement key, so your app checks premium / pro and never branches on platform.

Doing it over the API

Everything above is also available to your server, with a secret key: create entitlements and products, map them, retire them, and build paywall offerings. Each create is safe to re-run, so a setup script can run on every deploy.

bash
curl -X POST https://entitlehub.com/v1/products \
  -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
  -d '{"store":"play","store_product_id":"app_pro_monthly","type":"subscription",
       "duration":"P1M","price":9.99,"entitlements":["pro"]}'

Full reference: Catalog API.

Retiring a product

A product anyone has bought can't be deleted: its grants are purchase history. Archive it instead (Products → Archive, or the API). It leaves the catalog and every paywall, while existing subscribers keep access and their renewals keep working. You can change which entitlements a product grants at any time (Products → Edit); that applies to future purchases, never to access already granted.

With a catalog in place, grab your keys: API keys.