Product Types
Navigate to yStore → Products → Product Types.
Product types in yStore are fully configurable — you create and manage them like any other setting. Each type controls what fields a product has, whether it supports variants, how SKUs are formatted, and how the product's URL is built per site. You are not limited to the built-in types.
Built-in system types
Five types are installed automatically and are protected — their handles cannot be changed and they cannot be deleted.
| Name | Handle | Dimensions | Variants | Description |
|---|---|---|---|---|
| Simple | simple | Yes | No | Physical product, single SKU, no options |
| Digital | digital | No | No | Downloadable or online product, no shipping |
| Gift Card | gift-card | Yes | No | Physical gift card — shipped + code emailed |
| Gift Card (Digital) | gift-card-digital | No | No | Email-only gift card, no shipping |
| Bundle | bundle | Yes | No | Curated set of other products sold together — fixed components plus optional customer-configurable options. Enterprise edition. |
System types can be edited (name, description, field layouts, SKU format, routing, tax group) but their handle is locked and they cannot be deleted or disabled.
The Simple type is the default — it is pre-selected when creating a new product unless you change the default type.
Creating a custom product type
- From the Control Panel
- By duplicating
- Go to
yStore → Products → Product Types. - Click New Product Type.
- Enter a Name — the handle is generated automatically (kebab-case).
- Optionally add a Description (internal, not shown to customers).
- Configure the type settings (see Settings below).
- Set up the Product Field Layout and Variant Field Layout tabs.
- Click Save.
To start from an existing type:
- In the product type list, select the type you want to copy.
- Click Duplicate from the action menu.
- A copy is created with a unique name (e.g.,
Simple Copy) and handle (e.g.,simple-copy). - Edit the duplicate and save with your settings.
Duplicating copies all settings including SKU format, field layouts, and routing — but isSystem is always false on duplicates, so you can freely delete or rename them.
Product type settings
| Setting | Description |
|---|---|
| Name | Display name shown in the "New Product" type selector and product list |
| Handle | Auto-generated kebab-case identifier — used in templates, Twig queries, and the API. Immutable on system types. |
| Description | Internal note about what this type is for |
| Active | When disabled, the type is hidden from the "New Product" selector — existing products are unaffected |
| Default | Pre-selects this type when creating a new product. Only one type can be the default. |
| Has Dimensions | Enables weight, length, width, height fields on products of this type. Disable for digital/virtual products. |
| Has Multiple Variants | Enables the variant matrix — products of this type can have multiple purchasable variants with individual SKUs, prices, and stock. See Variants below. |
| SKU Format | Template used to auto-generate the product SKU on save. Supports object template tokens. |
| Variant SKU Format | Template for auto-generating variant SKUs. Only applies when Has Multiple Variants is enabled. |
| Variant Title Format | Template for auto-generating variant display titles (e.g., {color} / {size}). |
| SKU Case | lowercase or uppercase — the generated SKU is converted to this case. |
| Allow Numbers in SKU | When off, numbers are stripped from auto-generated SKUs. |
| Tax Category Group | Default tax category group assigned to new products of this type. Can be overridden per product. |
Field layouts
Each product type has two independent field layouts, configured in their own tabs on the type edit page:
| Layout | Applies to | Purpose |
|---|---|---|
| Product Field Layout | The product itself | Custom Craft fields on the main product record — descriptions, metadata, images, custom attributes |
| Variant Field Layout | Each variant | Custom Craft fields on individual variants — per-variant custom data beyond SKU, price, stock |
Field layouts use the standard Craft field layout designer. Add any Craft field type — including yStore's own field types — by dragging fields into tabs.
Keep the product layout for data that applies to the whole product (e.g., brand, category, description). Use the variant layout for data that differs between purchasable options (e.g., colour swatch, material, warranty period).
Variants
Any product type can support multiple purchasable variants by enabling Has Multiple Variants. When enabled:
- Products of this type display a Variants tab in the editor
- Each variant has its own SKU, price, weight, and stock
- The variant matrix is built from the product's selected attributes and their values
- The storefront presents option selectors (dropdowns, swatches) that resolve to the matching variant
When Has Multiple Variants is disabled, each product has exactly one variant (one SKU, price, stock level) — this is what the built-in Simple and Digital types use.
See Configurable Products for the full workflow.
SKU format tokens
SKU formats use Craft's object template syntax — any property of the product or variant object is available as a token:
| Token | Resolves to |
|---|---|
{handle} | Product handle (slug) |
{id} | Product element ID |
{title} | Product title |
{sku} | Current SKU value (useful in variant format for inheriting the product SKU) |
Examples:
| Format | Result |
|---|---|
{handle}-{id} | blue-sneakers-412 |
PROD-{id} | PROD-412 |
{title|upper}-{id} | BLUE-SNEAKERS-412 |
Leave the format empty to let admins type the SKU manually. The format is only applied on new products/variants — editing an existing record does not regenerate the SKU.
Per-site routing
Each product type can define a URI format and template per site. This works identically to Craft entry type routing.
| Field | Example | Description |
|---|---|---|
| URI Format | shop/products/{slug} | URL pattern for product pages of this type. Supports any product property as a token. |
| Template | shop/product | Twig template path in your theme used to render the product page. |
Configure per-site routing in the Routing section of the type edit page. Each site listed in Settings → Sites gets its own row — useful for multi-language or multi-region stores where product URLs differ per locale.
If Craft is running in headless mode, routing is unused — products are served via the API. The routing section is hidden when headless mode is active.
Managing product types
Reordering
Drag types in the list to change their order. The order determines how types appear in the "New Product" type selector.
Enabling and disabling
Disable a type to hide it from the "New Product" selector without deleting it or affecting existing products of that type. Re-enable it at any time.
The five built-in system types (simple, digital, gift-card, gift-card-digital, bundle) cannot be disabled.
Deleting
Custom (non-system) types can be deleted from the type list. Before deleting, reassign or remove any products that use the type — deleting a type does not automatically delete its products, but those products will lose their type association.
Built-in type reference
Simple
Physical product — one SKU, one price, no options. The default type for most catalog items.
Variants (Configurable)
Any type with Has Multiple Variants enabled — attributes, variant matrix, per-variant SKU and stock.
Digital
Downloadable or online product — no dimensions, no shipping. Built-in handle: digital.
Gift Card
Generates a redeemable code and PDF voucher. Available in physical and digital variants.
Bundle
Curated set of other products sold together — fixed components plus optional customer-configurable choices.