How Product Visibility, Price Visibility and Out-of-Stock Display Work on MLS
Learn how Inventory Manager controls which products and prices buyers see, how shop-wise SKU stock reaches the MLS website, and what happens when one or every variant sells out.
Inventory Manager and the My Local Shops website serve two very different audiences. The owner needs exact quantities, landed cost, suppliers, purchase history and stock movements. A buyer needs product photos, colours, sizes, selling-price information and a simple answer to one question: is this type currently available at this shop?
My Local Shops connects those two views without exposing the private inventory record. When stock, price, photos or visibility change in Inventory Manager, a separate buyer-safe product listing is updated for the website. The public shop page then shows only what the seller permits and only where current shop stock supports it.
This guide explains the complete behaviour of Publish on MLS, Show price to buyers, shop-wise stock, individual out-of-stock variants, fully sold-out designs, direct links and website caching.
The three decisions are separate
Product visibility, price visibility and stock availability answer different questions.
| Control or state | Question it answers |
|---|---|
| Publish on MLS | Does the owner want buyers to discover this item? |
| Show price to buyers | If the item is visible, should its selling price be public? |
| Shop-wise stock | Does this shop currently have at least one piece of this SKU? |
A product must satisfy both the seller's publishing decision and the website's availability rules before it appears in normal customer browsing.
The common combinations are:
| Publish on MLS | Show price | Stock at this shop | Customer result |
|---|---|---|---|
| On | On | Positive | Product and price appear |
| On | Off | Positive | Product appears as Price on request |
| Off | Either | Positive | Product is absent from normal public lists |
| On | Either | Zero for every SKU | Product is absent from normal public lists |
| On | Either | Some SKUs positive | Product remains visible; sold-out types are labelled |
This separation is useful for wholesale clothing and footwear. An owner may want to show a new design without publishing a fixed rate, hide an internal or reserved item even when it has stock, or let one sold-out size remain visible while other sizes can still be supplied.
Where the controls appear in Inventory Manager
When creating a product manually or receiving an item from Trade Manager, Inventory Manager asks whether the item should be listed on My Local Shops and whether its price should be shown.
The current controls are also available later from the product's item page under MY LOCAL SHOP:
- Publish on MLS;
- Show price to buyers; and
- the MLS product link when the item is published.
For a standalone product, the control applies to that one SKU because that SKU is the complete buyer-facing listing.
For a product with several colours or sizes, Publish on MLS applies to the whole grouped listing. Show price to buyers is also controlled for the whole item, not independently for every colour and size. Inventory Manager updates all types together so buyers do not see one variant with a public price and another variant of the same design with a hidden price by accident.
If older data contains mixed price-visibility values across variants, the item page explains that the types are mixed and allows the owner to set one consistent choice for all of them.
Publish on MLS: what switching it off means
When Publish on MLS is on, the listing becomes eligible for customer discovery. It still needs an active product state, a public shop and positive stock in that shop.
When it is off:
- the product stays in the owner's private inventory;
- quantities, cost and movement history remain unchanged;
- Order Manager and Staff Bill can continue using it according to their inventory permissions;
- it is removed from ordinary customer product lists; and
- the owner can publish it again later without rebuilding the item.
This is the right control for:
- stock reserved for a particular buyer;
- samples or internal-use items;
- a design with incomplete public information;
- an item whose photography is not ready;
- a product the seller does not want to advertise; or
- old stock the owner wants to retain operationally without promoting.
The listing-level switch is independent of the underlying SKU records. Turning it off does not mark every variant as draft and turning it back on does not resurrect deleted stock. It changes only whether the grouped item is publicly listed.
What happens to an old shared link
A buyer may still have a product URL in WhatsApp, a bookmark or an earlier message. My Local Shops does not expose the normal product page as if the item were still listed. The buyer sees that the product is not currently listed and can use the available shop contact option to ask whether it can still be supplied.
This is more useful than a broken link while still respecting the owner's decision to remove the item from discovery.
Show price to buyers: visible product, private rate
Wholesale prices are not always simple retail prices. The final rate may depend on:
- order quantity;
- the retailer relationship;
- payment terms;
- transport or delivery;
- a negotiated assortment; or
- current market conditions.
If Show price to buyers is on, the website displays the applicable public selling price. If a genuine discount price is lower than the base price, the card and detail view can show the effective price and discount information.
If the control is off, the product remains visible but the price area says Price on request. The detail page invites the buyer to contact the seller for price and availability. The WhatsApp message includes the product name and URL, so the owner knows which item the buyer is asking about.
Hiding a price does not remove the price from Inventory Manager or billing apps. It changes only the buyer-facing display.
Why the website does not read private product documents
The private products collection is the operational source of truth, with one document per SKU. It can contain exact shop quantities, landed cost, supplier and trade references, thresholds and other owner information.
Public pages do not read those documents. Firestore rules limit them to the owner, authorised staff and administrators.
Instead, the website reads product_listings, a buyer-safe projection containing one document per displayed item. A five-SKU shirt therefore produces one public listing card rather than five repeated cards.
The projection can include:
- product name and description;
- category and item code where available;
- public images and thumbnails;
- colour, size and system SKU identity;
- public selling-price fields;
- whether a type is in stock; and
- which public shop locations currently have it.
It deliberately does not include:
- exact stock quantity;
- landed or purchase cost;
- supplier identity;
- trade or consignment provenance; or
- private stock-movement details.
This separation improves both security and Firestore cost. The public website reads one compact grouped listing instead of fetching several private SKU documents and combining them in the browser.
How shop-wise availability is calculated
Inventory Manager tracks stock per SKU and per location. The public projection keeps two different location concepts:
- historical public shop association, which can support an old direct link and shop contact; and
- current positive-stock shop association, which controls normal catalogue browsing.
Only locations defined as a Shop are eligible for the public website. A warehouse is operational inventory, not a public storefront. Stock that exists only in a warehouse does not make the product appear on a shop page or nearby-products result.
For each SKU, the system determines which shop locations have quantity above zero. The grouped listing then calculates:
- which SKUs are in stock anywhere;
- which SKUs are in stock at each public shop; and
- whether at least one public shop has at least one available SKU.
Stock-changing workflows update this projection as part of the same protected operation used for inventory. This includes relevant sales, returns, restocks, transfers, adjustments and write-offs across Inventory Manager, Order Manager and Staff Bill.
Scenario 1: one SKU sells out, others remain
Suppose a shirt has four types at the Borivali shop:
| SKU type | Quantity |
|---|---|
| Red · M | 12 |
| Red · L | 0 |
| Blue · M | 8 |
| Blue · L | 5 |
The design remains on the shop page because three types still have positive stock.
On Product Detail:
- all configured colour and size choices remain understandable;
- Red · L is shown as Out of stock;
- the option is not removed or silently disabled;
- the buyer can still select it and understand which exact combination is unavailable; and
- available combinations continue to show their appropriate image and price when price visibility is on.
Keeping the sold-out option visible is deliberate. If a colour or size simply vanished, the buyer could assume the wholesaler never carried it. A clear label communicates the current position and still allows a useful WhatsApp conversation about future or similar stock.
Scenario 2: all SKUs sell out at one shop
Now suppose every type reaches zero at Borivali, but another shop still has Blue · M.
The result is location-specific:
- the product disappears from the Borivali shop's normal product grid;
- it remains visible on the other shop's page;
- the detail page opened from the other shop evaluates availability for that shop; and
- nearby discovery can still find the listing around the stocked public shop.
The system does not rely on the shop where the product was first created. Availability follows current stock, so transfers between two shops can move the public presence with the goods.
Scenario 3: every SKU is out of stock everywhere
When no public shop has any positive quantity, the listing becomes publicly out of stock.
It is removed from:
- the ordinary shop product grid;
- the general in-stock product feed; and
- nearby-products discovery.
This prevents old fashion designs from filling the customer catalogue. Clothing and footwear wholesalers often replace sold-out styles with new stock instead of restocking the same design. If historical products remained in normal browsing forever, buyers would see more unavailable items than sellable ones.
The product is not deleted. The owner can still find it in Inventory Manager by switching the catalogue stock filter to Out of stock or All. Its history remains available for operations, and a future restock can make it publicly eligible again.
An old direct product link can still open the buyer-safe detail view. It shows Currently out of stock, keeps the variant information understandable and retains Ask on WhatsApp so the buyer can ask about another colour, similar design or possible supply. It does not show the earlier long restock promise or imply that replenishment is guaranteed.
What appears on the shop page
A public shop page queries listings that currently contain that shop in their positive-stock location list. It loads 12 grouped products initially and offers Load more products for additional pages.
For a normal customer, the result is filtered again to require:
- active product status;
- a listing not hidden by the seller;
- current stock in that shop; and
- a completed or valid base-created product stage.
The card uses the thumbnail when available, shows the product name and category, presents the public price or Price on request, and links to the grouped product detail with the current shop in the URL context.
Passing the shop context matters. The same design may exist at two shops with different SKU availability. Product Detail uses the shop the buyer came from rather than a stale creation-time shop ID.
What appears in nearby discovery
Nearby Products uses the buyer-safe listing and current public-stock indicator together with geohash bounds. After retrieving candidates, it checks that:
- the related shop is public and active;
- the listing is not hidden;
- the listing is publicly in stock; and
- the shop falls within the requested distance.
Therefore stock stored only in a warehouse, a hidden product, an inactive shop or a fully sold-out listing should not appear as a normal nearby result.
Images: thumbnails for browsing, full image for zoom
Product cards and the normal Product Detail display prefer the smaller generated thumbnail. Images load lazily on product cards, which reduces initial page weight and mobile data use.
When a buyer deliberately opens the image zoom, the website prefers the corresponding full-resolution image. If a selected SKU has its own photo, that variant's thumbnail appears in the normal view and its full image is used for zoom. This prevents a buyer from selecting one colour and then seeing another colour's base photo in the enlarged view.
Product image URLs are versioned when an image changes and stored with long-lived caching metadata. A buyer's device can reuse an unchanged image without downloading it on every page visit. A new image URL ensures that an updated photo can be fetched instead of being trapped behind the old immutable cache.
How quickly a website change appears
The Firestore projection is updated during the operational write; it does not wait for a periodic cloud function. The website still uses short client-side caching to reduce Firebase reads and protect buyers' mobile data.
In production:
- shop product pages and product-detail Firestore data use the MEDIUM cache, up to 15 minutes for an ordinary customer;
- nearby product query pages use a longer cache, up to one hour; and
- the signed-in shop owner receives a forced fresh read for relevant shop and product views.
This means “connected” does not always mean that every customer's already-open browser changes in the same second. A new visit after cache expiry receives the updated listing. The owner can verify the current server state without waiting for the customer cache window.
The chosen balance saves Firestore reads while keeping ordinary wholesale catalogue changes reasonably current. Inventory operations remain immediately saved even while a customer's display cache is briefly reusing an earlier public result.
Subscription and shop status
A subscription-expired shop profile can remain public and indexed so its identity, address and contact information do not disappear from search. Its product catalogue is hidden from customers until the subscription is active again.
Other conditions such as deactivation or suspension also prevent normal product discovery. Owners may still see operational information needed to understand or resolve their shop status, but public users do not receive an active catalogue from an unavailable shop.
A practical owner checklist
When publishing a new item:
- add the common product details and every colour-size SKU;
- place stock in the correct shop, not only a warehouse;
- add clear SKU photos and confirm the representative listing image;
- switch Publish on MLS on when the item is ready;
- decide whether buyers should see the price or Price on request;
- open the MLS link from Inventory Manager to verify the item;
- select several variants and check their images, prices and stock labels; and
- use the shop page to confirm that the product appears at the correct location.
When a design sells out, no manual website cleanup is required. Continue recording sales, transfers, returns and stock corrections normally. The customer catalogue follows the buyer-safe availability projection while the complete historical product remains in Inventory Manager.
One inventory record, two appropriate views
The purpose of this architecture is not to copy the owner's database onto a website. It is to derive a controlled public view from operational truth.
The owner keeps exact stock, cost, supplier and movement information private. The buyer sees one clean product listing, the seller-approved price position, variant photos and shop-specific availability. Hidden products stay hidden, one sold-out type is clearly labelled, and fully sold-out designs stop crowding normal discovery.
That allows a wholesaler to maintain a useful digital shop through normal inventory work instead of managing a second catalogue by memory.
For the broader shop setup and inquiry journey, read Create a Real-Time Digital Wholesale Shop from Your Inventory. For the underlying product and SKU setup, read How to Create a Product with Colours, Sizes, SKUs, Images, HSN and GST.
