Skip to content

Apply a saved theme to the draft

POST
/storefront/themes/{id}/apply
curl --request POST \
--url https://example.com/storefront/themes/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f/apply \
--header 'Content-Type: application/json' \
--cookie __Host-bottle.session_token=<__Host-bottle.session_token> \
--data '{ "base": "example" }'

Restores this business’s approved design. Requires the current draftVersion as base. Existing customers, products, commerce and legal settings are unchanged. Nothing is published.

id
required

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

Media typeapplication/json
object
base
required
string
/^[a-f0-9]{32}$/

Example generated

{
"base": "example"
}

Theme applied to the draft, not published

Media typeapplication/json
object
status
required
string
Allowed values: off draft live
draft
required
object
template

Yard and flame are built-in designs. custom uses an approved HTML/CSS/JavaScript bundle in a sandbox. ledger is a legacy placeholder rendered as yard.

string
default: yard
Allowed values: yard flame ledger custom
design
object
spacing
string
default: balanced
Allowed values: compact balanced relaxed
container
string
default: wide
Allowed values: narrow wide full
headingScale
string
default: balanced
Allowed values: compact balanced bold
productCards
string
default: outlined
Allowed values: plain outlined raised
codeTemplate
object
key
required
string
<= 300 characters /^[a-f0-9-]{36}\/theme-code\/[a-f0-9-]{36}\.json$/
pages
required
Array<string>
>= 1 items <= 4 items
Allowed values: home products category page
themeRevisionId

UUID v7

string format: uuid
theme
object
primary
string
default: #1F3A5F /^#[0-9a-fA-F]{6}$/
accent
string
default: #E4572E /^#[0-9a-fA-F]{6}$/
background
string
default: #FAF7F2 /^#[0-9a-fA-F]{6}$/
fontPair

Classic: Fraunces and Inter. modern: Bricolage Grotesque and Inter. friendly: Nunito throughout. editorial: Playfair Display and Source Sans 3.

string
default: classic
Allowed values: classic modern friendly editorial
radius
integer
default: 12 <= 28
logoKey
string | null
<= 300 characters
iconKey
string | null
<= 300 characters
content
object
headline
string
"" <= 160 characters
strapline
string
"" <= 160 characters
bannerVersion
number
default: 2
Allowed values: 2
banners
Array<object>
default: <= 8 items
object
id
required
string
<= 40 characters
design

Absent only on banners saved before each had its own design, which are read with one.

string
Allowed values: picture split band card
imageKey
required
string | null
<= 300 characters
imageAlt

Plain text, up to 160 characters. Empty when the picture only decorates.

string
""
heading
required

Plain text, up to 160 characters. Empty: the business’s name.

string
body
string
buttonLabel
string
buttonTarget
One of:
object
kind
required
string
Allowed values: page
page
required
string
Allowed values: products delivery about help contact
button2Label

Plain text, up to 160 characters. Absent or empty: no second button.

string
button2Target
One of:
object
kind
required
string
Allowed values: page
page
required
string
Allowed values: products delivery about help contact
colours
object
background
required

Behind the words. A colour like #1F3A5F.

string
/^#[0-9a-fA-F]{6}$/
text
required

The heading, the line under it and the business name.

string
/^#[0-9a-fA-F]{6}$/
button
required

The button. Its words are black or white, whichever reads.

string
/^#[0-9a-fA-F]{6}$/
from
string | null format: date
until
string | null format: date
hidden
boolean
showPhone

False hides the call button beside the main button. Absent or true: shown when the shop has a phone number.

boolean
words

All: heading and line. heading: the heading alone. none: just the picture, which must be the owner’s own and described. Absent: all.

string
Allowed values: all heading none
align

Where the words line up. Absent: the design’s own (centre for band, left for the rest).

string
Allowed values: left centre right
size

How big the heading is, the line under it following. Absent: medium.

string
Allowed values: small medium large
action

Buttons: its button and the call button. link: the whole banner is one link to buttonTarget, no buttons. none: no link, no buttons. Absent: buttons.

string
Allowed values: buttons link none
bannerDots

Where the dots sit when banners take turns. Absent: right.

string
Allowed values: bottom right top
bannerPause

False hides the pause button beside the dots. The banners still hold still while the pointer or keyboard is on them.

boolean
sections
Array<object>
default: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] <= 9 items
object
section
required
string
Allowed values: hero promises categories featured delivery reviews about faq contact
visible
required
boolean
homeSections

