# NewStorefrontInput

input type

Create-input for a Storefront. The tenant (org group) derives SERVER-SIDE from the principal; organizationId (the parent) is tenant-scoped server-side and must be ACTIVE; the config refs (selling LF / theme roster / collections / channel division / root category) gate record-aware at create AND re-validate at every publish.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — the domain when given ('storefront at <domain>'), else the theme ('<theme caption> storefront'); when supplied it must be non-blank. |
| `organizationId` | [ID](/types/#scalars) `ID!` | yes | The parent Organization (whose storefront this is) — tenant-scoped + ACTIVE. Immutable after birth. |
| `logicalFacilityId` | [ID](/types/#scalars) `ID!` | yes | The designated selling LF — tenant-scoped + ACTIVE. |
| `theme` | [String](/types/#scalars) `String!` | yes | A canned theme key — cannedStorefrontThemes lists the roster (an unknown key refuses NAMING it). |
| `customDomain` | [String](/types/#scalars) | no | The optional custom domain (the bare-hostname grammar) — validated for SHAPE here; the claim happens at publish. |
| `collectionIds` | [ID](/types/#scalars) `[ID!]` | no | The merchandised collections (0..24, distinct, each ACTIVE); omitted =. |
| `categoryId` | [ID](/types/#scalars) | no | The optional browse-tree root category (ACTIVE). |
| `divisionId` | [ID](/types/#scalars) | no | The optional CHANNEL-type division (ACTIVE + channel-kind — a different kind refuses). |

## Used by

- [createStorefront](/reference/storefront/createStorefront/)
