Home / Help Center / pos-app-garment / garment / Wishlist
❤️ garment

Wishlist

Wishlist records what a customer wants but couldn't buy today — product, size, colour and any notes — against a Pending/Notified/Fulfilled/Cancelled status flow, so staff can follow up once the item is back in stock.

📍 Menu path: /garment/wishlist
👤 Who uses it: Owner,Manager,Staff

Overview

Each entry stores the customer (name and phone, with live search against Customers), a product (name, optional SKU, with a live search against Products), an optional Size and Colour, and free-text Notes.

A four-stage status flow tracks the request — PENDING (just saved), NOTIFIED (customer has been told it is available), FULFILLED (customer bought it) or CANCELLED — with one-click buttons to move an entry to the next relevant stage rather than a full edit form.

The list can be filtered by status via chip buttons and searched by customer or product name; each entry shows when it was added and, once notified, when that notification happened.

This screen is the ONE page in the garment sidebar gated on the "customers" feature rather than "billing" — the neighbouring Garment Overview, Tailoring Orders and Customer Measurements pages all require the billing feature instead.

Before You Start

Step-by-Step Guide

1 Add an item to a customer's wishlist

  1. Click + Add to Wishlist.
  2. Start typing in Customer Name * — pick a match from the dropdown (auto-fills Phone) or type a new name; fill in Phone if not auto-filled.
  3. Start typing in Product Name * — pick a match from the product search dropdown (auto-fills SKU / Code) or type a product name manually.
  4. Enter Size (e.g. M, 40, XL) and Colour (e.g. Navy Blue) if relevant, and add any Notes.
  5. Click Add to Wishlist.

2 Move a request through its lifecycle

  1. On a PENDING entry, click Notify once you have told the customer the item is available — this sets status to NOTIFIED and stamps the current time as notifiedAt.
  2. On a NOTIFIED entry, click Mark Fulfilled once the customer has actually bought the item.
  3. On either a PENDING or NOTIFIED entry, click Cancel if the customer no longer wants it.

3 Search, filter and remove entries

  1. Use the status chip row (ALL, PENDING, NOTIFIED, FULFILLED, CANCELLED) to narrow the list.
  2. Use the search box to filter by customer or product name.
  3. Click Delete on any entry and confirm to permanently remove it.

Every Field & Button, Explained

Field / ButtonWhat it does
+ Add to WishlistOpens the blank wishlist entry form.
Customer Name * / PhoneRequired name with live-search autocomplete against /customers; phone is optional.
Product Name * / SKU / CodeRequired product name with live-search autocomplete against /products (auto-fills SKU); SKU can also be typed manually.
Size / ColourOptional free-text size and colour the customer wants.
NotesFree-text notes on the request.
StatusPENDING, NOTIFIED, FULFILLED, or CANCELLED — shown as a coloured dot and badge on each entry.
Notify buttonShown only on PENDING entries; sets status to NOTIFIED and stamps notifiedAt with the current time.
Mark Fulfilled buttonShown only on NOTIFIED entries; sets status to FULFILLED.
Cancel buttonShown on PENDING or NOTIFIED entries; sets status to CANCELLED.
Delete buttonPermanently removes the entry after a confirmation prompt; available regardless of status.
Status chip filtersALL, PENDING, NOTIFIED, FULFILLED, CANCELLED.
Search boxFilters by customer name or product name.
"Added … · Notified …" lineShows when the entry was created and, once notified, when that status change happened.

Tips & Best Practices

Troubleshooting & FAQ

A customer's wanted item came back in stock — does this page tell me automatically?
No. This screen has no back-in-stock indicator of its own — you have to know the item restocked and manually click Notify. A separate "New Arrival Alerts" page (garm-new-arrival-alerts, gated on the customers feature like this one) calls a dedicated GET /garment/analytics/restocked-wishlist endpoint that cross-checks pending wishlist entries against current product stock and flags the ones that are now available — check that page if you want an automatic back-in-stock list instead of tracking it manually here.
I can't find this page in the sidebar even though other Garment pages are visible.
Wishlist is gated on the "customers" plan feature rather than "billing" like most of the Garment section — if your plan has billing enabled but customers disabled, this page (and New Arrival Alerts, Clienteling, VIP Tiers) will be hidden while Tailoring Orders and Measurements remain visible.
The product search dropdown isn't finding an item I know exists.
It searches by name against /products with a 10-result limit — try a shorter or different part of the name; you can also skip the dropdown and just type the product name and SKU manually since neither is validated against the product catalog on save.
Marking an entry Notified didn't send anything to the customer.
Notify is a manual status flag only — it does not trigger an SMS, WhatsApp message or any other notification. You are expected to contact the customer yourself first, then click Notify to record that it happened.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/pos-app-garment/src/pages/garment/WishlistPage.jsx

Backend endpoints used:

  • GET /garment/wishlist
  • POST /garment/wishlist
  • PUT /garment/wishlist/:id
  • DELETE /garment/wishlist/:id
  • GET /customers (typeahead)
  • GET /products (typeahead)

Related tables (db-core repositories):

  • GarmentWishlist

Redux slices:

  • None — local component state only

Feature flag key: customers

GET /garment/analytics/restocked-wishlist (ctrl.getRestockedWishlistItems, backed by getRestockedWishlistItems() in packages/pos-core/src/garment.js) is NOT called anywhere in WishlistPage.jsx — it is a separate, real endpoint that cross-references PENDING wishlist rows with a linked productId against current product.stock and returns only the ones now in stock, but it is consumed exclusively by a different screen, frontend-app/pos-app-garment/src/pages/garment/NewArrivalAlertPage.jsx (route /garment/new-arrival-alerts). So the endpoint is not dead code, but it is easy to assume (incorrectly) that this Wishlist page itself surfaces back-in-stock alerts — it does not; that logic lives entirely on the separate New Arrival Alerts page. The isRestocked check in that pos-core function only works for wishlist rows that were created with a productId (i.e. picked from the product search dropdown, not freehand-typed); a manually typed product name with no productId can never be detected as restocked.