The home page: its sections in order. Absent: the shown parts of sections, in their order (see homeSectionsOf).

Array
<= 30 items
One of:
object
id
required

Stable within the page. Lower-case letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
width

How wide the section is on a wide screen, in parts of the page: full, threeQuarters, twoThirds, half, third or quarter. Absent: full. Each kind allows only some (see the help guide). Every section is full width on a phone.

string
Allowed values: full threeQuarters twoThirds half third quarter
type
required
string
Allowed values: banners
strip

The strip under the banner. Absent: the four lines every shop had.

object
items
required
Array<object>
<= 6 items
object
id
required
string
>= 1 characters <= 40 characters
kind
required
string
Allowed values: delivery swap collect phone own
visible
required
boolean
title
required

Plain text, up to 60 characters. Empty: the shop’s own words.

string
body
required

Plain text, up to 160 characters. Empty: the shop’s own line.

string
icon
required
string
Allowed values: truck swap pin phone clock mail check star flame tag
colours
object
background
required

Behind the strip. A colour like #1F3A5F.

string
/^#[0-9a-fA-F]{6}$/
text
required

The titles, lines and pictures.

string
/^#[0-9a-fA-F]{6}$/
homeProducts

The products part of the home page as it was before sections, and what a products section added again starts from. Absent: featured when any are picked, else all, four.

object
source
required
string
Allowed values: featured all category kind
category
string
<= 60 characters /^[\da-z]+(?:-[\da-z]+)*$/
kind
string
Allowed values: cylinder accessory appliance fuel consumable other
count
required
integer
>= 1 <= 12
sort
required

Featured: the home page’s featured products first, then the rest by price. price-low, price-high: by the price the shopper pays. name: A to Z. newest: added most recently first.

string
Allowed values: featured price-low price-high name newest
heading
required
string
seeAll
required
boolean
featuredProductIds
Array<string>
default: <= 12 items
about
string
"" <= 2000 characters
deliveryPromise
string
"" <= 160 characters
faq
Array<object>
default: <= 20 items
object
question
required
string
<= 160 characters
answer
required
string
<= 2000 characters
phone
string
"" <= 40 characters
email
Any of:
string format: email
address
string
"" <= 400 characters
openingHours
string
"" <= 400 characters
socials
object
facebook

An https address. Anything else is refused.

string format: uri
<= 500 characters
instagram

An https address. Anything else is refused.

string format: uri
<= 500 characters
x

An https address. Anything else is refused.

string format: uri
<= 500 characters
linkedin

An https address. Anything else is refused.

string format: uri
<= 500 characters
contactShown

Which details the home page contact part shows. A detail absent or true: shown when given.

object
phone
boolean
email
boolean
address
boolean
openingHours
boolean
socials
boolean
googlePlaceId
string
<= 200 characters
commerce
object
askForEmpties
boolean
default: true
collection
object
enabled
boolean
address
string
"" <= 400 characters
notes
string
"" <= 160 characters
tradeEnquiries
boolean
audience
string
default: everyone
Allowed values: everyone trade
offerPhoneOrders
boolean
default: true
ageCheck
boolean
whenLow
string
default: sell
Allowed values: sell sell_and_say
whenOut
string
default: stop
Allowed values: stop continue
termsUrl
string | null format: uri
<= 500 characters
seo
object
title
string
"" <= 160 characters
description
string
"" <= 300 characters
imageKey
string | null
<= 300 characters
listing
object
defaultSort

Featured: the home page’s featured products first, then the rest by price. price-low, price-high: by the price the shopper pays. name: A to Z. newest: added most recently first.

string
default: price-low
Allowed values: featured price-low price-high name newest
filters

Filters in the order shown, each on or off. A built-in one left out takes its default (price, in stock, gas type and size on; the rest off). A product detail left out is on.

Array<object>
default: <= 120 items
object
id
required

One of price, inStock, gasType, size, weight, brand, kind, category, charge, or detail: for a product detail.

string
on
required
boolean
menus

The shop’s named menus, and which one each place on the shop shows. Absent: the menus every shop has by default.

object
menus
required
Array<object>
<= 20 items
object
id
required

The menu’s own id, for the places. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
name
required
string
>= 1 characters <= 60 characters
items
required
Array<object>
<= 10 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
children
Array<object>
default: <= 20 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
places
required
object
header
required

