Docs
Inventory & Stock

Inventory & Stock

Track stock per variant, sync levels with Square or WooCommerce, and prevent overselling on releases.

OnCloudWine tracks inventory per variant. When a release is built, the system checks projected demand against current stock and warns you if the release would oversell.

Where stock is tracked

Stock lives on each variant of a product. There are three sources of truth depending on the variant's origin:

SourceSource of truth
LOCALStock is managed in OnCloudWine. Adjust manually or via stock-movement APIs.
SQUARESquare is the source of truth. OnCloudWine syncs current levels via SYNC_SQUARE_STOCK background job.
WOOCOMMERCEWooCommerce is the source of truth. OnCloudWine syncs via SYNC_WOOCOMMERCE_STOCK.

Viewing stock

Each product detail page shows a stock summary in the meta panel. The products list also has a Stock column for at-a-glance triage.

dashboard.oncloudwine.com

2022 Cabernet Sauvignon

Cabernet Sauvignon · Source: Square

Total stock
147 bottles across 2 variants
Reserved
64 bottles (Spring 2026 release, PENDING)
Available
83 bottles
Last sync
2 minutes ago (auto)

Stock states

For each variant:

StateDefinition
On handTotal physical inventory per the source system.
ReservedAllocated to a PENDING release that has not yet shipped.
AvailableOn hand minus reserved. The number new releases can draw from.
Out of stockAvailable is zero. Releases attempting to assign this variant get a warning.

Manual adjustments (LOCAL variants)

For local products you can adjust stock directly:

  1. Open the product detail page

    Click any product from the Products list.

  2. Find the variant

    The Variants tab lists each one with its current stock level.

  3. Click Adjust stock

    Enter the new quantity and a reason (audit count, breakage, returned, etc.).

  4. Save

    The adjustment is recorded in the activity log with the reason and the user who made it.

Syncing from Square

When Square is your source of truth, OnCloudWine pulls levels automatically on a schedule. To force an immediate sync:

  1. Settings → Integrations → Square

    Confirm the integration is active.

  2. Click Sync stock

    Triggers SYNC_SQUARE_STOCK immediately. Progress visible in Activity Logs.

  3. Confirm levels

    The variant rows update with the new on-hand counts when the job completes (typically under a minute).

Syncing from WooCommerce

Same pattern with SYNC_WOOCOMMERCE_STOCK. Configure the polling cadence under Settings → Integrations → WooCommerce. Most stores set it to every 5–15 minutes during release weeks and hourly otherwise.

Reservation timing

Stock is reserved when a release transitions to PENDING. It's released back to "available" when:

  • A fulfillment ships (the bottle has actually left)
  • A release is cancelled
  • A modification removes a product from a contact

This means the moment you promote a release, your Available drops by the release's projected demand — preventing a second release from double-allocating the same bottle.

Overselling warnings

If a release as-built would consume more stock than is available, the review step flags it:

Stock and the packing list

The Packing List shows the total quantity needed per variant — useful for warehouse pre-pull. If your stock is split across multiple Square locations, the location-mapping feature on the release lets you direct each fulfillment to the correct fulfillment site.

What's next?