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

***

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

# Interface: LandingPage

A published landing page — GET /store/landing-pages/{slug}.

The ordered image stack,
spacing, and the linked product in full store-product shape so the order
form works unmodified. Draft/archived/unknown slugs resolve to null —
the theme redirects to the store home, never a dead end.

## Properties

### document

> **document**: `object`

The page's own composition for the client's `theme` (its `lp:<id>`
document), or null when it has none or the client names no theme: the
theme then renders its `landing` default.

#### Index Signature

\[`key`: `string`\]: `unknown`

#### sections

> **sections**: `unknown`[]

#### surface

> **surface**: `string`

#### version

> **version**: `number`

***

### id

> **id**: `string`

***

### imageGap

> **imageGap**: `number`

Pixels between stacked images.

***

### images

> **images**: [`LandingPageImage`](LandingPageImage)[]

The image stack, ordered by position (1 = top).

***

### metaDescription

> **metaDescription**: `string`

***

### metaTitle

> **metaTitle**: `string`

***

### name

> **name**: `string`

***

### product

> **product**: `object`

Null when the product is no longer publicly visible.

#### category?

> `optional` **category?**: `object`

##### category.createdAt

> **createdAt**: `string`

##### category.description?

> `optional` **description?**: `string`

##### category.id

> **id**: `string`

##### category.image?

> `optional` **image?**: `object`

##### category.image.height?

> `optional` **height?**: `number`

##### category.image.key

> **key**: `string`

##### category.image.url

> **url**: `string`

##### category.image.width?

> `optional` **width?**: `number`

##### category.metaDescription?

> `optional` **metaDescription?**: `string`

##### category.metaKeywords?

> `optional` **metaKeywords?**: `string`

##### category.metaTitle?

> `optional` **metaTitle?**: `string`

##### category.name

> **name**: `string`

##### category.parentId?

> `optional` **parentId?**: `string`

##### category.position

> **position**: `number`

##### category.slug

> **slug**: `string`

##### category.updatedAt

> **updatedAt**: `string`

#### categoryId?

> `optional` **categoryId?**: `string`

#### compareAtPrice?

> `optional` **compareAtPrice?**: `number`

#### currency

> **currency**: `string`

#### description?

> `optional` **description?**: `string`

#### descriptionFormat

> **descriptionFormat**: `"html"` \| `"text"`

#### descriptionPlain?

> `optional` **descriptionPlain?**: `string`

#### handle

> **handle**: `string`

#### hasVariants

> **hasVariants**: `boolean`

#### id

> **id**: `string`

#### images

> **images**: `object`[]

#### inventory

> **inventory**: `number`

#### lowStockThreshold

> **lowStockThreshold**: `number`

#### metaDescription?

> `optional` **metaDescription?**: `string`

#### metaTitle?

> `optional` **metaTitle?**: `string`

#### name

> **name**: `string`

#### offers

> **offers**: `object`[]

#### price

> **price**: `number`

#### quantityPricing?

> `optional` **quantityPricing?**: `object`

##### quantityPricing.name

> **name**: `string`

##### quantityPricing.offerId

> **offerId**: `string`

##### quantityPricing.tiers

> **tiers**: `object`[]

##### quantityPricing.triggerVariantId?

> `optional` **triggerVariantId?**: `string`

#### reviewStats?

> `optional` **reviewStats?**: `object`

##### reviewStats.avgRating

> **avgRating**: `number`

##### reviewStats.reviewCount

> **reviewCount**: `number`

#### sku?

> `optional` **sku?**: `string`

#### tags

> **tags**: `string`[]

#### trackInventory

> **trackInventory**: `boolean`

#### type

> **type**: `"DIGITAL"` \| `"PHYSICAL"`

#### variantOptions?

> `optional` **variantOptions?**: `object`[]

#### variants

> **variants**: `object`[]

***

### publishedAt

> **publishedAt**: `string`

***

### slug

> **slug**: `string`

***

### status

> **status**: `"draft"` \| `"published"` \| `"archived"`

***

### tracking

> **tracking**: `object`

Which Meta pixel THIS page loads and fires at, already resolved
server-side — the browser never works this out for itself, so it cannot
disagree with the Conversions API mirror.

#### conversionEvent

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

#### pixelId

> **pixelId**: `string`
