WooCommerce Wishlists

WooCommerce Wishlists lets shoppers save products to an unlimited number of lists and keep each one private, shared by link, or public.

  • Guests can create lists without an account. An abandoned guest list is cleaned up automatically after 30 days.
  • Signed-in customers keep their lists indefinitely, and a guest’s lists are claimed by their account when they log in or register.

Requirements

↑ Back to top
  • WordPress 6.8 or later
  • WooCommerce 10.4 or later
  • Works on classic themes and block themes, and is compatible with High-Performance Order Storage (HPOS)

Installation

↑ Back to top
  1. Download the .zip file from your WooCommerce account.
  2. Go to: WordPress Admin > Plugins > Add New to upload the file you downloaded with Choose File.
  3. Activate the extension.

More information at: Installing and Managing Plugins.

On activation the extension creates the five pages it needs — Wishlists, Create a List, Manage List, Find a List and View a List — each already containing the correct shortcode, and selects them under Wishlist Page Options. In most stores there is nothing further to configure.

Settings

↑ Back to top

All settings are at WooCommerce > Settings > Wishlists.

Wishlist Options

↑ Back to top
SettingWhat it does
Allow Guests to Create Lists Whether visitors without an account can create lists.
Yes — anyone can.
No — the button is hidden and only signed-in customers can create lists.
Registration Required — guests see the button, but are asked to log in or register before the save completes.
Automatically Create Lists Set to Yes and a shopper’s first list is created for them with a generic title. Set to No and they are asked to name it first.
Message for Guests Shown to visitors who are not signed in when they reach the Create a List page. Only applies when Allow Guests to Create Lists is set to No.
Redirect to Wishlist Whether to send the shopper to the list after they save an item. Set to No to leave them on the product.
Button / Link Type Render the control as a button styled like the Add to Cart button, or as a text link.
Icon Heart, Bookmark, Star, Gift, or None. Drawn in your theme’s button colour. This is also how the control reports state: outlined while the product is on none of the shopper’s lists, solid once it is on one.
Button / Link Text The wording on the control — “Add to wishlist” by default. It stays the same in every state; only the icon changes.
One-click first save When a shopper has no lists at all, save straight to a new list called “My List” instead of opening the picker. Faster, but it names their first list and chooses its privacy for them. Off by default.
Saved State Text Announced to screen readers when the product is already on one of the shopper’s lists — “Saved” by default. The visible button text is unchanged.
Cart Label The label shown against a cart line that came from a wishlist. “From Wishlist” by default.

Product Listing Button

↑ Back to top

These settings govern the Add to Wishlist button on shop and category pages. Product pages are not affected by them.

SettingWhat it does
Show in Product Listings Turn the button in product listings on or off.
Show for Variable Products A listing cannot choose a variation, so a variable product saved from one is saved without it and the shopper is asked to choose options before it can go to the cart. Set to No to offer variable products only on their own product pages.
Button Position Where the button sits on each product tile: On the product image (laid over the top-left corner), Above the Add to Cart button, or Below the Add to Cart button. On a block theme you can also move the block in the Site Editor.
Show Button Text Set to No for an icon-only button — a round badge when combined with the “On the product image” position. Screen readers still hear the text.
Button Text Separate wording for the listing button. Leave blank to use the Button / Link Text above.

Wishlist Processing Options

↑ Back to top

What happens to a list item once it has been ordered. These are the settings that make a list behave like a gift registry.

SettingWhat it does
Automatic Removal Remove an item from the list once it has been purchased.
Automatic Removal on Status The order status the purchase must reach before the item is removed.
Automatic Removal Type Remove the item only from the buyer’s own list, or from any list it appears on. Choose Remove From Any List for a gift registry, so an item bought by a friend clears from the registry owner’s list.
Show Previous Ordered Total Adds a column to View a List and Manage List showing how many of each item have already been ordered — the “already bought” column of a registry.
Previous Ordered Column Heading The heading for that column. “Ordered” by default.