The menu across the top of every page.

string | null
/^[a-z0-9-]{1,40}$/
footer
required

The menu at the foot: each link with links under it is a column, up to four.

string | null
/^[a-z0-9-]{1,40}$/
navigation

The menu across the top (and the phone menu, in the same order) and the columns of links at the foot. Absent: the menus every shop has by default.

object
header
required
Array<object>
<= 10 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
children
Array<object>
default: <= 20 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
footer
required
Array<object>
<= 4 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
heading
string
"" <= 40 characters
hidden
boolean
links
Array<object>
default: <= 15 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
tracking
object
googleAnalytics

Google Analytics 4 measurement ID, G- then letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|G-[A-Z0-9]{6,12})$/
googleTagManager

Google Tag Manager container ID, GTM- then letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|GTM-[A-Z0-9]{5,9})$/
googleAds

Google Ads conversion ID, AW- then digits. Empty: off.

string
"" <= 253 characters /^(?:|AW-[0-9]{6,12})$/
metaPixel

Meta (Facebook) Pixel ID, digits only. Empty: off.

string
"" <= 253 characters /^(?:|[0-9]{12,17})$/
clarity

Microsoft Clarity project ID, small letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|[a-z0-9]{8,12})$/
tiktok

TikTok Pixel ID, capital letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|[A-Z0-9]{18,22})$/
plausible

The domain the shop was added to Plausible as, such as northgategas.co.uk. Needs no consent. Empty: off.

string
"" <= 253 characters /^(?:|(?=.{4,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z][a-z0-9-]{0,61}[a-z0-9])$/
legal
object
terms
object
choice

Template: Bottle’s, filled in with the business’s details. written: html, the business’s own words. link: url, the business’s own page elsewhere. An empty html or url shows the template.

string
default: template
Allowed values: template written link
html
string
"" <= 200000 characters
url
string | null format: uri
<= 500 characters
privacy
object
choice

Template: Bottle’s, filled in with the business’s details. written: html, the business’s own words. link: url, the business’s own page elsewhere. An empty html or url shows the template.

string
default: template
Allowed values: template written link
html
string
"" <= 200000 characters
url
string | null format: uri
<= 500 characters
frame
object
topBar
object
shown

Whether the bar shows at all.

boolean
default: true
messages

Short lines such as “Order by noon for delivery the next working day”, up to three. A phone shows only the first.

Array<string>
default: <= 3 items
showPhone

Order by phone, with the shop’s phone number, at the right.

boolean
default: true
colours

From the theme. primary: the main colour. accent: the second colour. footer: the footer’s dark colour. plain: the page colour with a line under it.

string
default: primary
Allowed values: primary accent footer plain
header
object
showPhone

The phone number as a button, on wide screens and in the phone menu.

boolean
default: true
showAccount

Sign in, or the shopper’s name once signed in.

boolean
default: true
footer
object
about

A line or two under the business’s name. Empty: none.

string
"" <= 300 characters
showContact

Phone, email and address.

boolean
default: true
showSocials

Links to social media.

boolean
default: true
showPayments

A line saying shoppers pay securely by card.

boolean
default: true
showCompanyDetails

Company number and VAT number, after the business’s name.

boolean
default: true
legalLine

One more line at the very foot, such as “Registered in England and Wales.”

string
"" <= 200 characters
live
required
object
template

Yard and flame are built-in designs. custom uses an approved HTML/CSS/JavaScript bundle in a sandbox. ledger is a legacy placeholder rendered as yard.

string
default: yard
Allowed values: yard flame ledger custom
design
object
spacing
string
default: balanced
Allowed values: compact balanced relaxed
container
string
default: wide
Allowed values: narrow wide full
headingScale
string
default: balanced
Allowed values: compact balanced bold
productCards
string
default: outlined
Allowed values: plain outlined raised
codeTemplate
object
key
required
string
<= 300 characters /^[a-f0-9-]{36}\/theme-code\/[a-f0-9-]{36}\.json$/
pages
required
Array<string>
>= 1 items <= 4 items
Allowed values: home products category page
themeRevisionId

UUID v7

string format: uuid
theme
object
primary
string
default: #1F3A5F /^#[0-9a-fA-F]{6}$/
accent
string
default: #E4572E /^#[0-9a-fA-F]{6}$/
background
string
default: #FAF7F2 /^#[0-9a-fA-F]{6}$/
fontPair

Classic: Fraunces and Inter. modern: Bricolage Grotesque and Inter. friendly: Nunito throughout. editorial: Playfair Display and Source Sans 3.

string
default: classic
Allowed values: classic modern friendly editorial
radius
integer
default: 12 <= 28
logoKey
string | null
<= 300 characters
iconKey
string | null
<= 300 characters
content
object
headline
string
"" <= 160 characters
strapline
string
"" <= 160 characters
bannerVersion
number
default: 2
Allowed values: 2
banners
Array<object>
default: <= 8 items
object
id
required
string
<= 40 characters
design

Absent only on banners saved before each had its own design, which are read with one.

string
Allowed values: picture split band card
imageKey
required
string | null
<= 300 characters
imageAlt

Plain text, up to 160 characters. Empty when the picture only decorates.

string
""
heading
required

Plain text, up to 160 characters. Empty: the business’s name.

string
body
string
buttonLabel
string
buttonTarget
One of:
object
kind
required
string
Allowed values: page
page
required
string
Allowed values: products delivery about help contact
button2Label

Plain text, up to 160 characters. Absent or empty: no second button.

string
button2Target
One of:
object
kind
required
string
Allowed values: page
page
required
string
Allowed values: products delivery about help contact
colours
object
background
required

Behind the words. A colour like #1F3A5F.

string
/^#[0-9a-fA-F]{6}$/
text
required

The heading, the line under it and the business name.

string
/^#[0-9a-fA-F]{6}$/
button
required

The button. Its words are black or white, whichever reads.

string
/^#[0-9a-fA-F]{6}$/
from
string | null format: date
until
string | null format: date
hidden
boolean
showPhone

False hides the call button beside the main button. Absent or true: shown when the shop has a phone number.

boolean
words

All: heading and line. heading: the heading alone. none: just the picture, which must be the owner’s own and described. Absent: all.

string
Allowed values: all heading none
align

Where the words line up. Absent: the design’s own (centre for band, left for the rest).

string
Allowed values: left centre right
size

How big the heading is, the line under it following. Absent: medium.

string
Allowed values: small medium large
action

Buttons: its button and the call button. link: the whole banner is one link to buttonTarget, no buttons. none: no link, no buttons. Absent: buttons.

string
Allowed values: buttons link none
bannerDots

Where the dots sit when banners take turns. Absent: right.

string
Allowed values: bottom right top
bannerPause

False hides the pause button beside the dots. The banners still hold still while the pointer or keyboard is on them.

boolean
sections
Array<object>
default: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] <= 9 items
object
section
required
string
Allowed values: hero promises categories featured delivery reviews about faq contact
visible
required
boolean
homeSections

