pro, teams, maps_europe, or credits_pack.
Why entitlements matter
Without entitlements, app code tends to become product-ID logic:Attach products to entitlements
Every product that should unlock premium must be attached to the entitlement.
If the product is not attached, purchase can finish while access remains locked.
Dashboard creation checklist
When you create the first entitlement, keep it boring and stable:- Name it for humans, such as
Premium. - Set the app-facing key to
premium. - Attach every monthly, annual, lifetime, or winback product that should unlock that access.
- Do not encode store IDs, prices, or platform names into the entitlement key.
- Document what screens/features the entitlement unlocks so support and engineering use the same language.
CustomerInfo and what your app checks with hasActiveEntitlement("premium").
Check the entitlement
Status and access
The SDK helper
hasActiveEntitlement(...) is the normal path. Use raw status only when you are building support tooling or backend-specific policy.
Product-to-entitlement failure mode
The most common issue is this:- Offering loads.
- Package renders.
- Purchase succeeds.
premiumdoes not unlock.
premium. AppActor cannot unlock an entitlement that the catalog never mapped.