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, orconsumable. - Entitlements: one or more entitlement keys this product grants (the mapping).
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:
| Entitlement | Product (store · id) | Type |
|---|---|---|
premium | play · app_premium_lifetimeapp_store · app_premium_lifetime | non_consumable |
pro | play · app_pro_monthlyapp_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.
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.