The home page: its sections in order. Absent: the shown parts of sections, in their order (see homeSectionsOf).

Array
<= 30 items
One of:
object
id
required

Stable within the page. Lower-case letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
width

How wide the section is on a wide screen, in parts of the page: full, threeQuarters, twoThirds, half, third or quarter. Absent: full. Each kind allows only some (see the help guide). Every section is full width on a phone.

string
Allowed values: full threeQuarters twoThirds half third quarter
type
required
string
Allowed values: banners
strip

The strip under the banner. Absent: the four lines every shop had.

object
items
required
Array<object>
<= 6 items
object
id
required
string
>= 1 characters <= 40 characters
kind
required
string
Allowed values: delivery swap collect phone own
visible
required
boolean
title
required

Plain text, up to 60 characters. Empty: the shop’s own words.

string
body
required

Plain text, up to 160 characters. Empty: the shop’s own line.

string
icon
required
string
Allowed values: truck swap pin phone clock mail check star flame tag
colours
object
background
required

Behind the strip. A colour like #1F3A5F.

string
/^#[0-9a-fA-F]{6}$/
text
required

The titles, lines and pictures.

string
/^#[0-9a-fA-F]{6}$/
homeProducts

The products part of the home page as it was before sections, and what a products section added again starts from. Absent: featured when any are picked, else all, four.

object
source
required
string
Allowed values: featured all category kind
category
string
<= 60 characters /^[\da-z]+(?:-[\da-z]+)*$/
kind
string
Allowed values: cylinder accessory appliance fuel consumable other
count
required
integer
>= 1 <= 12
sort
required

