[**@wocart/storefront v3.1.0**](../../README)

***

[@wocart/storefront](../../README) / [index](../README) / StoreConfig

# Interface: StoreConfig

The storefront's view of the store, in one language — `config.get()`.
Every merchant text is in `locale`; a field holds exactly what a theme
reads, nothing the server keeps to itself.

## Properties

### cartEnabled

> **cartEnabled**: `boolean`

When true the storefront renders the cart alongside the direct order form.

***

### checkoutForm

> **checkoutForm**: [`CheckoutFormPolicy`](CheckoutFormPolicy)

***

### contact

> **contact**: [`StoreContact`](StoreContact)

How a shopper reaches the store, besides WhatsApp: each null until the merchant writes it.

***

### contentOverrides

> **contentOverrides**: `Record`\<`string`, `Record`\<`string`, `string`\>\>

The store's edits to this theme's text, one map per published language:
`{ ar: { heroTitle: "…" } }`. Sent only to a client created with `theme`.
A theme merges `contentOverrides[locale]` over its own pack for that
language — never another language's map.

***

### conversionEvent

> **conversionEvent**: `"Purchase"` \| `"Purchase_Confirmed"` \| `"Purchase_Delivered"` \| `"Lead"`

***

### currency

> **currency**: `string`

***

### currencySymbol

> **currencySymbol**: `string`

In `locale`: "دج" in Arabic reads "DA" in French.

***

### domain

> **domain**: `string`

***

### freeShippingThreshold

> **freeShippingThreshold**: `number`

Subtotal (DZD) at or above which delivery is free. null = no threshold.

***

### id

> **id**: `string`

***

### lang

> **lang**: `string`

The store's primary language: a BCP 47 code such as `ar`.

***

### locale

> **locale**: `string`

The language this config was served in: the client's `locale` when the
store publishes it, `lang` otherwise.

***

### locales

> **locales**: [`StorefrontLanguage`](StorefrontLanguage)[]

The published languages, primary first (always includes `lang`).

***

### logo

> **logo**: [`MediaImage`](MediaImage)

***

### media

> **media**: [`MediaDelivery`](MediaDelivery)

Where every image key is served from, and how it is resized: pass it to `mediaUrl`, `mediaImageUrl` and `pictureOf`.

***

### metaDescription

> **metaDescription**: `string`

***

### metaTitle

> **metaTitle**: `string`

***

### name

> **name**: `string`

***

### ogImage

> **ogImage**: [`MediaImage`](MediaImage)

The image links to the store show when shared.

***

### otpEnabled

> **otpEnabled**: `boolean`

***

### pages

> **pages**: [`StorePageLink`](StorePageLink)[]

Published pages that opt into the footer, titled in `locale`, ordered for
display. The checkout consent line resolves Terms/Refund from here by
`kind` — never a hardcoded slug, since a merchant may rename any page's
slug freely.

***

### pixelId

> **pixelId**: `string`

***

### reviewsEnabled

> **reviewsEnabled**: `boolean`

***

### themeSettings

> **themeSettings**: `Record`\<`string`, `unknown`\>

The merchant's values for this theme's settings, by setting key, exactly
as saved — `{}` when there are none or the client was created without
`theme`. Read them against the theme's declaration with
`resolveThemeSettings` from `@wocart/theme`: a value the theme no longer
accepts falls back to its default there.

***

### turnstileEnabled

> **turnstileEnabled**: `boolean`

Cloudflare Turnstile — true only when the store switched it on.

***

### turnstileSiteKey

> **turnstileSiteKey**: `string`

Public widget site key; null when Turnstile is off. The secret never leaves the server.

***

### whatsapp

> **whatsapp**: [`StoreWhatsAppWidget`](StoreWhatsAppWidget)

The WhatsApp button, or null when the store has none. Read it through `whatsAppContact`.
