
Mayank Patel
Oct 30, 2025
5 min read
Last updated Oct 30, 2025

If you’re running an ecommerce store on MedusaJS, you already know it’s a beast; fast, flexible, and open-source. But the real magic is in the plugins. In this article, we’ll look at the top 10 MedusaJS plugins that can help you build a complete, production-ready ecommerce setup.
The plugins in this list aren’t just add-ons, they’re practical building blocks that solve real problems ecommerce teams face every day: handling payments securely, syncing product data, improving search performance, simplifying fulfillment, and personalizing communication.
Stripe is one of the most popular and developer-friendly payment platforms globally. For an ecommerce brand, offering a smooth checkout with credit cards and wallets is important for conversion. The official Medusa Stripe plugin makes this trivial to set up: you just add the Stripe provider in your medusa-config with your API keys. It’s highly scalable and secure, handling fraud prevention, PCI compliance, and multi-currency out of the box.
In Medusa v2, the Stripe plugin is included by default as a module provider; you enable it via configuration. It uses Stripe’s Node SDK under the hood and integrates with Medusa’s order workflows. Notably, you can configure options like capture (auto-capture payments or not) and utilize Stripe webhooks to handle asynchronous events (useful for things like SCA or when customers abandon the redirect flow). The plugin also supports advanced Stripe features; setting automatic_payment_methods: true lets Stripe automatically offer methods like Apple Pay if available.
PayPal remains one of the most widely used online payment methods, especially for international customers or those without credit cards. Enabling PayPal can significantly increase conversion by offering a familiar, trusted option. Offering PayPal can reduce cart abandonment (customers don’t need to enter card details if they have a PayPal account). Medusa’s plugin makes this integration straightforward, you install medusa-payment-paypal and configure your PayPal client ID/secret and webhook ID.
The plugin uses PayPal’s REST SDK. You’ll set environment variables for PayPal credentials and a webhook ID for asynchronous payment events. Medusa listens on a special endpoint (e.g. /paypal/hooks) for PayPal webhooks to handle cases where the user doesn’t return to the site after approval. The plugin supports both sandbox and live modes (PAYPAL_SANDBOX flag) for testing. By default, payments are authorized and then need manual capture (you can enable auto-capture via the capture option). Once configured, you enable PayPal in your Medusa Admin for the regions/currencies you want, after that, it’s available as a checkout option.
Also Read: How to Build Adaptive (Algorithmic Merchandising), Intent-Aware Ecommerce Storefronts
ShipStation is a shipping management platform that consolidates various carriers (UPS, FedEx, DHL, USPS, etc.) in one place. By connecting it to Medusa, you enable real-time shipping rate quotes at checkout from all your configured carriers and simplify order fulfillment. Customers can choose from multiple delivery options (e.g. standard vs express from different carriers) with prices fetched via ShipStation. On the backend, your team can seamlessly push orders to ShipStation for label printing and tracking.
This plugin provides strategic value by outsourcing rate calculation and label generation to ShipStation. It means you don’t have to manually integrate each carrier’s API or maintain complex shipping logic. For customers, showing accurate shipping options and costs improves transparency and conversion. For store operators, using ShipStation can reduce errors and fulfillment time since all orders flow into one system for processing.
Medusa’s Fulfillment module is designed to delegate fulfillment to providers like ShipStation. The plugin registers a fulfillment provider that communicates with ShipStation’s API. Technically, when an order is placed, the plugin can send order data to ShipStation; it can also fetch live rates during checkout by calling ShipStation’s rate API with package details. Configuration involves providing your ShipStation API key/secret and configuring webhook callbacks. The integration can be enabled/disabled per region or shipping option in Medusa Admin.
The Contentful plugin integrates Contentful, a popular headless CMS, with Medusa. This gives you rich content management capabilities (beyond product data) in your ecommerce application. By connecting Contentful, you can manage things like detailed product descriptions, long-form blog content, landing page sections, and localized content in Contentful’s user-friendly interface, and have that content synchronized to Medusa.
Most ecommerce brands need a CMS for marketing pages, editorial content, or richer product storytelling. Shopify has a basic CMS for pages/blogs, but it’s limited in structure. By using Contentful via Medusa, you can get the best of both worlds: a composable commerce stack where Medusa handles products/orders and Contentful handles content. This is strategically valuable for headless commerce setups, your frontend can pull product data from Medusa and seamlessly enrich it with content from Contentful (like lookbooks, size guides, translated descriptions, etc.).
The medusa-plugin-contentful package is installed in your Medusa backend and configured with your Contentful Space ID, Access Token, and environment. Under the hood, it sets up listeners for events (like product updates) and uses Contentful’s API to push/pull data. You must have matching content models in Contentful for Medusa’s entities (products, variants, regions, etc.). The plugin provides migration scripts to create these models in Contentful, or you can do it manually.
A clever aspect is the two-way sync: changes in Medusa (e.g., product price or stock) can update Contentful, and content changes in Contentful (e.g., a new product description) can be fetched into Medusa’s store. Redis is recommended for caching sync operations, and you can even map custom fields if your Contentful models use different field names. Essentially, Contentful becomes an extension of your product catalog and pages, with Medusa orchestrating the data flow.
Also Read: How Progressive Decoupling Modernizes Ecommerce Storefronts Without Full Replatforming
The Algolia integration connects Algolia, a hosted search engine, to Medusa for lightning-fast, typo-tolerant product search. With this integration, Medusa will index products (and/or other data) in an Algolia index, and your storefront can query Algolia’s API to retrieve results instantly as users type. Algolia provides an intuitive search-as-you-type experience with features like filtering, synonyms, and relevance tuning.
For any ecommerce store with more than a handful of products, a robust search function is key to conversion and user experience. Shoppers expect instant, relevant results. Algolia is a market leader in search performance, it can handle large catalogs with millisecond response times and comes with enterprise-grade features (analytics, personalization add-ons, etc.).
Using Algolia via plugin adds strategic value in terms of scalability (your search scales independently of your backend) and performance (offloading heavy search queries to Algolia’s infrastructure). It also frees your developers from building search algorithms from scratch. In short, this plugin helps Medusa-based stores match or exceed the search capabilities of Shopify (whose search is often cited as a weak point).
Currently, Medusa provides a guide to integrating Algolia (creating a custom module), and a community plugin exists for MeiliSearch (an open-source Algolia alternative). With Algolia, you’d install Algolia’s JavaScript client and create an Algolia Module in Medusa that hooks into product events. For example, you’d write subscribers to Medusa events (product created/updated/deleted) that trigger index updates in Algolia.
On the storefront side, you’d use Algolia’s InstantSearch or similar libraries to query the index. The division of labor is clear: Medusa ensures the Algolia index is kept up-to-date, and Algolia serves the search queries ultra-fast. This plugin/module approach keeps search queries from ever hitting your primary database, which improves scalability and performance under load.
The Segment plugin integrates Segment (Twilio Segment) as an analytics and customer data platform for your Medusa store. Segment acts as a centralized pipeline, it collects user and order events from Medusa and forwards them to various analytics, marketing, or data warehousing tools. With the Medusa Segment plugin enabled, key commerce events (order placed, shipment sent, product returned, etc.) are automatically tracked and sent to Segment. You can then configure Segment to push those events into tools like Google Analytics, Mixpanel, Facebook Ads, Mailchimp, Snowflake, or dozens of other destinations with no additional coding.
Segment provides a single API to send data to many services. For a CTO, this means you don’t have to instrument each tool separately, Medusa sends events to Segment, and from Segment you fan out to whichever platforms your marketing and BI teams need. This plugin is strategically valuable because it unlocks omni-channel insights: track a customer’s journey from browsing to purchase to return, and have that data in your CRM, email tool, and analytics dashboards seamlessly. For example, you could send purchase events to Google Analytics for reporting, to Facebook Pixel for ad attribution, and to a data warehouse for advanced analysis, all through the same event emitted by Medusa.
The medusa-plugin-segment is installed in your backend and typically requires a Segment write key for your source. Under the hood, it uses Medusa’s event bus: Medusa emits events for things like order.placed, and the Segment plugin listens to these and sends them to Segment’s HTTP API. By default, it tracks events such as order creation, shipment creation, returns, order cancellations, swaps, etc., covering the main commerce workflows.
The plugin configuration can filter which events to send or enrich event data as needed. One important aspect is reliability, using Segment’s server-side integration means events are recorded even if the user closes their browser (unlike purely frontend tracking). From a dependency standpoint, the plugin uses Segment’s Node library. Medusa’s modular nature means this plugin can hook into any custom events you define as well. Segment itself provides a free plan for small volumes, so you can start without heavy investment.
Also Read: Why MedusaJS is the Future of Headless Ecommerce
The Shopify Source plugin helps migrate and integrate with Shopify by syncing product data from a Shopify store into Medusa. This plugin is a bridge for those transitioning off of Shopify, it imports products (and possibly collections, images, etc.) from your Shopify account to Medusa’s database. It also sets up a scheduled job to continuously sync changes, so you can run Medusa in parallel with a live Shopify store during a replatforming period. Essentially, it “bootstraps” your Medusa backend with all your existing Shopify catalog data.
This plugin provides strategic value by dramatically lowering the switching cost. By keeping a sync job running, you can test Medusa in production while Shopify remains the source of truth, until you’re ready to cut over. It’s a great example of Medusa acting as a composable middleware layer, even before fully migrating, Medusa can sit between Shopify and other services to augment functionality.
The medusa-source-shopify plugin connects to Shopify’s Admin APIs. You create a Private App in Shopify with read access to products, then provide the app credentials (Shopify domain and API password) to the plugin config. When the plugin runs, it fetches all products, variants, etc., from Shopify and inserts them into Medusa’s database (mapping Shopify fields to Medusa’s schema).
It also registers a cron task (Medusa’s job scheduler) to periodically poll Shopify for changes or new products. This means if you add a new product in Shopify, it will appear in Medusa after the next sync run. The plugin focuses mainly on product catalog data (orders and customers are not typically synced, as those are better handled via a one-time import or different strategy).
The Wishlist plugin adds customer wishlisting capability to your Medusa store. This allows shoppers to save products they are interested in and revisit or share their wishlist later, a proven tactic to re-engage users and drive additional sales. Medusa’s wishlist plugin enables customers to create a personal wishlist, add or remove products, and even generate a shareable link (token) to send their wishlist to others.
For marketing, wishlists provide valuable intent data (which products are frequently saved) and an opportunity for retargeting (e.g., “Your wishlist item is back in stock/on sale” emails). By having an official plugin, Medusa makes this feature easy to implement, whereas on platforms like Shopify you’d typically need a third-party app.
The medusa-plugin-wishlist is an example of a plugin that extends Medusa’s core functionality without relying on an external service. Technically, it creates a new REST API endpoints on the Medusa server for wishlist operations (the plugin exposes four store endpoints for adding items, removing items, generating share tokens, and retrieving a wishlist by token).
Internally, it uses Medusa’s database, when a customer adds an item, the plugin stores it in the customer’s metadata as a list of line items. (It cleverly reuses the concept of line items, which makes it easy to eventually move a wishlist item to the cart.) The plugin also likely includes admin UI components (if enableUI is true) to view a customer’s wishlist in the Medusa Admin.
The shareable token feature works by generating a UUID that can be used to fetch the wishlist without authentication. Security for that endpoint is handled by using a token that doesn’t expose personal info, only the wishlist items and the customer’s first name. Implementation-wise, this plugin is mostly custom server logic showing Medusa’s extensibility (it doesn’t depend on an outside API).
The Product Reviews plugin (by Lambda Curry) brings a full product review and rating system to Medusa. This community plugin provides all the functionality needed for customers to leave 1–5 star ratings and write reviews on products, and for admins to moderate and respond to those reviews. On the storefront side, developers can display reviews and rating averages via the store API or directly from the plugin’s endpoints.
Product reviews and ratings are proven drivers of e-commerce success, they build social proof and trust. Customers almost expect to see reviews; absence of reviews can be a red flag. Instead of relying on an external service like Yotpo with recurring fees, you can host your own review system and own the data. Reviews data can further feed into marketing (e.g., average ratings in emails or ads) and product development feedback.
The reviews plugin is installed as @lambdacurry/medusa-product-reviews. It adds new database tables for reviews and uses Medusa’s entities/services architecture to link reviews to products and customers. Once installed and migrations are run, it automatically injects an Admin UI extension (using Medusa’s admin “injection zones”) that provides a full interface for review management.
Admins can approve or reject reviews (to filter spam or inappropriate content), and they can author official responses that appear beneath the customer’s comment. The admin UI shows an overview of all reviews with filtering by product or rating, and even displays average rating per product for quick insights. On the storefront side, the plugin doesn’t impose a specific UI, it’s headless. It provides APIs to submit a review (likely a POST to something like /store/products/{id}/reviews) and to fetch reviews for a product.
The Lambda Curry team also provided a Next.js storefront example demonstrating how to integrate the review submission and display. The plugin uses metadata on product or separate tables to store aggregate rating and count. This design mirrors the approach of Shopify apps but within your own database. As a result, you have full control: if you needed to integrate with a third-party NLP sentiment analysis or stream reviews to a marketing site, you could, since the data resides in your Medusa database.
The SendGrid plugin integrates Twilio SendGrid as a notification provider for sending transactional emails from Medusa. Medusa has a notifications module that can route messages (like order confirmations, password resets, shipping updates) to different channels (email, SMS, etc.). By installing the SendGrid provider, you configure Medusa to send all email-type notifications via SendGrid’s reliable email service. This covers common ecommerce emails: order confirmation receipts, shipping confirmation with tracking, account welcome emails, password reset links, and any custom notifications you create.
Email is the lifeblood of ecommerce communications. Using a dedicated email delivery service like SendGrid ensures high deliverability (your emails are less likely to end up in spam) and scalability (handle bursts during sales). While Medusa could send emails directly via SMTP, SendGrid offers templates, analytics, and proven infrastructure. Strategically, this plugin lets you separate concerns, your Medusa backend triggers notifications, but SendGrid handles the actual delivery.
It also allows marketers to update email templates in SendGrid’s UI without developer deployment. Compared to Shopify, which has built-in email templates that are somewhat rigid, using SendGrid via Medusa offers far more flexibility in design and content personalization. It’s also easier to support multiple brands or locales by using SendGrid’s template features, whereas Shopify’s handling of multi-language emails can be cumbersome.
The plugin (@medusajs/medusa/notification-sendgrid in Medusa v2) is configured by adding it to the Notification module’s providers list with an API key and a sender email. Medusa’s notification architecture uses “channels”, and you typically set SendGrid to handle the "email" channel. Only one provider can be attached to a channel, so if SendGrid is set for email, it will handle all emails.
The plugin does not require much code in your project; you mostly supply API credentials. Once active, whenever Medusa’s core or your custom code calls the NotificationService to send an email (with a template ID and data), the SendGrid provider executes. You use SendGrid transactional templates: in your SendGrid account you create email templates (for order confirmation, etc.) with placeholders, and you pass the template ID and data from Medusa. The documentation highlights that you must specify the template ID when triggering a notification.
This decouples presentation (email HTML content) from logic (Medusa just sends data like customer name, order items, etc.). On the Medusa side, you can trigger notifications via built-in events or manually via the Notification API. For example, Medusa might automatically send an “order.placed” email by default if configured. The plugin makes heavy use of Medusa’s event system and the OpenTelemetry instrumentation can even track email sends. The important part: no need to write low-level email-sending code, just configure and use Medusa’s high-level notification API.