Featured: the home page’s featured products first, then the rest by price. price-low, price-high: by the price the shopper pays. name: A to Z. newest: added most recently first.

string
Allowed values: featured price-low price-high name newest
heading
required
string
seeAll
required
boolean
featuredProductIds
Array<string>
default: <= 12 items
about
string
"" <= 2000 characters
deliveryPromise
string
"" <= 160 characters
faq
Array<object>
default: <= 20 items
object
question
required
string
<= 160 characters
answer
required
string
<= 2000 characters
phone
string
"" <= 40 characters
email
Any of:
string format: email
address
string
"" <= 400 characters
openingHours
string
"" <= 400 characters
socials
object
facebook

An https address. Anything else is refused.

string format: uri
<= 500 characters
instagram

An https address. Anything else is refused.

string format: uri
<= 500 characters
x

An https address. Anything else is refused.

string format: uri
<= 500 characters
linkedin

An https address. Anything else is refused.

string format: uri
<= 500 characters
contactShown

Which details the home page contact part shows. A detail absent or true: shown when given.

object
phone
boolean
email
boolean
address
boolean
openingHours
boolean
socials
boolean
googlePlaceId
string
<= 200 characters
commerce
object
askForEmpties
boolean
default: true
collection
object
enabled
boolean
address
string
"" <= 400 characters
notes
string
"" <= 160 characters
tradeEnquiries
boolean
audience
string
default: everyone
Allowed values: everyone trade
offerPhoneOrders
boolean
default: true
ageCheck
boolean
whenLow
string
default: sell
Allowed values: sell sell_and_say
whenOut
string
default: stop
Allowed values: stop continue
termsUrl
string | null format: uri
<= 500 characters
seo
object
title
string
"" <= 160 characters
description
string
"" <= 300 characters
imageKey
string | null
<= 300 characters
listing
object
defaultSort

Featured: the home page’s featured products first, then the rest by price. price-low, price-high: by the price the shopper pays. name: A to Z. newest: added most recently first.

string
default: price-low
Allowed values: featured price-low price-high name newest
filters

Filters in the order shown, each on or off. A built-in one left out takes its default (price, in stock, gas type and size on; the rest off). A product detail left out is on.

Array<object>
default: <= 120 items
object
id
required

One of price, inStock, gasType, size, weight, brand, kind, category, charge, or detail: for a product detail.

string
on
required
boolean
menus

The shop’s named menus, and which one each place on the shop shows. Absent: the menus every shop has by default.

object
menus
required
Array<object>
<= 20 items
object
id
required

The menu’s own id, for the places. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
name
required
string
>= 1 characters <= 60 characters
items
required
Array<object>
<= 10 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
children
Array<object>
default: <= 20 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
places
required
object
header
required

The menu across the top of every page.

string | null
/^[a-z0-9-]{1,40}$/
footer
required

The menu at the foot: each link with links under it is a column, up to four.

string | null
/^[a-z0-9-]{1,40}$/
navigation

The menu across the top (and the phone menu, in the same order) and the columns of links at the foot. Absent: the menus every shop has by default.

object
header
required
Array<object>
<= 10 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
children
Array<object>
default: <= 20 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
footer
required
Array<object>
<= 4 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
heading
string
"" <= 40 characters
hidden
boolean
links
Array<object>
default: <= 15 items
object
id
required

Stable within the menu, for the editor. Letters, digits and dashes.

string
/^[a-z0-9-]{1,40}$/
label
string
"" <= 40 characters
target
required
One of:
object
kind
required
string
Allowed values: builtin
page
required
string
Allowed values: home products delivery about help contact terms privacy blog
hidden
boolean
tracking
object
googleAnalytics

Google Analytics 4 measurement ID, G- then letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|G-[A-Z0-9]{6,12})$/
googleTagManager

Google Tag Manager container ID, GTM- then letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|GTM-[A-Z0-9]{5,9})$/
googleAds

Google Ads conversion ID, AW- then digits. Empty: off.

string
"" <= 253 characters /^(?:|AW-[0-9]{6,12})$/
metaPixel

Meta (Facebook) Pixel ID, digits only. Empty: off.

string
"" <= 253 characters /^(?:|[0-9]{12,17})$/
clarity

Microsoft Clarity project ID, small letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|[a-z0-9]{8,12})$/
tiktok

TikTok Pixel ID, capital letters and digits. Empty: off.

