> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fanfare.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Products

> Managing your product catalog for experiences

**Products** are the items consumers can purchase through your experiences. Fanfare supports products with variants, inventory policy, and images - everything you need for launches and sales.

## Product Basics

Each product includes:

* **Name** — What consumers see
* **Description** — Product details
* **Variant prices** — Prices on the sellable units consumers can buy
* **URL** — Link to the product page on your store
* **Images** — Product photos

## Product Variants

Variants represent different options like size and color:

```
Product: "Classic Sneaker"
├── Variant: White / Size 9  - "129.99"
├── Variant: White / Size 10 - "129.99"
├── Variant: Black / Size 9  - "129.99"
└── Variant: Black / Size 10 - variant price override
```

### Variant Properties

| Property             | Description                                        |
| -------------------- | -------------------------------------------------- |
| **SKU**              | Required identifier for the sellable unit          |
| **Price**            | Decimal string such as `"139.99"`                  |
| **Inventory policy** | Whether Fanfare treats quantity as limited or open |
| **Inventory**        | Stock count used when inventory is limited         |
| **Options**          | Size, color, or other attributes                   |

### Variant Pricing

Variants are the sellable units, so their prices are the values to keep synced with checkout. In API and event payloads, monetary values are decimal strings, not JSON numbers:

* **Premium variant:** `"139.99"` (rare color)
* **Standard variants:** `"129.99"`

## Inventory Tracking

You can choose how inventory behaves for each variant:

### Limited Inventory

Use a limited inventory policy when a variant should sell out:

* Stock count decreases with each purchase
* Consumers see "sold out" when quantity reaches zero
* Helps prevent overselling

### Open Inventory

Use an open inventory policy when quantity should not block purchase:

* Always shows as available
* Useful for digital products, made-to-order items, or backorders
* Can continue accepting purchases even after a stored quantity reaches zero

## Product Images

Add images to showcase your products:

* **Primary image** — Main product photo (shown in listings)
* **Gallery images** — Additional photos (shown on detail pages)
* **Variant images** — Specific to each variant (e.g., color photos)

Images display in the order you set, with the primary image first.

## Products in Experiences

Connect products to experiences to make them available:

### Single Product Experiences

Most common — one product per experience:

```
Experience: "Limited Edition Sneaker Drop"
└── Product: Air Max Limited
```

### Multiple Product Experiences

Offer several products in one experience:

```
Experience: "Summer Collection Launch"
├── Product: Summer Tee (Primary)
├── Product: Beach Shorts
└── Product: Sun Hat
```

### Variant-Specific Experiences

Link to a specific variant for exclusive launches:

```
Experience: "Exclusive Red Edition"
└── Product: Classic Sneaker
    └── Variant: Red / Size 10 only
```

## Product Selection Modes

Control how products are selected:

| Mode                  | Description                                      | Best For      |
| --------------------- | ------------------------------------------------ | ------------- |
| **Consumer-selected** | Consumers pick their product and variant         | Most launches |
| **System-assigned**   | Fanfare assigns from the configured product pool | Mystery boxes |

For system-assigned products, allocation weights control the relative probability that each product is assigned. These weights apply to product assignment only; draw winner selection methods decide which consumers are selected.

## Syncing Products

Import products from your existing store:

### Supported Platforms

| Platform       | Sync Type    | What Syncs                            |
| -------------- | ------------ | ------------------------------------- |
| **Shopify**    | Automatic    | Products, variants, inventory, images |
| **CSV Import** | Manual       | Product data you provide              |
| **API**        | Programmatic | Full control via API                  |

### How Sync Works

<img src="https://mintcdn.com/fanfare/9lBxxAA0GJkGRgw-/images/concepts/product-sync-flow.webp?fit=max&auto=format&n=9lBxxAA0GJkGRgw-&q=85&s=cdd23d2319619a0c38270b1f73cc179a" alt="Product sync flow showing store product updates syncing to Fanfare and inventory webhooks keeping the experience current." width="1774" height="887" data-path="images/concepts/product-sync-flow.webp" />

### Keeping Inventory Synced

For tracked inventory:

* **Webhooks** — Real-time updates when stock changes
* **Periodic sync** — Regular checks for changes
* **Manual sync** — Trigger a sync when needed

## Pricing Best Practices

### Use Decimal Strings

When sending prices through APIs, SDK actions, events, or webhooks, use decimal strings:

* **Example:** `"129.99"` for USD 129.99
* **Example:** `"129"` for zero-decimal currencies such as JPY
* Include the currency code wherever the endpoint asks for one
* Do not send cents or provider-specific minor units unless an endpoint explicitly asks for them

### Consider Variant Pricing

* Use the same price string on variants that share a price
* Use different variant prices for premium variants
* Keep pricing consistent across your store

## Managing Products

### Create Products Manually

Add products directly in Fanfare:

1. Enter product details (name, description, URL)
2. Add at least one variant with SKU, price, inventory policy, and quantity
3. Upload images
4. Link to experiences

### Import from Your Store

Sync products from your e-commerce platform:

1. Connect your store
2. Select products to import
3. Products stay synced automatically

### Update Products

Changes sync automatically when connected to your store. Manual updates are reflected immediately.

## Best Practices

### SKU Strategy

Use consistent, meaningful SKUs:

```
PRODUCT-COLOR-SIZE
SNKR-RED-10
TSHIRT-BLU-M
```

This makes inventory management easier.

### Inventory Accuracy

* Sync inventory frequently
* Set up webhooks for real-time updates
* Build in safety stock for high-demand launches

### Image Quality

* Use high-resolution images
* Show multiple angles
* Include variant-specific images for colors

### Keep Prices Synced

Ensure prices in Fanfare match your checkout:

* Sync regularly
* Test the full purchase flow
* Check variant-specific pricing

## Next Steps

* [Experiences](/concepts/experiences) — Connect products to experiences
* [Distribution Types](/concepts/distributions/overview) — How consumers access products
* [Dashboard: Experiences](/dashboard/experiences/overview) — Manage products within experiences
