01TL;DR
Ship Amazon-style Save for Later as a per-item action on the cart page, with the saved list rendered inline below the active cart. Build it against BigCommerce's native Wishlist API as the storage layer, or shortcut with Wishlist Plus by Swym if the design control is acceptable.
Phase 1 — ship it. Per-item Save / Move actions, no page reload, persists for signed-in users. Phase 2 — named lists for B2B (B2B Edition Shopping Lists or multi-list via Swym). Phase 3 — share + schedule: send a list to a teammate, schedule a recurring order.
| Phase | Surface | What it solves | Effort |
|---|---|---|---|
| Phase 1 Pilot | Per-item Save for Later on the cart page (this prototype) | This-session indecision: "I want to keep this in front of me but not buy it today" | Medium — Swym is fastest; custom build on native Wishlist API is cleanest long-term |
| Phase 2 B2B | Named Shopping Lists (durable, account-scoped) | Recurring procurement: "Q2 reorder," "Building 3 standing order" | Free if on B2B Edition; otherwise multi-list via Swym |
| Phase 3 Future | Share with teammate + schedule recurring order | Multi-buyer workflows + scheduled consumables | Highest — overlaps with approval flows and Subscribe & Save |
02What BigCommerce gives us (and doesn't)
BigCommerce's stock Stencil cart template has the standard cart actions — qty edit, remove, edit options — but no native per-item "Save for Later" affordance. The platform's help center has open threads requesting it; the official answer is consistently "use a Wishlist or third-party app."
What Stencil does provide
- Template overrides.
templates/components/cart/partials are fully overridable in a custom theme. - JS event hooks.
stencil-utilsexposescart-item-updateandcart-item-removeevents plus AJAX helpers likeutils.api.cart.getContent(). - REST Storefront Cart API.
/api/storefront/carts/{cartId}/items/{itemId}supports DELETE and POST same-origin from theme JS. This is the path a custom Save-for-Later implementation uses to remove a cart line. - Wishlist API.
/v3/wishlistsand/v3/wishlists/{id}/itemscan be the storage layer for the saved-for-later list. Wishlists are tied to logged-in customers and persist indefinitely.
Stencil gives you the plumbing (template overrides + Storefront Cart API + Wishlist API). You build the UX.
What B2B Edition adds
- Shopping Lists — named, shareable, multi-list collections scoped to a Company account. Junior buyers can build a list and submit it to an admin for approval. Closest mental model: a named, reusable order template with org-level permissions.
- Quote Lists / Quotes — request-for-quote workflow. A buyer assembles items, submits for sales-rep pricing.
Shopping Lists are not a Save-for-Later analogue. They solve recurring procurement, not session-level indecision. A parts distributor should plan to offer both — they serve different jobs.
03The Amazon Save-for-Later pattern
Inline saved list below active cart
Single list, per-item move actions, AJAX-driven, persistent per customer
Pattern source: Amazon's "Saved for later" widget, used unchanged since 2008 and copied by virtually every consumer commerce site.
The canonical behavior
- A single saved list renders directly below the active cart on the same page.
- Per-item actions: "Save for later" in the cart row, "Move to cart" in the saved row. Both also have Remove.
- No page reload — both lists update via AJAX.
- Persists across sessions and devices for the logged-in account.
- Distinct from Wish List (longer-term, often shared) and Subscribe & Save (recurring).
Why this is the right starting pattern
- Recognition over recall. Buyers don't have to learn a new affordance.
- Cart-adjacent. The saved list is visible in the moment of purchase decision, not buried in an account page.
- Per-item, not whole-cart. Matches the actual indecision unit: "I want this and this, but I'm not sure about that."
- Storage layer is solved. BC's native Wishlist API supplies the persistence model without any custom infrastructure.
Prototype behavior
The live cart prototype implements this pattern: a saved section sits directly below the active cart, per-row buttons swap the item between sections with a fade transition, the cart badge in the header and the summary totals recalculate live. No page reload.
04How B2B distributors handle it
The B2C Amazon pattern doesn't generalize cleanly to industrial B2B. The pattern there bends toward durable named lists, not session-scoped cart-adjacent SFL.
Grainger
"My Lists" is the primary holding mechanism — named, shared across company users, supports "add entire list to cart." Structurally identical to BC B2B Edition Shopping Lists. They do not surface a separate Amazon-style SFL below the cart; the List is the persistent surface, the Cart is purely transactional.
McMaster-Carr
No surfaced Save-for-Later or wishlist. Their model assumes the cart is ephemeral and search is fast enough that you don't need to "hold" items — re-find them. Their famously fast search is the substitute UX.
HD Supply
Saved order templates similar to Grainger. List-as-persistence, not cart-adjacent SFL.
Industrial B2B leans on named lists as the persistence layer. Amazon-style SFL is a B2C consumer pattern. A B2B parts distributor probably wants both: cart-adjacent SFL for this session's indecision, plus durable named lists for recurring orders (Phase 2).
05Persistent Cart ≠ Save for Later
The BigCommerce app marketplace conflates these. They solve different problems:
| Persistent Cart | Save for Later | |
|---|---|---|
| Trigger | Automatic — items stay across logout/device | Explicit — user clicks an action |
| Granularity | Whole cart | Per item |
| Intent | "Don't lose my work" | "I'm undecided on this one but keep it visible" |
| BC native? | Yes — store setting | No |
| Conflated by | "Save Your Cart" app; several "persistent cart" listings | Wishlist apps mis-branded as SFL |
BigCommerce's native Persistent Cart is a checkbox in the control panel — items added by a logged-in customer survive logout for N days. That's a store-level setting, not an app, and it does not give you a per-item action. The "Save Your Cart" app is essentially enhanced persistent cart with cross-device link sharing; despite the name, it is not Save-for-Later in the Amazon sense.
Turn on Persistent Cart regardless of the SFL decision. It's free, native, and solves the "don't lose my work" problem at a different layer.
06App shortlist
| App | What it does | Pricing | Move-to-cart | Best for |
|---|---|---|---|---|
| Wishlist Plus by Swym | Wishlist with explicit "Save for Later from cart" mode, guest wishlists, multiple lists, back-in-stock alerts | Free tier; Pro/Premium tiered by monthly wishlist actions (~$15–$100+/mo) | ✓ bi-directional | Fastest off-the-shelf path. Production-ready; theme snippet integration. |
| Save for Later by IntuitSolutions | Per-item button rendered in the cart row; moves item to a saved section. The only BC app whose marketing copy exactly matches the Amazon pattern. | $995 one-time + ~5–7 day install | ✓ | Validates the scope of a custom build; useful as a price-anchor benchmark. |
| Native BigCommerce Wishlists | Free, API-complete, requires logged-in customer. Storage layer for a custom SFL build. | Free (included) | ✓ via custom UI | Cleanest long-term path. Pair with a custom cart-page UI on Stencil. |
| B2B Edition Shopping Lists | Named, shareable, multi-list collections scoped to a Company account; approval workflows. | Included with B2B Edition | ✓ per list | Phase 2 — durable named lists for recurring procurement. |
| Save Cart / Save Your Cart | Whole-cart save and resume across devices via emailed link. Abandoned-cart recovery / cart sharing. | $9.99–$139.99/mo by email volume | — | Not Save-for-Later. Different problem; misleading name. |
| My Wishlist | Lightweight wishlist; account-page-driven, not cart-page-driven. | Free / low cost | manual | Skip — doesn't render in cart context out of the box. |
No first-party BigCommerce module ships per-item Save for Later. The marketplace is wishlist-heavy and abandoned-cart-heavy; "true" Amazon-style SFL is either custom (IntuitSolutions), bolted onto a wishlist (Swym), or baked into a specific theme.
07Requirements coverage
How the recommended pattern satisfies the brief's hard requirements:
| Requirement | Swym Wishlist Plus | Custom on Wishlist API |
|---|---|---|
| Per-item "Save for Later" in cart row | ✓ | ✓ |
| "Move to Cart" reverse action | ✓ | ✓ |
| No page reload on move | ✓ | ✓ |
| Persists across devices for signed-in users | ✓ | ✓ (via Wishlist API) |
| Renders inline below active cart | ✓ (theme config) | ✓ (full control) |
| Caster design fidelity | partial — Swym's UI | ✓ full control |
| Cost predictability | tiered subscription | ✓ one-time |
08Phased recommendation
Ship Amazon-style Save for Later on the cart page.
Recommended path: Build it custom on BigCommerce's native Wishlist API as the storage layer, with the cart-row UI matching Caster (the prototype). This is the cleanest long-term path, gives us full design control, and avoids ongoing subscription cost.
Shortcut path: If a custom Stencil build is out of budget for the first ship, deploy Wishlist Plus by Swym with "Save for Later from cart" mode enabled. Plan to migrate to the native-API version later as the cart-page experience matures.
Also enable: BigCommerce's native Persistent Cart store setting. It's free and solves the orthogonal "don't lose my work" problem at a different layer.
Add durable named lists for recurring procurement. Examples: "Q2 reorder," "Building 3 standing order," "T500e service kit."
If on B2B Edition: use Shopping Lists. They're included, Company-scoped, and support approval workflows out of the box.
If not on B2B Edition: Wishlist Plus by Swym supports multiple wishlists per customer; you'd let buyers name them and surface them in the account area.
This phase aligns the experience with how Grainger and HD Supply structure their B2B persistent surfaces. The Phase 1 SFL stays as the cart-adjacent layer; named lists are the durable layer.
Share-with-teammate (send a list to another buyer in the same Company account) and schedule (turn a list into a recurring order). Both are real B2B needs surfaced in the Clarity sessions but they overlap with approval flows and Subscribe & Save — significant infrastructure beyond the cart page.
Hold this for a later round once Phase 1 + 2 are live and the data tells us which buyer segments use lists most.
09Implementation notes
Data + APIs (custom build path)
- Storage: a per-customer "Saved for Later" wishlist (auto-created on first save) via
POST /v3/wishlistsandPOST /v3/wishlists/{id}/items. - Move actions: Save for Later =
POST /v3/wishlists/{id}/items+DELETE /api/storefront/carts/{cartId}/items/{itemId}. Move to Cart = reverse. Each is a 2-call AJAX sequence. - Cart line item metadata: store the cart qty as a custom field on the wishlist item so we can restore it on Move to Cart (otherwise the qty defaults to 1).
- Price at save: wishlist items optionally carry a
price_at_savefield. Compare to current price on render to show a "Price dropped $X" or "Price went up $Y" chip — the prototype demonstrates the price-drop case.
Optimistic UI
The move action should feel instant: update the DOM first, then fire the AJAX calls in the background. If the API call fails, surface a toast and revert. The prototype's animation timing (220ms fade) is intentionally short — the user sees the row move, but the page never feels "frozen waiting for the server."
Stock + price guards
- On Move to Cart, re-check stock. If out of stock, leave the item in Saved and surface a "Currently unavailable — notify me?" affordance.
- If price changed since save, show the change inline. Don't auto-block the move — let the buyer decide.
Signed-out behavior
Phase 1 is signed-in only. For signed-out users, hide the "Save for Later" action and instead surface a "Sign in to save items for later" inline prompt. Don't try to localStorage-shim it — the cross-device persistence is the whole point, and a guest SFL adds complexity for a B2B audience that's almost always logged in anyway.
Accessibility
- Save / Move buttons should be real
<button>elements with descriptivearia-labels ("Save 991-9042 for later"). - The move animation must respect
prefers-reduced-motion. Snap-instead-of-fade for that audience. - Announce the move via an
aria-live="polite"region: "Moved to Saved for Later. 2 items now in your cart." - Both empty states need to be reachable by keyboard, with focus management when the section becomes empty.
Analytics
Track Save / Move events with the SKU and the time between save and move (or save and remove). This is the data that tells us whether SFL is solving real indecision vs. being a dumping ground.