Each store has five policies: privacy, terms, refund, shipping, and cookie. Read and update a policy by its type. These endpoints do not create or delete policies. Reads require read_pages; writes require write_pages.
Updates preserve omitted fields. They can change content, publishing, SEO, and the URL slug. A source field with translations cannot be cleared until those translations are removed. The privacy and cookie policies used by an active consent banner must remain published with content.
Policy translations use the policy's UUID returned by a read. Translation reads require read_pages and read_translations; writes require write_pages and write_translations.
Endpoints#
Policy limits
Fetch Policy limits and per-field constraints.
Returns the per-field maximum lengths, enum values, and the fixed policy-type set that apply to Policy endpoints.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
List policies
List all policies for the store.
Returns the store's fixed set of Policies — one row per policy type. There is no pagination: Policies are a fixed singleton set. storefront_url is the canonical absolute URL on the store's primary domain. storefront_path is the domain-independent baseline route; join it to the storefront address you are targeting. Hosted storefront responses apply translated slugs and locale/country prefixes.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Get a policy
Fetch one policy by type.
Returns the Policy for the given type (privacy, terms, refund, shipping, or cookie). storefront_url is the canonical absolute URL on the store's primary domain. storefront_path is the domain-independent baseline route; join it to the storefront address you are targeting. Hosted storefront responses apply translated slugs and locale/country prefixes.
Path parameters
| Name | Type | Description |
|---|---|---|
type
required
|
string |
Policy type: privacy, terms, refund, shipping, or cookie. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400POLICY_TYPE_INVALIDType is not one of the fixed policy types.
-
404NOT_FOUNDThe policy row does not exist in this store.
Update a policy
Update one policy by type.
Updates provided fields on the existing fixed Policy row. Omitted fields are left unchanged. An empty slug resets to the default slug for the policy type. When slug changes, create_redirect controls whether the old policy URL redirects to the new one and defaults to true. storefront_url is the canonical absolute URL on the store's primary domain. storefront_path is the domain-independent baseline route; join it to the storefront address you are targeting. Hosted storefront responses apply translated slugs and locale/country prefixes.
Path parameters
| Name | Type | Description |
|---|---|---|
type
required
|
string |
Policy type: privacy, terms, refund, shipping, or cookie. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
title
|
string |
Policy title. When supplied, it must be non-empty after normalization. |
slug
|
string |
Optional slug. Omit to leave unchanged; send an empty string to reset to the default slug for the policy type. |
content
|
string |
Optional sanitized HTML content. |
seo_title
|
string |
Optional SEO title. |
seo_description
|
string |
Optional SEO description. |
status
|
string |
Policy status: draft or published. |
create_redirect
|
boolean |
When slug changes, create a redirect from the old policy URL to the new one. Defaults to true. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYThe request body is malformed or contains an unknown field.
-
400POLICY_TYPE_INVALIDType is not one of the fixed policy types.
-
400POLICY_TITLE_REQUIREDTitle is empty after normalization.
-
400POLICY_TITLE_TOO_LONGTitle exceeds the Policy contract max length.
-
400POLICY_SLUG_INVALID_FORMATSlug is not valid for Policy URLs.
-
400POLICY_SLUG_TOO_LONGSlug exceeds the Policy contract max length.
-
400POLICY_CONTENT_TOO_LONGContent exceeds the Policy contract max length.
-
400POLICY_SEO_TITLE_TOO_LONGSEO title exceeds the Policy contract max length.
-
400POLICY_SEO_DESCRIPTION_TOO_LONGSEO description exceeds the Policy contract max length.
-
400POLICY_STATUS_INVALIDStatus is not one of the allowed values.
-
409TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONSA source field cannot be cleared while it has translations in any locale.
-
409POLICY_SLUG_DUPLICATESlug already exists in this store's policies.
-
409POLICY_LOCKED_BY_CONSENT_BANNERThe active consent banner requires its privacy and cookie policies to remain published with content.
Fields#
Field |
Type |
Create |
Update |
Required |
Translatable |
|---|---|---|---|---|---|
|
string |
No |
No |
No |
|
|
string |
No |
Yes |
Yes |
|
|
string |
No |
Yes |
Yes |
|
|
string |
No |
Yes |
Yes |
|
|
string |
No |
Yes |
Yes |
|
|
string |
No |
Yes |
Yes |
|
|
string |
No |
Yes |
No |
|
|
boolean |
No |
Yes |
No |
|
|
string (RFC 3339) |
No |
No |
No |
|
|
string (RFC 3339) |
No |
No |
No |
|
|
url |
No |
No |
No |
No |
|
string |
No |
No |
No |
No |
Webhook events#
Subscribe to these events to keep your integration in sync with policies. Each event shows the required Store API scope and store permission, the available payload fields, and an example payload. Subscription setup is validated against those permissions; delivery is always restricted to the subscription's store.
Policy updated
Fired when a store policy is updated.
Payload fields
| Field | Type | Description |
|---|---|---|
policy.id |
string |
Always present |
policy.type |
string |
Selectable in the Payload builder |
policy.title |
string |
Selectable in the Payload builder |
policy.slug |
string |
Selectable in the Payload builder |
policy.content |
string |
Selectable in the Payload builder |
policy.status |
string |
Selectable in the Payload builder |
policy.seo_title |
string |
Selectable in the Payload builder |
policy.seo_description |
string |
Selectable in the Payload builder |
policy.created_at |
string |
Selectable in the Payload builder |
policy.updated_at |
string |
Selectable in the Payload builder |