Skip to main content

Update Storefront Settings

Sparse-update the saved draft settings of a storefront (Creator page). Omitted keys are left unchanged. Unknown keys at any nesting level return 422.

external_analytics is not writable and is never returned. Stored analytics pixels are left untouched. privacy_easylegal is sparse-merged.

Clearable strings take "", not null — see Draft updates. privacy_easylegal.footer_id accepts a UUID, or null to clear. This response omits it. Read it on Get Storefront with include=footer_id — see Easylegal footer.

The response is the same shape as Get Storefront with include=settings. Visitors still see the last published page at public_url until Publish Storefront.

An empty body is a 200 with no change.

Request​

PATCH /storefronts/{id}/settings

Path Parameters​

ParameterTypeRequiredDescription
idstringYesStorefront UUID

Request Body​

All fields are optional. Only include the keys you want to change. Unknown keys are rejected.

ParameterTypeDescription
page_titlestringSEO page title (max 255), or "" to clear
page_descriptionstringSEO page description (max 10000), or "" to clear
page_languagestringauto, en, or pl
checkout_open_modestringdefault or popup
og_image_urlstringOpen Graph image URL, or "" to clear. Absolute http:// or https:// only.
favicon_urlstringFavicon URL, or "" to clear
webclip_urlstringApple webclip URL, or "" to clear
privacy_urlstringPrivacy-policy URL, or "" to clear
privacy_easylegalobjectSparse-merged Easylegal footer. See Privacy Easylegal.

external_analytics is not an allowed key. Sending it returns 422. Relative paths such as /images/og.png return 422. Host a new image with Upload Media, then PATCH the returned file_url.

Privacy Easylegal​

Sparse-merged. Omitted keys inside privacy_easylegal are left unchanged. Unknown keys (including policy_url) return 422.

footer_id accepts a UUID, or null to clear. Omit the key to leave the stored footer. An integer returns 422 and that patch is not saved. A UUID that is not a legal footer on your account returns 422, and nothing in the patch is saved. This response does not include footer_id. Get Storefront returns the UUID only when include=footer_id is set — see Easylegal footer.

ParameterTypeDescription
enabledbooleanWhether the Easylegal privacy footer is enabled
footer_idstring | nullLegal footer UUID. Omit to leave the stored value. null clears it. An integer returns 422. Omitted from this response.

Example Requests​

curl -X PATCH "https://cart.easy.tools/api/v1/storefronts/b10f5980-d653-4494-ad1c-6a9d68c96d19/settings" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"page_title": "My Studio",
"page_language": "en"
}'

Clear SEO title and description. The stored values are empty strings:

curl -X PATCH "https://cart.easy.tools/api/v1/storefronts/b10f5980-d653-4494-ad1c-6a9d68c96d19/settings" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"page_title": "",
"page_description": ""
}'

Response​

Success Response (200)​

Returns the storefront with the merged settings section, the same shape as include=settings. Analytics pixel configuration and privacy_easylegal.footer_id are not included. styles, header, and blocks are null. preview_url is a fresh signature of the saved draft.

{
"id": "b10f5980-d653-4494-ad1c-6a9d68c96d19",
"slug": "my-studio",
"name": "My Studio",
"status": "published",
"public_url": "https://mysite.com/",
"preview_url": "https://cart.easy.tools/storefront-preview/b10f5980-d653-4494-ad1c-6a9d68c96d19?expires=1788339527&signature=a02df227825d463d9ebf133f2087920af72122d905db8600860b5de23df0e3e0",
"domains": [
{
"domain": "mysite.com",
"status": "configured",
"include_www": true
}
],
"created_at": "2026-03-12T10:00:00+00:00",
"updated_at": "2026-09-02T09:58:47+00:00",
"published_at": "2026-04-01T09:00:00+00:00",
"styles": null,
"header": null,
"settings": {
"page_title": "My Studio",
"page_description": "Portraits, weddings, and photography workshops.",
"page_language": "en",
"checkout_open_mode": "default",
"og_image_url": "",
"favicon_url": "",
"webclip_url": "",
"privacy_url": "",
"privacy_easylegal": {
"enabled": false
}
},
"blocks": null
}

preview_url is a fresh signature on every write. See Draft preview.

Response Fields​

Identity, URLs, timestamps, and included sections are documented on the Storefront Object. Nested Domain lives there too.

Error Responses​

Bad Request (400)​

Returned when {id} is not a UUID.

{
"message": "Invalid storefront ID"
}

Not Found Error (404)​

Returned when the UUID does not exist, belongs to another store, or points at a deleted storefront.

{
"message": "Storefront not found"
}

Validation Error (422 Unprocessable Entity)​

Returned for an unknown key (including external_analytics), a URL that is not absolute HTTP(S) (or ""), a token outside the allowlist, an integer privacy_easylegal.footer_id, or a footer_id that is not a legal footer on your account. The patch is not saved.

{
"message": "The external_analytics field is not allowed.",
"errors": {
"external_analytics": [
"The external_analytics field is not allowed."
]
}
}

Unauthorized (401)​

{
"message": "Unauthenticated."
}

Forbidden (403)​

Returned when your API key has not been granted access to the requested store.

{
"message": "You do not have API access to the requested store."
}

Too Many Requests (429)​

Returned when you exceed the rate limit. The Retry-After response header gives the number of seconds to wait.

{
"message": "Too many requests. Please retry after 60 seconds."
}