Sharing and Style Options

↑ Back to top
SettingWhat it does
Social Options Which of Facebook, Twitter, Email and Pinterest appear in the sharing row on a public or shared list.
Custom Buttons By default the control inherits your theme’s and WooCommerce’s own button styling. Tick Enable Custom Wishlist Button Colors to override the button and text colours instead.
Custom CSS Somewhere to put a few style rules without editing your theme. A convenience, not a requirement.

Notification and Add to Cart Options

↑ Back to top
SettingWhat it does
Send Notifications Email a list’s owner when the price of a product on their list drops.
Prompt for Quantities Ask the shopper how many they want when adding to the cart from a list, rather than using the quantity stored on the list.

Wishlist Page Options

↑ Back to top

Wishlists needs five pages, one per screen. They are created and selected for you on activation. To use your own pages instead, select them here and add the matching shortcode to each.

PagePurposeShortcode
My Lists PageWhere a shopper manages and creates their own lists[wc_wishlists_my_archive]
Create a ListWhere new lists are created[wc_wishlists_create]
Edit a ListWhere a shopper edits their own list[wc_wishlists_edit]
Find a ListWhere public lists can be searched for[wc_wishlists_search]
View a ListWhere public and shared lists are viewed[wc_wishlists_single]

Signed-in customers also get a Wishlists tab on their WooCommerce My Account page, at /my-account/account-wishlists/.

Wishlists does not add its pages to any menu. Add links to My Lists, Find a List and Create a List yourself via Appearance > Menus, or anywhere else on your site.

Placing the Add to Wishlist Button

↑ Back to top

On a classic theme the button is added to the product page and to product listings automatically, in the positions set above. There is nothing to place by hand.

On product pages

↑ Back to top
The Add to Wishlist button on a WooCommerce product page

In shop and category listings

↑ Back to top

In its default position, below each tile’s Add to Cart button:

Add to Wishlist buttons in a WooCommerce shop grid

With Button Position set to “On the product image” and Show Button Text set to No, it becomes a round icon-only badge on the corner of each photo. The two saved products show the solid icon; the unsaved one shows the outline:

Icon-only wishlist badge on product images in a shop grid

On block themes

↑ Back to top

Wishlists registers two blocks, both under the WooCommerce category in the inserter:

  • Add to Wishlist — the save control for a single product. It is added to the product template automatically, and works inside a Product Collection or Product Template so every tile in a grid gets one.
  • Wishlist — displays a shopper’s list.

Both are real blocks in the Site Editor: open Appearance > Editor, edit the Single Product or Product Catalog template, and you can move, restyle or delete the button like any other block. Colour, typography, spacing and border controls are in the block sidebar, and both blocks read your theme.json.

Shortcodes

↑ Back to top

For page builders and custom templates:

  • [wc_wishlists_button] — renders the Add to Wishlist control for the product being displayed.
  • [wc_wishlists_add_link product_id=”123″ title=”Save this”] — the same control for a named product, anywhere on the site. title sets the button text; use title="product_title" for “Add [product name] to Wishlist”.

What Your Shoppers See

↑ Back to top

Saving a product

↑ Back to top

Clicking Add to Wishlist opens the list picker without leaving the page. Each of the shopper’s lists is shown with its item count and privacy, and a tick against any list that already holds this product. Ticking saves, unticking removes — there is no confirm step. A new list can be named and saved to in the same dialog.

The Add to Wishlist list picker, showing three lists with item counts

A short confirmation appears after each save, with a link to the list.

Variable products

↑ Back to top

On a variable product the control follows the variation the shopper has chosen, so two colours of the same product can sit on one list and be removed one at a time. The control is inactive until a variation is selected, the same way WooCommerce’s own Add to Cart button is.

The list picker on a variable product, following the selected variation

