Out of Stock Model
How product visibility and stock status work on the reservations site.
The reservations site uses a specific model for managing product availability that differs from standard WooCommerce behavior. Understanding this is critical — getting it wrong breaks SEO or confuses customers.
The Model
Off-season or unavailable items should be Published + Out of Stock, not Private or Draft.
| Status | Visibility | Searchable | SEO Indexed |
|---|---|---|---|
| Published + In Stock | Everywhere | Yes | Yes |
| Published + Out of Stock | Hidden from categories, visible via direct URL and search | Yes | Yes |
| Private | Admin only | No | No |
| Draft | Admin only | No | No |
Why This Matters
Setting items to Out of Stock instead of Private:
- Preserves SEO — search engines keep the page indexed
- Maintains URLs — no 404s if customers have bookmarked or shared the link
- Shows status — variants display "Out of Stock" in dropdowns
- Findable via search — customers can see the item exists even if not currently available
How It Works
- Category/department/attribute pages — OOS items are hidden (standard WooCommerce behavior)
- Direct URL — the product page loads, showing the OOS status
- Site search — OOS items appear in results
- Checkout — OOS items can't be added to cart
Common Mistake
MoC staff sometimes change items back to Private instead of using Out of Stock. This removes items from search engine indexes. When you spot this, change them back to Published + Out of Stock and explain the model.
This happened in January 2026 with 103 holiday products that had to be fixed.
Seasonal Inventory Manager
The custom seasonal inventory manager plugin automates availability transitions between seasons. Key feature:
- Lock capability — when an item's status is locked, the automated sweep skips it. This prevents the automation from overriding manual stock decisions.
Use the lock when MoC specifically wants an item's status to stay fixed regardless of seasonal automation.
Cache Behavior
After changing a product's stock status, allow ~5 minutes for the cache to propagate to category pages. Don't panic if changes don't appear immediately.
Check in an incognito window after the cache period to confirm.