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

# Inventory

> Track stock levels, adjust counts, and monitor demand across your orders.

**Inventory** is how you track what you have on hand: stock counts on the products you sell, hire items lent out for events, and the demand each order places on your ingredients. This page covers the stock side. For setting up the catalogue itself, see [Products](/storefront/products) and [Ingredients](/events/ingredients).

Events includes hire items and event ingredient demand. Retail product stock control is included with Orders.

## Products vs ingredients

Digital Florists separates what you **sell** from what you **buy**:

* **Products** are what customers order (e.g., "Red Rose Hand-Tied"). Each product has one or more variants — a size, a colour, a tier. Stock is tracked per variant when you enable **Stock control** on it.
* **Ingredients** are what you buy from suppliers (e.g., "Red Naomi Rose stem", "Eucalyptus", "Cellophane"). Ingredients don't have a running stock count of their own; the exception is **hire items** (vases, urns, plinths), which carry a stock quantity that's checked against event dates — see [Hire items](#hire-items) below.

The two are linked by [Recipes](/events/recipes): when a product variant has a recipe, ingredient demand for that variant is calculated automatically — useful for working out what you need to buy from the wholesaler, even though there's no running count on the ingredient itself.

## Product stock

Stock is tracked at the **variant** level. Each variant on a product has its own stock count and its own **Stock control** toggle. Turn it on when you want Digital Florists to keep a running count for that variant.

When **Stock control** is enabled on a variant:

* Your dashboard shows a stock level on each variant and flags when it runs out.
* Stock is deducted when the variant is added to an order.
* Stock is returned to the variant when the order is cancelled or the item is swapped for a different product.

When **Stock control** is off, the variant always reads as available — Digital Florists doesn't track a count for it.

<Info>
  Stock control is set per variant on the product. See [Products → Stock control](/storefront/products#stock-control) for where to find the toggle.
</Info>

## Adjusting stock

<Info>
  **Requires the Settings (Admin) permission.** Admins have this by default; your administrator can adjust who has it in [Settings > Team](/settings/team).
</Info>

To adjust stock manually — taking in a delivery, correcting a count, writing off damaged items — go to **Settings** > **Products** and click **Add Stock**. The Stock Adjustment screen lets you:

* **Scan a barcode** to pull up the variant. Connect a barcode scanner to the workstation and scan straight into the page.
* **Type a barcode** manually if you don't have a scanner.
* Pick an **adjustment reason** from your configured list (Delivery, Correction, Damaged, and any others you've set up).
* Tick **Override** to set stock to an exact number. Leave it unticked to add or subtract from the current count.

Stock adjustments happen on the dashboard. The Digital Florists App doesn't have an adjustment screen, so keep the barcode scanner attached to a dashboard workstation if your team adjusts stock regularly.

<Tip>
  Set up your adjustment reasons in **Settings** > **General** > **Categories** > **Stock Adjustment Reasons**. Common reasons: Delivery Received, Stock Count Correction, Damaged, Returned.
</Tip>

## Substitutions

If you run out of a product, you can swap the line on a specific order for a different one — for example, replacing a "Red Naomi Rose Hand-Tied" with a "Grand Prix Rose Hand-Tied" on a single order.

To swap an item, open the order, hover the line in the items list, and click the **Substitute item** icon. You can browse replacements by category, filter by price range, and pick a variant. The customer price on the line stays the same.

When you substitute:

* Stock is returned to the original variant and deducted from the replacement.
* The ingredient breakdown for that line is refreshed to match the new variant.
* The change is recorded in the order's history.

## Hire items

Some things you lend out rather than use up: vases, urns, candelabras, plinths. These live with your ingredients but are marked as **hire items**, so their stock is tracked separately and checked against event dates.

For setting up and managing hire items, see [Hire Items](/events/hire-items).

## Stock and ingredient reports

Open **Analytics** > **Exports** > **Inventory** for downloadable spreadsheets covering stock and demand:

* **Stock** — current stock levels across your variants, with cost and retail prices. Useful for spot-checks and stocktakes.
* **Stock Movements** — every adjustment, sale, return, and override within a date range. Use this as your audit trail when a count doesn't look right.
* **Ingredient Summary** — a consolidated shopping list of how many of each ingredient you need across a date range, grouped by ingredient and colour.
* **Ingredient Breakdown** — a per-order worksheet listing the exact stems needed for each order in the range.

Ingredient Summary and Ingredient Breakdown only show when variant ingredient recipes are enabled for your shop.

## Common questions

<AccordionGroup>
  <Accordion title="Do I have to track stock for everything?">
    No. **Stock control** is optional and toggled per variant. Many shops only track their most expensive or limited items and let everyday sundries run on a visual check.
  </Accordion>

  <Accordion title="When does adding a product to an order reduce stock?">
    As soon as the line is added, if the variant has **Stock control** enabled. Cancelling the order returns the stock; swapping the line for a different variant returns the original and deducts the replacement.
  </Accordion>

  <Accordion title="Can I import ingredients from a spreadsheet?">
    Yes. See [Importing Data](/storefront/imports#importing-ingredients) for the template columns and the dry-run option.
  </Accordion>

  <Accordion title="My stock levels seem wrong">
    Export **Stock Movements** from **Analytics** > **Exports** > **Inventory** to see every change on a variant within a date range. Check for recent adjustments — an override sets stock to a fixed number, which can mask the running count. Also confirm the **Stock control** toggle is on for the variant; if it's off, sales won't deduct stock.
  </Accordion>
</AccordionGroup>

## What's next?

<Columns cols={2}>
  <Card title="Products" href="/storefront/products">
    Manage your product catalogue, variants, and pricing.
  </Card>

  <Card title="Ingredients" href="/events/ingredients">
    Add ingredients, set costs, and track price changes.
  </Card>

  <Card title="Recipes" href="/events/recipes">
    Build recipes so ingredient demand flows through to your reports.
  </Card>

  <Card title="Importing Data" href="/storefront/imports">
    Import products and ingredients in bulk from spreadsheets.
  </Card>
</Columns>