A variable product saved from a shop listing is saved without a variation, because a listing has no way to choose one. Its row on the list offers Choose options, linking to the product page, instead of an Add to Cart that could not succeed. The same applies to a product whose add-on fields have not been filled in.

Guest lists

↑ Back to top

A shopper who is not signed in gets a temporary list, identified by a cookie. It is available only in the browser it was created in, and clearing cookies loses it. Logging in or registering at any point claims those lists into the account, after which they are kept indefinitely.

A temporary list that is more than 30 days old and has had nothing saved to it in 30 days is deleted automatically. This keeps bot- and crawler-created lists from accumulating. Lists belonging to an account are never touched. Developers can change or disable the lifetime — see Customization below.

Viewing and managing lists

↑ Back to top

Shoppers reach their lists from the Wishlists page, or from the Wishlists tab of My Account. Clicking a list’s title opens the Manage List screen.

The Manage List screen showing saved items, quantities and per-item Add to Cart

On the List Items tab, quantities can be edited, items removed, and items added to the cart directly from the grid — each without reloading the page. Add All To Cart adds everything the list can add and reports anything it skipped, and why. The bulk Actions dropdown applies one action to the items you tick:

  • Add to Cart — adds the selected items.
  • Update Quantities — saves the quantities you typed into the list.
  • Remove From List — removes the selected items.
  • Create a New List — creates a list and moves the selected items to it.

Everything on this screen also works with JavaScript disabled; the controls fall back to ordinary links and form submissions.

The Settings tab covers the list itself: title, description, the name and email associated with it, and its privacy.

  • Public — anyone can find the list by searching for the name or email on the Find a List page.
  • Shared — only people with the link can see it, and it does not appear in search results.
  • Private — visible only to its owner, and it cannot be shared.

Wishlist pages are excluded from search engines by default, and are sent with no-cache headers so a shared list is never served stale by a page cache.

Managing Wishlists as a Store Owner

↑ Back to top

Every list on the store is listed under WooCommerce > Wishlists. Open one to see its items and its owner. The columns tell you, at a glance:

  • TypePermanent for a list belonging to an account, or Temporary List for a guest’s cookie-based list. Only temporary lists are ever cleaned up automatically.
  • Sharing Status — Public, Shared or Private.
  • User — the account that owns the list, or a dash for a guest list.
  • Email on List and Name on List — what the owner entered on the list’s Settings tab, which is what a public list is found by on the Find a List page.
  • Products — how many items are currently saved.

The two dropdowns above the table filter by type and by sharing status — useful for finding how many guest lists a store is carrying, or for reviewing every public list before a promotion.

Using Wishlists as a Gift Registry

↑ Back to top

Set a list to Public or Shared so the owner can send the link out, then under Wishlist Processing Options:

  1. Set Automatic Removal to Yes.
  2. Set Automatic Removal Type to Remove From Any List, so an item bought by a friend clears from the owner’s registry.
  3. Choose the Automatic Removal on Status the order must reach first.
  4. Set Show Previous Ordered Total to Yes to show visitors how many of each item have already been bought.

Customization

↑ Back to top

Templates

↑ Back to top

Any template in the extension’s templates folder can be overridden by copying it to wp-content/themes/your-theme/woocommerce/ and editing the copy there.

REST API

↑ Back to top

Lists and items are available over the REST API under the wc-wishlists/v1 namespace, with guest support and share keys:

RouteMethods
/wp-json/wc-wishlists/v1/wishlistsGET, POST
/wp-json/wc-wishlists/v1/wishlists/<id>GET, PUT, DELETE
/wp-json/wc-wishlists/v1/wishlists/<id>/itemsGET, POST
/wp-json/wc-wishlists/v1/wishlists/<id>/items/<key>PUT, DELETE

A price that another extension has hidden from a visitor is withheld here too, and the wc_wishlists_can_view_price filter lets any plugin withhold one.

Filters

