Store Builder

Save for later

The heart button, the saved-products page, two automatic emails when stock or price changes, and the panel that tells you what shoppers are waiting for.

A shopper taps a heart on a product and it stays there — not to buy now, but to think about. Your shop gets two things out of that: a genuine reason to email somebody, and a list that tells you what to reorder.

Not a cart, and that difference is the whole design

A cart is a session: it has quantities, it gets checked out, and it is empty again by tomorrow. A saved list is a long-lived collection — saved once, looked at months later. Every decision below falls out of that one sentence:

  • No quantities. An item is saved or it is not.
  • The date it was saved does not move. A shopper who hearts a sixth product today does not find the other five all dated today.
  • The price at the time of saving is recorded, and that is the feature rather than a convenience: "this went down since you saved it" is what a saved list exists to say, and it is unanswerable without a price recorded at save time.

Putting a heart on the page

The heart is not its own element. It is an action: take any button, open its settings, and give it the Save for later action (vi: Lưu để xem sau). Which means it can be any shape you build — a heart icon in the corner of an image, the word "Save" beside the buy button, a mark on a product card in a grid.

The button knows its own state: a product already saved renders as saved, and it is right the moment the page appears rather than after somebody clicks. Pressing it again un-saves.

The page loads no JavaScript for any of this until somebody presses the first heart — so a category page full of hearts costs nothing extra.

The saved-products page

The Wishlist element (vi: Đã lưu), in the Account group of the element panel. Drop it on any page — usually /account, but nothing requires that. It reflows into a grid from the width you give it: one card in a narrow column, five in a wide one, and you never pick a column count at three screen sizes.

Two text boxes in its settings: a title and the text shown when the list is empty. Leave either blank and that part is not drawn.

Each card shows the image, the name, today's price, and a × to un-save.

The price on the card is today's, not the saved one

This is the easiest thing to assume wrong, so plainly: the card asks the catalogue again every time the page opens. If the price has fallen since the heart was pressed, the card leads with the new price and strikes through the old one beside it with the saving (−20%). If the price has risen, the card just shows the new price — striking through the old one there would present a price rise as though it were a discount.

The card can say two more things, and they are different facts:

  • Sold out — you still sell this, it is just gone for now. The shopper has a back-in-stock email coming.
  • No longer available — this product is not in your catalogue any more. No email will ever arrive.

A product you deleted stays on the shopper's list, with its image dimmed. A saved list belongs to the shopper; quietly removing a row is the shop editing it for them.

When the catalogue has not answered yet — a slow network, an offline shopper — the card shows what was saved and claims nothing. It never guesses that something is gone.

Signed-out shoppers can save too

Somebody without an account saves into their browser. When they sign in, that list merges with the account's — exactly as the cart does — so nobody loses what they saved by forgetting to log in first.

Only signed-in shoppers get their list on another device, and only they receive the two emails below. That is not an arbitrary limit: an anonymous saved list would need a new cookie set on every storefront before anyone agreed to anything, and a row for every bot.

A list holds at most 100 items. Past that the oldest save drops off, not the newest — the heart somebody just pressed vanishing is the version people report as broken.

Two automatic emails

Both go only to shoppers with "Accepts marketing emails" turned on in their customer record. These are re-engagement mail, not receipts — somebody who never agreed to marketing did not agree to this.

Back in stock. Sent when a product crosses from unsellable to sellable. Both doors are watched: you typing a new count into the product form, and a cancelled order releasing the units it was holding. The second is the commoner one in a busy shop, and missing it is silent — it looks exactly like a feature nobody switched on. Under 5 units left and the message says how many.

Price drop. Sent when a product gets cheaper — and only to the shoppers who saved it above the new price. Someone who saved at 100,000 watching it come down from 130,000 to 110,000 has seen the price rise since they saved it; telling them it dropped is the shop saying something they can see is untrue. The message carries both numbers and the saving, in your site's own currency.

A product with every variant hidden does not count as a discount. To the system it reads as a price of 0, and "the thing you saved is now free" is the worst message a shop could send.

Each recipient gets their own message — nobody sees anybody else's address. One restock sends at most 200; a waiting list longer than that needs a campaign sender, which is a different thing from a courtesy note.

The "Most wanted" panel

Manage → Analytics (vi: Quản lý → Phân tích), directly under Top products. That pairing is the reorder decision: the panel above says what sold, this one says what people saved and did not buy. High in both is fine; high here and absent above means out of stock or priced wrong.

Each row gives the name, how many people are waiting, and current stock. Click the name to open that product.

It counts people, not rows: a shopper who saved a shirt bare and again in size M is one person waiting for one shirt. Counting rows would have you order twice what anybody asked for.

A row marked Sold out is one to act on. A row marked Not in the catalogue is something you deleted that shoppers still have saved — it is not a reorder prompt, and the screen keeps the two apart instead of showing "0 in stock" for both.

The panel appears even when the shop has taken no orders yet. A shop that has sold nothing but has thirty people waiting on one product is exactly the one that most needs to see it.

Updated 04/09/2026