Add-on marketplace
Add-ons are platform capabilities a store can turn on. Each add-on has a
feature_key; enabling one turns that capability on for your store, and where
no explicit setting exists resolution falls through to your plan tier’s
defaults.
Items on the self-serve allowlist are yours to flip immediately with your own credential. Everything else is operator/console-managed and is requested through a tracked activation request.
Self-serve enable/disable
A closed allowlist of features is merchant-flippable without operator
involvement. It currently covers: subscriptions, gift_cards,
store_credit, pricing_groups, subscribe_and_save, affiliates,
bulk_fulfillment, and funnel_gate.
POST /v1/merchant/entitlements/enable { "feature_key": "affiliates" }
POST /v1/merchant/entitlements/disable { "feature_key": "affiliates" }Both require scope write:own_store, resolve the tenant from the credential
(credential-carries-ownership), and are:
- Idempotent — enabling an already-on feature is an honest no-op
(
already_enabled: true), not a pretended fresh enable; disabling removes theallowrow so resolution falls back to tier defaults (already_disabled: true). - Audited either way it writes (
addon.self_serve_enabled/addon.self_serve_disabled). - Deny-respecting — an operator-set
denyis never merchant-removable, and enabling over it is a403 operator_restricted.
A feature_key that is not on the allowlist (unknown, or an add-on kept
operator-managed) returns 403 not_self_serve — the route for those is the
tracked activation request (POST /v1/merchant/entitlements/requests).
Pricing and billing
Some self-serve add-ons are priced (for example, Subscriptions lists at $49/mo). Enabling an add-on only turns the capability on — it never bills on its own. A paid add-on’s fee is charged through your store’s merchant-billing contract.