↑ Back to top
FilterWhat it controls
wc_wishlists_temporary_list_lifetime_daysHow long an abandoned guest list survives. Return 0 to disable the cleanup entirely.
woocommerce_wishlists_loop_position
woocommerce_wishlists_render_in_loop
Override the Product Listing Button settings for an individual product.
woocommerce_wishlists_loop_template_priorityMove the listing button within its hook.
woocommerce_wishlist_icons
woocommerce_wishlist_icon_svg
Register your own icons.
woocommerce_wishlist_snackbar_positionMove the confirmation message. Any corner or centre edge; bottom-left by default.
wc_wishlists_max_user_list_countCap how many lists one shopper may create.
wc_wishlists_noindex_pagesWhether wishlist pages are excluded from search engines.

Styling

↑ Back to top

Because the extension inherits your theme’s button styles, most stores need no CSS at all. If you do write some, the confirmation message reads the --wl-snackbar-bg, --wl-snackbar-color and --wl-snackbar-action-color custom properties.

Upgrading from 2.3.x

↑ Back to top

Version 2.4.0 replaced the add-to-wishlist control and the list screens. Almost every store can update without doing anything, but four changes are worth knowing about.

The legacy button and its templates were removed. If your theme contains a customised copy of add-to-wishlist-link.php or add-to-wishlist-modal.php, those files are no longer used. Move the customisation to the Add to Wishlist block, the [wc_wishlists_button] shortcode, or the woocommerce_wishlists_template_location filter. The old ?add-to-wishlist-itemid= URLs and the woocommerce_wishlist_already_in_list_text filter are gone as well; the button’s own state has replaced that notice.

Grouped products can no longer be added as a group. Their child products can still be saved from their own product pages.

Theme CSS may need updating. .wl-actions-table is now .wl-toolbar, .wl-rad-table is now .wl-fieldset, and the picker is .wl-add__dialog rather than #wl-list-pop-wrap / .wl-list-pop.

The Icon setting now applies to the button as well as the link. If you had left it on “Present”, a gift icon will appear where none did before. Choose None to keep the button plain.

FAQ

↑ Back to top

How do I create a wishlist on a customer’s behalf?

↑ Back to top
  1. Install and activate the User Switching plugin.
  2. Go to Dashboard > Users > All Users.
  3. Find the customer’s account and select Switch To.
  4. Build the list from the storefront exactly as the customer would.
  5. Use “Switch back to […]” at the top right when you are done.

The list will be waiting on their My Account page the next time they log in.

Are items removed from a list after they are purchased?

↑ Back to top

Only if you set them to be. See Wishlist Processing Options above.

Can this be used as a gift registry?

↑ Back to top

Yes. See Using Wishlists as a Gift Registry above — set Automatic Removal Type to “Remove From Any List” and turn on the previously-ordered column.

Does it work with Product Add-ons and Gravity Forms Product Add-ons?

↑ Back to top

Yes. The options a shopper configured when they saved the product are stored with the list item and restored when it goes to the cart. An item whose required add-on fields were never filled in offers “Choose options” rather than adding at the base price.

Does it work with block themes?

↑ Back to top

Yes. Both blocks work in the Site Editor and inside Product Collection and Product Template blocks, and the Mini Cart count updates when an item is added to the cart from a list.

Is WooCommerce Wishlists compatible with WooCommerce Deposits?

↑ Back to top

Not at this time. Taking a deposit on a wishlist item would need customization.

Why has a shopper’s guest list disappeared?

↑ Back to top

Guest lists live in a browser cookie, so they do not follow the shopper to another browser or device, and clearing cookies loses them. A guest list that has been abandoned for 30 days is also deleted automatically. Ask the shopper to register or log in — their lists are claimed by the account and kept from then on.

Questions & Support

↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need some assistance? Get in touch with the developer via the Help Desk.

Related Products

Advanced, flexible shipping. Define multiple shipping rates based on location, price, weight, shipping class or item count.

Use conditional logic to restrict the shipping and payment options available on your store.

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.