Overview
Icon for Wishlist

Wishlist

Let guests and users set up wishlists

πŸ§žβ€β™‚οΈ Wishlist Plugin for Medusa

The Alphabite Wishlist Plugin is the most feature-complete wishlist system for MedusaJS. It supports both authenticated and guest users, multiple wishlists per user, and a full-featured SDK client for frontend integration.

This plugin ships with:

  • πŸ”Œ A fully typed JS SDK plugin
  • πŸ“­ A Postman collection
  • βœ… Support for guest & authenticated customers

πŸ“š Table of Contents

✨ Features

  • βœ… Multiple wishlists per customer
  • βœ… Add/remove items to/from any wishlist
  • βœ… Guest wishlist supported + transfer when registered
  • βœ… Fully typed Medusa JS SDK integration with our SDK client
  • βœ… Pagination and filtering built-in

πŸ“¦ Installation

Install the plugin via npm:

npm install @alphabite/medusa-wishlist

In your Copy to clipboardmedusa-config.js, register the plugin:

const plugins = [
{
resolve: '@alphabite/medusa-wishlist',
options: {
// all are optional, read bellow about default values
wishlistFields: [],
wishlistItemsFields: [],
includeWishlistItems: true,
includeWishlistItemsTake: 5,
allowGuestWishlist: true,
},
},
]

πŸ”§ Plugin Options

Option Type Default Description Copy to clipboardwishlistFields Copy to clipboardstring[] Copy to clipboard["items.*", "items.product_variant.*", "items.product_variant.prices.*", "items.product_variant.product.thumbnail", "items.product_variant.product.id"] Selectively include Medusa product or product variant fields on wishlist list/retrieve endpoints that have wishlist items included Copy to clipboardwishlistItemsFields Copy to clipboardstring[] Copy to clipboard["id", "product_id", "wishlist_id", "created_at", "wishlist.customer_id", "updated_at", "deleted_at", "product_variant.*", "product_variant.prices.*", "product_variant.calculated_price", "product_variant.product.thumbnail",] Selectively include Medusa product or product variant fields on wishlist items list/retrieve endpoints Copy to clipboardincludeWishlistItems Copy to clipboardboolean Copy to clipboardfalse Automatically populate wishlist items in Copy to clipboardGET /store/wishlists Copy to clipboardincludeWishlistItemsTake Copy to clipboardnumber Copy to clipboard5 Limit number of items if Copy to clipboardincludeWishlistItems is true Copy to clipboardallowGuestWishlist Copy to clipboardboolean Copy to clipboardfalse Enables wishlist creation & usage without authentication (cookie-based)

πŸ“¦ API Endpoints

All endpoints are available under Copy to clipboard/store/wishlists.

Method Endpoint Auth Description GET Copy to clipboard/store/wishlists βœ… List wishlists for the current customer POST Copy to clipboard/store/wishlists βž– (optional) Create a new wishlist GET Copy to clipboard/store/wishlists/:id βž– (optional) Retrieve a wishlist by ID PUT Copy to clipboard/store/wishlists/:id βœ… Update wishlist metadata DELETE Copy to clipboard/store/wishlists/:id βœ… Delete a wishlist POST Copy to clipboard/store/wishlists/:id/transfer βœ… Transfer guest wishlist to logged-in user GET Copy to clipboard/store/wishlists/:id/items βž– (optional) Get items in a wishlist POST Copy to clipboard/store/wishlists/:id/add-item βž– (optional) Add an item to the wishlist DELETE Copy to clipboard/store/wishlists/:id/items/:item_id βž– (optional) Remove an item from the wishlist

πŸ§‘β€πŸ’» SDK Usage

❗❗❗Read more about our Medusa compatible SDK here

import { AlphabiteMedusaClient, wishlistPlugin } from '@alphabite/sdk'
const sdk = new AlphabiteMedusaClient({
{
baseUrl,
debug: process.env.NODE_ENV === "development",
publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
},
[wishlistPlugin],
{
getAuthHeader: () => { return { authorization: `Bearer ${customerJwt}` } },
}
})
// Create wishlist
await sdk.alphabite.wishlist.create({ name: 'My Sneakers' })
// Add item
await sdk.alphabite.wishlist.addItem({
id: 'wishlist_id',

πŸ§ͺ Guest Wishlist Flow

Guest wishlists work like guest carts:

  1. Create a wishlist (no auth required)
  2. Save the Copy to clipboardid in a cookie
  3. Use that ID for listing/adding/removing items
  4. When the user signs up or logs in, call the Copy to clipboardtransfer endpoint to associate it:
await medusa.alphabite.wishlist.transfer({ id: wishlistId })

After that, the cookie is no longer needed.

🧩 Requirements

  • Medusa v2.5.0+
  • Works with both Copy to clipboard@medusajs/types and Copy to clipboard@medusajs/framework

πŸ“­ Postman Collection

You’ll find the ready-to-import Postman collection at:

docs/postman/WishlistPlugin.postman_collection.json

Use it to explore and test all endpoints interactively.

🀝 Contributing

We welcome issues, feedback, and PRs. Fork it, build it, improve it.

Let’s make commerce more personalized πŸ›οΈ

You may also like

Browse all integrations

Build your own

Develop your own custom integraiton

Build your own integration with our API to speed up your processes. Make your integration available via npm for it to be shared in our Library with the broader Medusa community.

gift card interface

Ready to build your custom commerce setup?