string
"" <= 253 characters /^(?:|[A-Z0-9]{18,22})$/
plausible

The domain the shop was added to Plausible as, such as northgategas.co.uk. Needs no consent. Empty: off.

string
"" <= 253 characters /^(?:|(?=.{4,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z][a-z0-9-]{0,61}[a-z0-9])$/
legal
object
terms
object
choice

Template: Bottle’s, filled in with the business’s details. written: html, the business’s own words. link: url, the business’s own page elsewhere. An empty html or url shows the template.

string
default: template
Allowed values: template written link
html
string
"" <= 200000 characters
url
string | null format: uri
<= 500 characters
privacy
object
choice

Template: Bottle’s, filled in with the business’s details. written: html, the business’s own words. link: url, the business’s own page elsewhere. An empty html or url shows the template.

string
default: template
Allowed values: template written link
html
string
"" <= 200000 characters
url
string | null format: uri
<= 500 characters
frame
object
topBar
object
shown

Whether the bar shows at all.

boolean
default: true
messages

Short lines such as “Order by noon for delivery the next working day”, up to three. A phone shows only the first.

Array<string>
default: <= 3 items
showPhone

Order by phone, with the shop’s phone number, at the right.

boolean
default: true
colours

From the theme. primary: the main colour. accent: the second colour. footer: the footer’s dark colour. plain: the page colour with a line under it.

string
default: primary
Allowed values: primary accent footer plain
header
object
showPhone

The phone number as a button, on wide screens and in the phone menu.

boolean
default: true
showAccount

Sign in, or the shopper’s name once signed in.

boolean
default: true
footer
object
about

A line or two under the business’s name. Empty: none.

string
"" <= 300 characters
showContact

Phone, email and address.

boolean
default: true
showSocials

Links to social media.

boolean
default: true
showPayments

A line saying shoppers pay securely by card.

boolean
default: true
showCompanyDetails

Company number and VAT number, after the business’s name.

boolean
default: true
legalLine

One more line at the very foot, such as “Registered in England and Wales.”

string
"" <= 200 characters
publishedAt
required
string | null format: date-time
unpublishedChanges
required
boolean
domains
required
Array<object>
object
id
required

UUID v7

string format: uuid
host
required
string
kind
required
string
Allowed values: bottle custom
isPrimary
required
boolean
verifyToken
required
string
verifiedAt
required
string | null format: date-time
lastCheckedAt
required
string | null format: date-time
lastError
required
string | null
failingSince
required
string | null format: date-time
createdAt
required
string format: date-time
records
required
Array<object>
object
type
required
string
Allowed values: CNAME A TXT
name
required
string
value
required
string
url
required
string | null
assets
required
object
key
additional properties
object
alt
required
string | null
width
required
integer
height
required
integer
thumb
required
string
card
required
string
large
required
string
businessLogoKey
string | null
<= 300 characters
draftVersion
string

Example

{
"status": "off",
"draft": {
"template": "yard",
"design": {
"spacing": "compact",
"container": "narrow",
"headingScale": "compact",
"productCards": "plain"
},
"codeTemplate": {
"pages": [
"home"
]
},
"themeRevisionId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"theme": {
"primary": "#1F3A5F",
"accent": "#E4572E",
"background": "#FAF7F2",
"fontPair": "classic",
"radius": 12,
"logoKey": null,
"iconKey": null
},
"content": {
"headline": "",
"strapline": "",
"bannerVersion": 2,
"banners": [],
"sections": [
{
"section": "hero",
"visible": true
},
{
"section": "promises",
"visible": true
},
{
"section": "categories",
"visible": true
},
{
"section": "featured",
"visible": true
},
{
"section": "delivery",
"visible": true
},
{
"section": "reviews",
"visible": true
},
{
"section": "about",
"visible": true
},
{
"section": "faq",
"visible": true
},
{
"section": "contact",
"visible": true
}
],
"featuredProductIds": [],
"about": "",
"deliveryPromise": "",
"faq": [],
"phone": "",
"email": "",
"address": "",
"openingHours": "",
"socials": {}
},
"commerce": {
"askForEmpties": true,
"collection": {
"enabled": false,
"address": "",
"notes": ""
},
"tradeEnquiries": false,
"audience": "everyone",
"offerPhoneOrders": true,
"ageCheck": false,
"whenLow": "sell",
"whenOut": "stop",
"termsUrl": null
},
"seo": {
"title": "",
"description": "",
"imageKey": null
},
"listing": {
"defaultSort": "featured",
"filters": []
},
"menus": {
"menus": [
{
"items": [
{
"label": "",
"target": {
"kind": "builtin",
"page": "home"
},
"hidden": false,
"children": []
}
]
}
]
},
"navigation": {
"header": [
{
"label": "",
"target": {
"kind": "builtin",
"page": "home"
},
"hidden": false,
"children": []
}
],
"footer": [
{
"heading": "",
"hidden": false,
"links": []
}
]
},
"tracking": {
"googleAnalytics": "",
"googleTagManager": "",
"googleAds": "",
"metaPixel": "",
"clarity": "",
"tiktok": "",
"plausible": ""
},
"legal": {
"terms": {
"choice": "template",
"html": "",
"url": null
},
"privacy": {
"choice": "template",
"html": "",
"url": null
}
},
"frame": {
"topBar": {
"shown": true,
"messages": [],
"showPhone": true,
"colours": "primary"
},
"header": {
"showPhone": true,
"showAccount": true
},
"footer": {
"about": "",
"showContact": true,
"showSocials": true,
"showPayments": true,
"showCompanyDetails": true,
"legalLine": ""
}
}
},
"live": {
"template": "yard",
"design": {
"spacing": "compact",
"container": "narrow",
"headingScale": "compact",
"productCards": "plain"
},
"codeTemplate": {
"pages": [
"home"
]
},
"themeRevisionId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"theme": {
"primary": "#1F3A5F",
"accent": "#E4572E",
"background": "#FAF7F2",
"fontPair": "classic",
"radius": 12,
"logoKey": null,
"iconKey": null
},
"content": {
"headline": "",
"strapline": "",
"bannerVersion": 2,
"banners": [],
"sections": [
{
"section": "hero",
"visible": true
},
{
"section": "promises",
"visible": true
},
{
"section": "categories",
"visible": true
},
{
"section": "featured",
"visible": true
},
{
"section": "delivery",
"visible": true
},
{
"section": "reviews",
"visible": true
},
{
"section": "about",
"visible": true
},
{
"section": "faq",
"visible": true
},
{
"section": "contact",
"visible": true
}
],
"featuredProductIds": [],
"about": "",
"deliveryPromise": "",
"faq": [],
"phone": "",
"email": "",
"address": "",
"openingHours": "",
"socials": {}
},
"commerce": {
"askForEmpties": true,
"collection": {
"enabled": false,
"address": "",
"notes": ""
},
"tradeEnquiries": false,
"audience": "everyone",
"offerPhoneOrders": true,
"ageCheck": false,
"whenLow": "sell",
"whenOut": "stop",
"termsUrl": null
},
"seo": {
"title": "",
"description": "",
"imageKey": null
},
"listing": {
"defaultSort": "featured",
"filters": []
},
"menus": {
"menus": [
{
"items": [
{
"label": "",
"target": {
"kind": "builtin",
"page": "home"
},
"hidden": false,
"children": []
}
]
}
]
},
"navigation": {
"header": [
{
"label": "",
"target": {
"kind": "builtin",
"page": "home"
},
"hidden": false,
"children": []
}
],
"footer": [
{
"heading": "",
"hidden": false,
"links": []
}
]
},
"tracking": {
"googleAnalytics": "",
"googleTagManager": "",
"googleAds": "",
"metaPixel": "",
"clarity": "",
"tiktok": "",
"plausible": ""
},
"legal": {
"terms": {
"choice": "template",
"html": "",
"url": null
},
"privacy": {
"choice": "template",
"html": "",
"url": null
}
},
"frame": {
"topBar": {
"shown": true,
"messages": [],
"showPhone": true,
"colours": "primary"
},
"header": {
"showPhone": true,
"showAccount": true
},
"footer": {
"about": "",
"showContact": true,
"showSocials": true,
"showPayments": true,
"showCompanyDetails": true,
"legalLine": ""
}
}
},
"domains": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"host": "shop.northgategas.co.uk",
"kind": "bottle",
"records": [
{
"type": "CNAME"
}
]
}
]
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

The plan does not include a shop

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Without the permission this needs

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

No such theme for this business

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

The shop is off, or the draft changed since base

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Invalid theme, or the saved-theme allowance is full

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string

Example

{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}

Too many requests, or theme processing is busy

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}