docs: add notes + missing links for user guide (#11621)

* docs: add notes + missing links for user guide

* fix build errors

* fixes
This commit is contained in:
Shahed Nasser
2025-02-26 15:28:18 +02:00
committed by GitHub
parent 322d108c03
commit 95eef899f7
76 changed files with 736 additions and 794 deletions

View File

@@ -147,7 +147,7 @@ Use a user's secret API Token to send authenticated requests.
#### How to Create an API Token for a User
Create the API key token either from the Medusa Admin or using the [Create API Key API Route](#api-keys_postapikeys).
Create the API key token either from the [Medusa Admin](!user-guide!/settings/developer/secret-api-keys) or using the [Create API Key API Route](#api-keys_postapikeys).
<Note>

View File

@@ -81,6 +81,7 @@ This documentation is split into the following sections:
1. The main documentation, which is the one you're currently reading. It's recommended to follow the chapters in this documentation to understand the core concepts of Medusa and how to use them.
2. The [Development Resources documentation](!resources!) provides guides and resources useful during your development, such as tools, API references, recipes, step-by-step guides and examples, and more.
3. The [Store](!api!/store) and [Admin](!api!/admin) API references provide a reference to the Medusa application's endpoints and instructions related to authentication, parameter types in requests, and more.
4. The [User Guide](!user-guide!) introduces you to the Medusa Admin dashboard and helps merchants and store managers understand how to use the dashboard to manage their store.
To get started, check out the [Installation chapter](./installation/page.mdx).

View File

@@ -181,6 +181,4 @@ Then, start the Medusa application:
npm run dev
```
{/* TODO add links */}
And create a product either using the [API route](!api!/admin#products_postproducts) or the Medusa Admin. This runs the subscriber and sends an email using SendGrid.
And create a product either using the [API route](!api!/admin#products_postproducts) or the [Medusa Admin](!user-guide!/products/create). This runs the subscriber and sends an email using SendGrid.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the API Key Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/developer) to learn how to manage publishable and secret API keys using the dashboard.
</Note>
Medusa has API-key related features available out-of-the-box through the API Key Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this API Key Module.
<Note>

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this guide, you'll learn how to handle the `auth.password_reset` event, which is emitted when a request is sent to the [Generate Reset Password Token API route](../authentication-route/page.mdx#generate-reset-password-token-route).
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/reset-password) to learn how to reset your user admin password using the dashboard.
</Note>
You'll create a subscriber that listens to the event. When the event is emitted, the subscriber sends an email notification to the user.
<Prerequisites

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Currency Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/store) to learn how to manage your store's currencies using the dashboard.
</Note>
Medusa has currency related features available out-of-the-box through the Currency Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Currency Module.
<Note>

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, youll learn how registered and unregistered accounts are distinguished in the Medusa application.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/customers) to learn how to manage customers using the dashboard.
</Note>
## `has_account` Property
The [Customer data model](/references/customer/models/Customer) has a `has_account` property, which is a boolean that indicates whether a customer is registered.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Customer Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/customers) to learn how to manage customers and groups using the dashboard.
</Note>
Medusa has customer related features available out-of-the-box through the Customer Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Customer Module.
<Note>

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, youll learn what a fulfillment module provider is.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/settings/locations-and-shipping/locations#manage-fulfillment-providers) to learn how to add a fulfillment provider to a location using the dashboard.
</Note>
## Whats a Fulfillment Module Provider?
A fulfillment module provider handles fulfilling items, typically using a third-party integration.

View File

@@ -8,6 +8,15 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Fulfillment Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the Medusa Admin User Guide to learn how to use the dashboard to:
- [Manage order fulfillments](!user-guide!/orders/fulfillments).
- [Manage shipping options and profiles](!user-guide!/settings/locations-and-shipping).
</Note>
Medusa has fulfillment related features available out-of-the-box through the Fulfillment Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Fulfillment Module.
<Note>

View File

@@ -14,6 +14,15 @@ export const metadata = {
In this guide, you'll learn how inventory kits can be used in the Medusa application to support use cases like multi-part products, bundled products, and shared inventory across products.
<Note title="Looking for no-code docs?">
Refer to the following user guides to learn how to use the Medusa Admin dashboard to:
- [Create Multi-Part Products](!user-guide!/products/create/multi-part).
- [Create Bundled Products](!user-guide!/products/create/bundle).
</Note>
## What is an Inventory Kit?
An inventory kit is a collection of inventory items that are linked to a single product variant. These inventory items can be used to represent different parts of a product, or to represent a bundle of products.
@@ -42,7 +51,7 @@ Then, whenever a customer purchases a bicycle, the inventory of each part is upd
### Create Multi-Part Product
Using the Medusa Admin, you can create a multi-part product by creating its inventory items first, then assigning these inventory items to the product's variant(s).
Using the [Medusa Admin](!user-guide!/products/create/multi-part), you can create a multi-part product by creating its inventory items first, then assigning these inventory items to the product's variant(s).
Using [workflows](!docs!/learn/fundamentals/workflows), you can implement this by first creating the inventory items:
@@ -205,7 +214,7 @@ Then, when the bundled product's variant is purchased, the inventory quantity of
### Create Bundled Product
You can create a bundled product in the Medusa Admin by creating the products part of the bundle first, each having its own inventory items. Then, you create the bundled product whose variant(s) have inventory kits composed of inventory items from each of the products part of the bundle.
You can create a bundled product in the [Medusa Admin](!user-guide!/products/create/bundle) by creating the products part of the bundle first, each having its own inventory items. Then, you create the bundled product whose variant(s) have inventory kits composed of inventory items from each of the products part of the bundle.
Using [workflows](!docs!/learn/fundamentals/workflows), you can implement this by first creating the products part of the bundle:

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Inventory Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/inventory) to learn how to manage inventory and related features using the dashboard.
</Note>
Medusa has inventory related features available out-of-the-box through the Inventory Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Inventory Module.
<Note>

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, youll learn about order claims.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/orders/claims) to learn how to manage an order's claims using the dashboard.
</Note>
## What is a Claim?
When a customer receives a defective or incorrect item, the merchant can create a claim to refund or replace the item.

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, you'll learn about order edits.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/orders/edit) to learn how to edit an order's items using the dashboard.
</Note>
## What is an Order Edit?
A merchant can edit an order to add new items or change the quantity of existing items in the order.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this document, youll learn about order exchanges.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/orders/exchanges) to learn how to manage an order's exchanges using the dashboard.
</Note>
## What is an Exchange?
An exchange is the replacement of an item that the customer ordered with another.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Order Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/orders) to learn how to manage orders using the dashboard.
</Note>
Medusa has order related features available out-of-the-box through the Order Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Order Module.
<Note>

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, youll learn about order returns.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/orders/returns) to learn how to manage an order's returns using the dashboard.
</Note>
## What is a Return?
A return is the return of items delivered from the customer back to the merchant. It is represented by the [Return data model](/references/order/models/Return).

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Payment Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/orders/payments) to learn how to manage order payments using the dashboard.
</Note>
Medusa has payment related features available out-of-the-box through the Payment Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Payment Module.
<Note>

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this document, youll learn what a payment module provider is.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/settings/regions) to learn how to manage the payment providers available in a region using the dashboard.
</Note>
## What's a Payment Module Provider?
A payment module provider registers a payment provider that handles payment processing in the Medusa application. It integrates third-party payment providers, such as Stripe.

View File

@@ -12,6 +12,12 @@ export const metadata = {
In this document, youll learn about the Stripe Module Provider and how to configure it in the Payment Module.
<Note title="Looking for no-code docs?">
Your technical team must install the Stripe Module Provider in your Medusa application first. Then, refer to [this user guide](!user-guide!/settings/regions#edit-region-details) to learn how to enable the Stripe payment provider in a region using the Medusa Admin dashboard.
</Note>
## Register the Stripe Module Provider
<Prerequisites items={[
@@ -192,6 +198,14 @@ STRIPE_API_KEY=<YOUR_STRIPE_API_KEY>
---
## Enable Stripe Providers in a Region
Before customers can use Stripe to complete their purchases, you must enable the Stripe payment provider(s) in the region where you want to offer this payment method.
Refer to the [user guide](!user-guide!/settings/regions#edit-region-details) to learn how to edit a region and enable the Stripe payment provider.
---
## Setup Stripe Webhooks
For production applications, you must set up webhooks in Stripe that inform Medusa of changes and updates to payments. Refer to [Stripe's documentation](https://docs.stripe.com/webhooks#add-a-webhook-endpoint) on how to setup webhooks.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Pricing Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/price-lists) to learn how to manage price lists using the dashboard.
</Note>
Medusa has pricing related features available out-of-the-box through the Pricing Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Pricing Module.
<Note>

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Product Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/products) to learn how to manage products using the dashboard.
</Note>
Medusa has product related features available out-of-the-box through the Product Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Product Module.
<Note>

View File

@@ -15,6 +15,12 @@ export const metadata = {
In this guide, you'll learn about the inventory management features related to product variants.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/products/variants#manage-product-variant-inventory) to learn how to manage inventory of product variants.
</Note>
## Configure Inventory Management of Product Variants
A product variant, represented by the [ProductVariant](/references/product/models/ProductVariant) data model, has a `manage_inventory` field that's disabled by default. This field indicates whether you'll manage the inventory quantity of the product variant in the Medusa application. You can also keep `manage_inventory` disabled if you manage the product's inventory in an external system, such as an ERP.

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, you'll learn about campaigns.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/promotions/campaigns) to learn how to manage campaigns using the dashboard.
</Note>
## What is a Campaign?
A [Campaign](/references/promotion/models/Campaign) combines promotions under the same conditions, such as start and end dates.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this document, youll learn about the main promotion and rule concepts in the Promotion Module.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/promotions) to learn how to manage promotions using the dashboard.
</Note>
## What is a Promotion?
A promotion, represented by the [Promotion data model](/references/promotion/models/Promotion), is a discount that can be applied on cart items, shipping methods, or entire orders.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Promotion Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/promotions) to learn how to manage promotions using the dashboard.
</Note>
Medusa has promotion related features available out-of-the-box through the Promotion Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Promotion Module.
<Note>

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Region Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/regions) to learn how to manage regions using the dashboard.
</Note>
Medusa has region related features available out-of-the-box through the Region Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Region Module.
<Note>

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Sales Channel Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/sales-channels) to learn how to manage sales channels using the dashboard.
</Note>
Medusa has sales channel related features available out-of-the-box through the Sales Channel Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Sales Channel Module.
<Note>

View File

@@ -25,4 +25,4 @@ The Medusa application infers the associated sales channels and ensures that onl
## How to Create a Publishable API Key?
To create a publishable API key, either use the Medusa Admin or the [Admin API Routes](!api!/admin#publishable-api-keys).
To create a publishable API key, either use the [Medusa Admin](!user-guide!/settings/developer/publishable-api-keys) or the [Admin API Routes](!api!/admin#publishable-api-keys).

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Stock Location Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/locations-and-shipping) to learn how to manage stock locations using the dashboard.
</Note>
Medusa has stock location related features available out-of-the-box through the Stock Location Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Stock Location Module.
<Note>

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Store Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/store) to learn how to manage your store using the dashboard.
</Note>
Medusa has store related features available out-of-the-box through the Store Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Store Module.
<Note>

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the Tax Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/tax-regions) to learn how to manage tax regions using the dashboard.
</Note>
Medusa has tax related features available out-of-the-box through the Tax Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this Tax Module.
<Note>

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, youll learn about tax rates and rules.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/settings/tax-regions#manage-tax-rate-overrides) to learn how to manage tax rates using the dashboard.
</Note>
## What are Tax Rates?
A tax rate is a percentage amount used to calculate the tax amount for each taxable items price, such as line items or shipping methods, in a cart. The sum of all calculated tax amounts are then added to the carts total as a tax total.

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, youll learn about tax regions and how to use them with the Region Module.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/settings/tax-regions) to learn how to manage tax regions using the dashboard.
</Note>
## What is a Tax Region?
A tax region, represented by the [TaxRegion data model](/references/tax/models/TaxRegion), stores tax settings related to a region that your store serves.

View File

@@ -8,6 +8,12 @@ export const metadata = {
In this section of the documentation, you will find resources to learn more about the User Module and how to use it in your application.
<Note title="Looking for no-code docs?">
Refer to the [Medusa Admin User Guide](!user-guide!/settings/users) to learn how to manage users using the dashboard.
</Note>
Medusa has user related features available out-of-the-box through the User Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in commerce modules, such as this User Module.
<Note>

View File

@@ -6,6 +6,12 @@ export const metadata = {
In this document, learn the different ways to create a user using the User Module.
<Note title="Looking for no-code docs?">
Refer to this [Medusa Admin User Guide](!user-guide!/settings/users) to learn how to manage users using the dashboard.
</Note>
## Straightforward User Creation
To create a user, use the [create method of the User Modules main service](/references/user/create):

View File

@@ -31,6 +31,12 @@ export const metadata = {
In this guide, you'll learn how to integrate Medusa with ShipStation.
<Note title="Not a technical user?">
Refer your technical team to this guide to integrate ShipStation with your Medusa application. You can then enable it using the Medusa Admin as explained in [this user guide](!user-guide!/settings/locations-and-shipping/locations#manage-fulfillment-providers).
</Note>
When you install a Medusa application, you get a fully-fledged commerce platform with support for customizations. Medusa's [Fulfillment Module](../../../commerce-modules/fulfillment/page.mdx) provides fulfillment-related resources and functionalities in your store, but it delegates the processing and shipment of order fulfillments to providers that you can integrate.
[ShipStation](https://shipstation.com/) is a shipping toolbox that connects all your shipping providers within one platform. By integrating it with Medusa, you can allow customers to choose from different providers like DHL and FedEx and view price rates retrieved from ShipStation. Admin users will also process the order fulfillment using the ShipStation integration.

View File

@@ -10,6 +10,12 @@ You can integrate any third-party service to Medusa, including storage services,
Medusa provides integrations out-of-the-box that are listed here, but you can also create your own integrations, such as integrating ERP systems, as explained in [this guide](!docs!/learn/customization/integrate-systems).
<Note>
This section holds guides to help technical teams add integrations to a Medusa application. If you're not a technical user, refer your technical team to this documentation instead.
</Note>
## Auth
An Auth Module Provider authenticates users with their account on a third-party service.

View File

@@ -13,6 +13,12 @@ The Medusa application is made up of a Node.js server and an admin dashboard. Th
Our Next.js Starter is a good place to start building your storefront. The Next.js Starter storefront provides rich commerce features and a sleek design. Developers and businesses can use it as-is or build on top of it to tailor it for the business's unique use case, design, and customer experience.
<Note>
This guide helps technical users set up the Next.js Start storefront. If you're not a technical user, refer your technical team to this documentation instead.
</Note>
## Installation
### Approach 1: Install with Medusa Application

View File

@@ -28,6 +28,12 @@ import {
Explore Medusa's commerce modules, SDKs, configurations, recipes, and more.
<Note title="Don't code?">
Check out the [Meduse Admin User Guide](!user-guide!) to learn how to manage your store.
</Note>
<Note title="Getting started?">
Follow the [Medusa Docs](!docs!/learn) to become an advanced Medusa developer.

View File

@@ -18,4 +18,10 @@ Learn more about plugins and their difference from modules in [this documentatio
## Guides
<Note>
The sections in this guide help technical users build plugins in Medusa. If you're not a technical user, refer your technical team to this documentation instead.
</Note>
<ChildDocs showItems={["Guides"]} hideTitle />

View File

@@ -34,12 +34,20 @@ Use sales channels to set product availability per channel. In this case, create
You can create a sales channel through the Medusa Admin or Admin REST APIs.
<Card
href="!api!/admin#sales-channels_postsaleschannels"
title="Create Sales Channel"
text="Create the sales channel using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/settings/sales-channels",
title: "Using Medusa Admin",
text: "Create the sales channel using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#sales-channels_postsaleschannels",
title: "Using Admin API",
text: "Create the sales channel using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
---
@@ -56,21 +64,37 @@ You can create a publishable API key through the Medusa Admin or the Admin REST
### Create Key
<Card
href="!api!/admin#api-keys_postapikeys"
title="Create Publishable API Key"
text="Create the publishable API key using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/settings/developer/publishable-api-keys",
title: "Using Medusa Admin",
text: "Create the API key using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#api-keys_postapikeys",
title: "Using Admin API",
text: "Create the API key using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
### Associate Key with Sales Channel
<Card
href="!api!/admin#api-keys_postapikeysidsaleschannels"
title="Create Publishable API Key"
text="Create the publishable API key using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/settings/developer/publishable-api-keys#manage-publishable-api-keys-sales-channels",
title: "Using Medusa Admin",
text: "Associate the key with the sales channel using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#api-keys_postapikeysidsaleschannels",
title: "Using Admin API",
text: "Associate the key with the sales channel using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
---
@@ -80,21 +104,37 @@ You can create new products or add existing ones to the B2B sales channel using
### Create Products
<Card
href="!api!/admin#products_postproducts"
title="Create Products"
text="Create products using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/products/create",
title: "Using Medusa Admin",
text: "Create the products using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#products_postproducts",
title: "Using Admin API",
text: "Create the products using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
### Add Products to Sales Channel
<Card
href="!api!/admin#sales-channels_postsaleschannelsidproductsbatchadd"
title="Add to Sales Channel"
text="Add the products to the B2B sales channel using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/settings/sales-channels#manage-products-in-sales-channel",
title: "Using Medusa Admin",
text: "Create the products using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#sales-channels_postsaleschannelsidproductsbatchadd",
title: "Using Admin API",
text: "Add the products to the sales channel using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
---
@@ -110,25 +150,17 @@ You can create a B2B module that adds necessary data models to represent a B2B c
{
href: "!docs!/learn/fundamentals/modules",
title: "Create Module",
text: "Learn how to create a module in Medusa.",
text: "Learn how to create a module.",
icon: AcademicCapSolid,
},
{
href: "!docs!/learn/fundamentals/modules#1-create-data-model",
title: "Create Data Models",
text: "Learn how to create data models.",
href: "!docs!/learn/fundamentals/module-links",
title: "Define Module Links",
text: "Define links between data models.",
icon: AcademicCapSolid,
},
]} />
<Card
href="!docs!/learn/fundamentals/module-links"
title="Create Module Links"
text="Learn how to create links between modules."
icon={AcademicCapSolid}
className="mt-1"
/>
## Add B2B Customers
After adding your B2B customer group, add B2B customers and assign them to the B2B customer group.
@@ -137,21 +169,37 @@ You can do that through the Medusa Admin or Admin REST APIs.
### Create Customers
<Card
href="!api!/admin#customers_postcustomers"
title="Create Customers"
text="Create the customers using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/customers/manage",
title: "Using Medusa Admin",
text: "Create customers using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#customers_postcustomers",
title: "Using Admin API",
text: "Create customers using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
### Assign Customers to Groups
<Card
href="!api!/admin#customer-groups_postcustomergroupsidcustomersbatch"
title="Assign Customers to Groups"
text="Assign the customers to the B2B customer group using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/customers/manage#manage-customers-groups",
title: "Using Medusa Admin",
text: "Assign customer to groups using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#customer-groups_postcustomergroupsidcustomersbatch",
title: "Using Admin API",
text: "Assign customer to groups using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
---
@@ -161,12 +209,20 @@ Use price lists to set different prices for each B2B customer group, among other
You can create a price list using the Medusa Admin or the Admin REST APIs. Make sure to set the B2B customer group as a condition.
<Card
href="!api!/admin#price-lists_postpricelists"
title="Create Price List"
text="Create the price list using the REST APIs."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!user-guide!/price-lists/create",
title: "Using Medusa Admin",
text: "Create price list using the Medusa Admin.",
icon: UsersSolid,
},
{
href: "!api!/admin#price-lists_postpricelists",
title: "Using Admin API",
text: "Create price list using the REST APIs.",
icon: AcademicCapSolid,
},
]} />
---

View File

@@ -1,11 +1,10 @@
import { AcademicCapSolid, BoltSolid } from "@medusajs/icons"
import { BetaBadge } from "docs-ui"
export const metadata = {
title: `Commerce Automation Recipe`,
}
# {metadata.title} <BetaBadge text="Soon" tooltipText="This recipe is a work in progress." />
# {metadata.title}
This recipe provides the general steps to implement commerce automation with Medusa.
@@ -36,11 +35,11 @@ Customer support is essential to build a store's brand and customer loyalty. Thi
You can use the Notification Module to send notifications when an action is triggered, such as when a customer or their order is updated.
{/* <Note title="Tip">
<Note title="Tip">
The [Events reference](../../events-reference/page.mdx) shows an extensive list of events triggered by the each commerce module.
The [Events reference](../../events-reference/page.mdx) shows an extensive list of events triggered for each commerce module.
</Note> */}
</Note>
Medusa also provides Notification Module Providers that integrate with third-party services, such as SendGrid.
@@ -77,211 +76,6 @@ To implement that:
icon={AcademicCapSolid}
/>
<Details summaryContent="Example: Synchronizing products with a third-party service">
For example, create the file `src/workflows/sync-products.ts` with the following content:
export const syncProductsWorkflowHighlight = [
["20", "retrieveStoreStep", "A step that retrieves the store by its ID."],
["36", "retrieveProductsToUpdateStep", "A step that retrieves the products to update based on a last update date."],
["56", "syncProductsStep", "A step to sync the product with a third-party service."],
["59", "productSyncModuleService", "Assuming this is a custom module's main service that provides connection to the third-party service."],
["63", "productsBeforeSync", "Retrieve old product data from third-party service for compensation function."],
["68", "sync", "Sync the product data in the third-party service."],
["72", "", "Pass products data before sync to compensation function."],
["75", "", "A compensation function to revert the sync when an error occurs."],
["81", "sync", "Revert the product's data in the third-party service to its old data before the synchronization."],
["90", "updateStoreLastSyncStep", "A step to update the `last_sync_data` of the store."],
["96", "prevLastSyncDate", "Retrieve the previous value of `last_sync_date` to pass it to compensation function."],
["98", "update", "Update the `last_sync_date` of the store."],
["106", "", "Pass previous last sync date to compensation function."],
["109", "", "A compensation function to revert the update of `last_sync_data` if an error occurs."],
["125", "syncProductsWorkflow", "Define the workflow that uses the above steps."]
]
```ts title="src/workflows/sync-products.ts" highlights={syncProductsWorkflowHighlight} collapsibleLines="1-16" expandButtonLabel="Show Imports"
import {
Modules,
} from "@medusajs/framework/utils"
import {
IProductModuleService,
IStoreModuleService,
ProductDTO,
StoreDTO,
} from "@medusajs/framework/types"
import {
StepResponse,
createStep,
createWorkflow,
} from "@medusajs/framework/workflows-sdk"
type RetrieveStoreStepInput = {
id: string
}
const retrieveStoreStep = createStep(
"retrieve-store-step",
async ({ id }: RetrieveStoreStepInput, { container }) => {
const storeModuleService: IStoreModuleService =
container.resolve(Modules.STORE)
const store = await storeModuleService.retrieveStore(id)
return new StepResponse({ store })
}
)
type RetrieveProductsToUpdateStepInput = {
last_sync_date?: string
}
const retrieveProductsToUpdateStep = createStep(
"retrieve-products-to-update-step",
async ({ last_sync_date }: RetrieveProductsToUpdateStepInput, { container }) => {
const productModuleService: IProductModuleService =
container.resolve(Modules.PRODUCT)
const products = await productModuleService.listProducts({
updated_at: {
$gt: last_sync_date,
},
})
return new StepResponse({ products })
}
)
type SyncProductsStepInput = {
products: ProductDTO[]
}
const syncProductsStep = createStep(
"sync-products-step",
async ({ products }: SyncProductsStepInput, { container }) => {
const productSyncModuleService = container.resolve(
"productSyncModuleService"
)
const productsBeforeSync = await productSyncModuleService.listProductSyncs({
id: products.map((product) => product.id),
})
for (const product of products) {
await productSyncModuleService.sync(product)
}
return new StepResponse({}, {
products: productsBeforeSync,
})
},
async ({ products }, { container }) => {
const productSyncModuleService = container.resolve(
"productSyncModuleService"
)
for (const product of products) {
await productSyncModuleService.sync(product)
}
}
)
type UpdateStoreLastSyncStepInput = {
store: StoreDTO
}
const updateStoreLastSyncStep = createStep(
"update-store-last-sync-step",
async ({ store }: UpdateStoreLastSyncStepInput, { container }) => {
const storeModuleService: IStoreModuleService =
container.resolve(Modules.STORE)
const prevLastSyncDate = store.metadata.last_sync_date
await storeModuleService.updateStores(store.id, {
metadata: {
last_sync_date: (new Date()).toString(),
},
})
return new StepResponse({}, {
id: store.id,
last_sync_date: prevLastSyncDate,
})
},
async ({ id, last_sync_date }, { container }) => {
const storeModuleService: IStoreModuleService =
container.resolve(Modules.STORE)
await storeModuleService.updateStores(id, {
metadata: {
last_sync_date,
},
})
}
)
type SyncProductsWorkflowInput = {
store_id: string
}
export const syncProductsWorkflow = createWorkflow(
"sync-products-workflow",
function ({ store_id }: SyncProductsWorkflowInput) {
const { store } = retrieveStoreStep({
id: store_id,
})
const { products } = retrieveProductsToUpdateStep({
last_sync_date: store.metadata.last_sync_date,
})
syncProductsStep({
products,
})
updateStoreLastSyncStep({
store,
})
}
)
```
This creates a workflow with the following steps:
1. Retrieve the store by its ID.
2. Retrieve products to update based on the last date and time the products were synced. The last sync date is retrieved from the store's `metadata` property.
3. Sync the retrieved products with a third-party service. It's assumed that the connection to the third-party service is implemented within a custom module's main service.
4. Update the last sync date of the store to the current date.
Then, create a scheduled job at `src/jobs/sync-products.ts` that executes the workflow at the specified interval:
```ts
import { MedusaContainer } from "@medusajs/framework/types"
import {
syncProductsWorkflow,
} from "../workflows/sync-products"
export default async function syncProductsJob(
container: MedusaContainer
) {
await syncProductsWorkflow(container)
.run({
input: {
name: "John",
},
})
}
export const config = {
name: "sync-products",
// execute every minute
schedule: "0 0 * * *",
numberOfExecutions: 3,
}
```
</Details>
---
## Order Management Automation
@@ -290,20 +84,7 @@ Using Medusa's architecture and commerce features, you can automate a large amou
To handle events within an order flow and automate actions, create a subscriber. For example, create a subscriber that listens to the `order.placed` event and automatically creates a fulfillment if predefined conditions are met.
<Note type="soon">
The `order.placed` event is currently not emitted.
</Note>
<Card
href="!docs!/learn/fundamentals/events-and-subscribers"
title="Create a Subscriber"
text="Learn how to create a subscriber in Medusa."
icon={AcademicCapSolid}
/>
{/* <CardList items={[
<CardList items={[
{
href: "!docs!/learn/fundamentals/events-and-subscribers",
title: "Create a Subscriber",
@@ -316,7 +97,7 @@ The `order.placed` event is currently not emitted.
text: "Check out triggered events by each commerce module.",
icon: AcademicCapSolid,
},
]} /> */}
]} />
---
@@ -361,12 +142,6 @@ For example, to group customers with over twenty orders:
1. Create a subscriber that listens to the `order.placed` event.
2. If the customer has more than 20 orders, add them to the VIP customer group.
<Note type="soon">
The `order.placed` event is currently not emitted.
</Note>
<CardList items={[
{
href: "/commerce-modules/customer",
@@ -386,91 +161,14 @@ The `order.placed` event is currently not emitted.
text: "Learn how to create a subscriber in Medusa.",
icon: AcademicCapSolid,
},
{
href: "/events-reference",
title: "Events Reference",
text: "Check out triggered events by each commerce module.",
icon: AcademicCapSolid,
},
]} />
<Details summaryContent="Example: Add customer to VIP group">
Heres an example of a subscriber that listens to the `order.placed` event and checks whether the customer should be added to the VIP customer group based on their number of orders:
<Note type="soon">
The `order.placed` event is currently not emitted.
</Note>
```ts title="src/subscribers/add-custom-to-vip.ts" collapsibleLines="1-12" expandButtonLabel="Show Imports"
import type {
SubscriberArgs,
SubscriberConfig,
} from "@medusajs/framework"
import {
Modules,
} from "@medusajs/framework/utils"
import {
ICustomerModuleService,
IOrderModuleService,
} from "@medusajs/framework/types"
export default async function orderCreatedHandler({
event: { data },
container,
}: SubscriberArgs<{ id: string }>) {
const orderId = data.id
const orderModuleService: IOrderModuleService = container
.resolve(Modules.ORDER)
const customerModuleService:
ICustomerModuleService = container.resolve(
Modules.CUSTOMER
)
// check if VIP group exists
const vipGroup = await customerModuleService
.listCustomerGroups({
name: "VIP",
}, {
relations: ["customers"],
})
if (!vipGroup.length) {
return
}
// retrieve the order
const order = await orderModuleService.retrieveOrder(orderId)
if (!order ||
!order.customer_id ||
vipGroup[0].customers.find(
(customer) => customer.id === order.customer_id
) !== undefined) {
return
}
const [, count] = await orderModuleService.listAndCountOrders({
customer_id: order.customer_id,
})
if (count < 20) {
return
}
// add customer to VIP group
await customerModuleService.addCustomerToGroup({
customer_group_id: vipGroup[0].id,
customer_id: order.customer_id,
})
}
export const config: SubscriberConfig = {
event: "order.placed",
}
```
</Details>
---
## Marketing Automation
@@ -495,99 +193,3 @@ You can also create a scheduled job that checks whether the number of new produc
icon: AcademicCapSolid,
},
]} />
<Details summaryContent="Example: Sending a newsletter email after adding ten products">
For example, create the file `src/subscribers/send-products-newsletter.ts` with the following content:
export const newsletterHighlights = [
["32", "store", "Retrieve the first store in the application."],
["34", "products", "Retrieve the products created since the last newsletter send date."],
["40", "", "Check whether more than 10 products have been created before proceeding."],
["44", "customers", "Retrieve all customers, assuming they're considered subscribed."],
["46", "createNotifications", "Send a notification (newsletter) to each customer using the Notification Module."],
["49", '"email"', "Send the notification through the email channel."],
["50", '"newsletter_template"', "Specify the template name in the third-party service (for example, SendGrid)."],
["52", "products", "Pass the created products to the template."],
["57", "updateStores", "Update the store's `last_newsletter_send_date` property with the current date."]
]
```ts title="src/subscribers/send-products-newsletter.ts" highlights={newsletterHighlights} collapsibleLines="1-14" expandButtonLabel="Show Imports"
import type {
SubscriberArgs,
SubscriberConfig,
} from "@medusajs/framework"
import {
Modules,
} from "@medusajs/framework/utils"
import {
ICustomerModuleService,
IProductModuleService,
IStoreModuleService,
INotificationModuleService,
} from "@medusajs/framework/types"
export default async function productCreateHandler({
container,
}: SubscriberArgs<{ id: string }>) {
const productModuleService: IProductModuleService =
container.resolve(Modules.PRODUCT)
const storeModuleService: IStoreModuleService =
container.resolve(Modules.STORE)
const customerModuleService: ICustomerModuleService =
container.resolve(Modules.CUSTOMER)
const notificationModuleService:
INotificationModuleService = container.resolve(
Modules.NOTIFICATION
)
const store = (await storeModuleService.listStores())[0]
const products = await productModuleService.listProducts({
created_at: {
$gt: store.metadata.last_newsletter_send_date,
},
})
if (products.length < 10) {
return
}
const customers = await customerModuleService.listCustomers()
await notificationModuleService.createNotifications(
customers.map((customer) => ({
to: customer.email,
channel: "email",
template: "newsletter_template",
data: {
products,
},
}))
)
await storeModuleService.updateStores(store.id, {
metadata: {
last_newsletter_send_date: (new Date()).toString(),
},
})
}
export const config: SubscriberConfig = {
event: "product.created",
}
```
In the subscriber function, you:
1. Retrieve the first store in our application.
2. Retrieve products created since the last time a newsletter is sent. The last send date is stored in the store's `metadata` property.
3. If the count of last created products is less than 10, stop execution.
4. Retrieve all customers. Here, it's assumed that all customers are considered subscribed for simplicity.
5. Use the Notification Module to send a notification to the customer. This uses the Notification Module Provider configured for the `email` channel.
6. Update the store's `last_newsletter_send_date` with the current date.
</Details>

View File

@@ -1,5 +1,4 @@
import { AcademicCapSolid, BoltSolid, PuzzleSolid } from "@medusajs/icons"
import { LearningPath } from "docs-ui"
export const metadata = {
title: `Digital Products Recipe`,
@@ -70,8 +69,8 @@ Then, you can link your custom data model to data models from other modules. For
},
{
href: "!docs!/learn/fundamentals/module-links",
title: "Module Links",
text: "Learn how to link data models of different modules.",
title: "Define Module Links",
text: "Define links between data models.",
icon: AcademicCapSolid,
},
]} />
@@ -173,12 +172,6 @@ When a customer purchases a digital product, they should receive a link to downl
You can create or install a fulfillment module provider that handles the logic of fulfilling the digital product.
<Note type="soon">
Fulfillment providers are under development.
</Note>
<Card
href="/commerce-modules/fulfillment"
title="Fulfillment Module"

View File

@@ -1,5 +1,4 @@
import { AcademicCapSolid, UsersSolid, PuzzleSolid } from "@medusajs/icons"
import { LearningPath } from "docs-ui"
export const metadata = {
title: `Ecommerce Recipe`,

View File

@@ -1,5 +1,4 @@
import { AcademicCapSolid, UsersSolid } from "@medusajs/icons"
import { LearningPath } from "docs-ui"
export const metadata = {
title: `Multi-Region Store Recipe`,
@@ -27,89 +26,77 @@ Merchants specify the currency of each region. Multiple regions can have the sam
When customers view your products from a region, they see the prices in the regions currency.
### Tax rates and providers
### Tax Regions and Rates
Merchants define a default tax rate and tax rates for specific conditions (for example, for a particular set of products) in a region. Each region also has a different tax provider that calculates the taxes. You can use Medusa's default tax provider or create a custom tax provider.
Merchants can define tax regions, which are tax-related settings for a specific country. For each tax region, merchants can set a default tax rate and override it with tax rates for specific conditions, such as product types.
During checkout, the taxes are calculated based on the customer's region, tax configurations, and rates.
During checkout, Medusa calculates the taxes using the tax region settings of the customer's region and selected country in their shipping address.
<CardList items={[
{
href: "#",
title: "Manage Taxes in Medusa Admin",
text: "Manage taxes in Medusa Admin.",
href: "!user-guides!/settings/tax-regions",
title: "Using Medusa Admin",
text: "Learn how to manage tax regions in the Medusa Admin",
icon: UsersSolid,
badge: {
variant: "blue",
children: "Guide Soon"
}
},
{
href: "!api!/admin#tax-regions_posttaxregions",
title: "Manage Taxes Using Admin APIs",
text: "Manage tax settings using the Admin APIs.",
title: "Using Admin APIs",
text: "Manage tax regions using the Admin APIs.",
icon: AcademicCapSolid,
},
]} />
<Card
href="/references/tax/provider"
title="Create Tax Provider"
text="Learn how to create a tax provider."
icon={AcademicCapSolid}
className="mt-1"
/>
### Payment and Fulfillment Providers
Merchants choose which payment and fulfillment providers are available in each region. For example, one region can use Payment Provider A and B while another only uses Payment Provider B.
Merchants choose which payment providers are available in each region. For example, one region can use Payment Provider A and B while another only uses Payment Provider B. Merchants can also choose the fulfillment providers available in each stock location, and provide shipping options using the providers in those locations.
During checkout, customers only see the payment providers and shipping options configured for the region. This lets you give customers a localized experience that feels familiar and instills trust.
During checkout, customers only see the payment providers configured for the region, and they can only choose shipping options that can be used to fulfill items to their shipping address. This allows merchants to give customers a localized experience that feels familiar and instills trust.
Medusa provides official module providers for payment and fulfillment. You can also create custom module providers.
<CardList items={[
{
href: "#",
title: "Manage Providers in Medusa Admin",
text: "Learn how to manage providers in Medusa Admin.",
href: "!user-guide!/settings/regions",
title: "Manage Payment Providers in Medusa Admin",
text: "Learn how to manage providers in a region.",
icon: UsersSolid,
badge: {
variant: "blue",
children: "Guide Soon"
}
},
{
href: "/integrations",
title: "Integrations",
text: "Check out available integrations, including payment module providers.",
icon: AcademicCapSolid,
href: "!user-guide!/settings/locations-and-shipping/locations#manage-fulfillment-providers",
title: "Manage Fulfillment Providers in Medusa Admin",
text: "Learn how to manage providers in a location.",
icon: UsersSolid,
},
]} />
<Card
href="/integrations"
title="Integrations"
text="Check out available integrations, including payment module providers."
icon={AcademicCapSolid}
className="mt-1"
/>
---
## Prices Per Region and Currency
Merchants sets the price of a product price per currency and region. This also applies to adding sales or overriding prices for specific conditions using the Pricing Module's features.
Merchants set the price of a product's variants per currency and region. This also applies to adding sales or overriding prices for specific conditions.
Using the tax-inclusive feature, merchants can specify prices including taxes per currency and region. Medusa then calculates the tax amount applied to a line item in the cart based on the region's tax configurations.
Using the tax-inclusive feature, merchants can also specify prices including taxes per currency and region. Medusa then calculates the tax amount applied to a line item in the cart based on the region's tax configurations.
<CardList items={[
{
href: "#",
title: "Setting Product Prices in Medusa Admin",
text: "Learn how to set a product prices in Medusa Admin.",
href: "!user-guide!/products/variants#edit-product-variant-prices",
title: "Setting Variant Prices in Medusa Admin",
text: "Learn how to set a variant's prices in Medusa Admin.",
icon: UsersSolid,
badge: {
variant: "blue",
children: "Guide Soon"
}
},
{
href: "/storefront-development/products/price",
title: "Display Product Price in Storefront",
title: "Display Variant Price in Storefront",
text: "Learn how to display the correct product price in a storefront.",
icon: AcademicCapSolid,
},
@@ -119,32 +106,22 @@ Using the tax-inclusive feature, merchants can specify prices including taxes pe
## Multi-Warehouse Support
Medusa's Inventory and Stock Location Modules provide multi-warehouse features that allow merchants to manage inventory across different locations. Merchants then control which location an item in an order is fulfilled, allowing them to keep a correct inventory count across locations and sales channels.
Medusa's [Inventory](../../commerce-modules/inventory/page.mdx) and [Stock Location](../../commerce-modules/stock-location/page.mdx) Modules provide multi-warehouse features that allow merchants to manage inventory across different locations. Merchants then control which location an item in an order is fulfilled from, allowing them to keep a correct inventory count across locations and sales channels.
A multi-regional setup lets merchants manage their inventory through Medusa across the different regions they serve. Customers are always shown accurate inventory information based on the location associated with their sales channel.
{/* TODO add links */}
<CardList items={[
{
href: "#",
href: "!user-guide!/settings/locations-and-shipping/locations",
title: "Manage Stock Locations",
text: "Learn how to manage stock locations in the Medusa Admin.",
icon: UsersSolid,
badge: {
variant: "blue",
children: "Guide Soon"
}
},
{
href: "#",
href: "!user-guide!/inventory",
title: "Manage Inventory",
text: "Learn how to manage inventory in the Medusa Admin.",
icon: UsersSolid,
badge: {
variant: "blue",
children: "Guide Soon"
}
},
]} />
@@ -154,11 +131,19 @@ A multi-regional setup lets merchants manage their inventory through Medusa acro
By integrating a third-party Content Management Systems (CMS), you benefit from rich content features including managing your content in multiple languages. This allows you to cater to customers different languages in the regions you serve.
To integrate a third-party system, create a custom module whose main service connects to that third-party service.
To integrate a third-party system, create a custom module whose main service connects to that third-party service. You can also follow the [Sanity integration guide](../../integrations/guides/sanity/page.mdx) to integrate Sanity with Medusa.
<Card
href="!docs!/learn/fundamentals/modules"
title="Create a Module"
text="Learn how to create a module in Medusa."
icon={AcademicCapSolid}
/>
<CardList items={[
{
href: "!docs!/learn/fundamentals/modules",
title: "Create a Module",
text: "Learn how to create a module in Medusa.",
icon: AcademicCapSolid,
},
{
href: "/integrations/guides/sanity",
title: "Integrate Sanity",
text: "Follow a step-by-step guide to integrate Sanity.",
icon: AcademicCapSolid,
},
]} />

View File

@@ -1,5 +1,4 @@
import { AcademicCapSolid, BoltSolid } from "@medusajs/icons"
import { LearningPath } from "docs-ui"
export const metadata = {
title: `Omnichannel Commerce Recipe`,
@@ -15,7 +14,7 @@ Merchants selling across different channels need an efficient way to manage thei
Omnichannel commerce also provides customers a seamless shopping experience, regardless of where theyre shopping. Whether theyre buying your products from your online store, a marketplace like Amazon, or through social media, you provide them with a good experience and handle orders consistently.
Medusas modular architecture facilitates building omnichannel commerce, as your server and storefront arent tightly coupled. You can also use the Sales Channel Module's features to expand your business into other avenues like marketplaces and social commerce.
Medusas modular architecture facilitates building omnichannel commerce, as your server and storefront arent tightly coupled. You can also use the [Sales Channel Module](../../commerce-modules/sales-channel/page.mdx)'s features to expand your business into other avenues like marketplaces and social commerce.
---

View File

@@ -48,14 +48,16 @@ For example, you can support importing orders into Medusa through a custom API R
text: "Learn how to create a custom API Route.",
icon: AcademicCapSolid,
},
{
href: "!docs!/learn/fundamentals/scheduled-jobs",
title: "Create Scheduled Jobs",
text: "Learn how to create a scheduled job.",
icon: AcademicCapSolid,
}
]} />
<Card
href="!docs!/learn/fundamentals/scheduled-jobs"
title="Create Scheduled Jobs"
text="Learn how to create a scheduled job."
icon={AcademicCapSolid}
className="mt-1"
/>
---
## Route Orders to Third-party Fulfillment Services
@@ -68,12 +70,6 @@ Medusa uses the Fulfillment Module whenever a fulfillment action is performed, s
In addition, create a subscriber that listen to fulfillment-related events, such as the `order.fulfillment_created` event, to perform actions with the third-party fulfillment provider.
<Note type="soon">
Emitting of event `order.fulfillment_created` isn't implemented yet.
</Note>
<CardList itemsPerRow={2} items={[
{
href: "/references/fulfillment/provider",
@@ -82,26 +78,28 @@ Emitting of event `order.fulfillment_created` isn't implemented yet.
icon: AcademicCapSolid,
},
{
href: "!docs!/learn/fundamentals/events-and-subscribers",
title: "Create a Subscriber",
text: "Learn about create a subscriber",
href: "/commerce-modules/order/events",
title: "Order Events",
text: "Learn about the events emitted related to the Order Module",
icon: AcademicCapSolid,
}
},
]} />
<Card
href="!docs!/learn/fundamentals/events-and-subscribers"
title="Create a Subscriber"
text="Learn about create a subscriber"
icon={AcademicCapSolid}
className="mt-1"
/>
---
## Process Payment with Third-Party Providers
To integrate third-party payment providers with the Medusa application, create a payment module provider.
In addition, create a subscriber that listen to payment-related events, such as the `order.payment_captured` event, to perform actions in the third-party payment provider.
<Note type="soon">
Emitting of event `order.payment_captured` isn't implemented yet.
</Note>
In addition, create a subscriber that listen to payment-related events, such as the `payment.captured` event, to perform actions in the third-party payment provider.
<CardList itemsPerRow={2} items={[
{
@@ -111,13 +109,21 @@ Emitting of event `order.payment_captured` isn't implemented yet.
icon: AcademicCapSolid,
},
{
href: "!docs!/learn/fundamentals/events-and-subscribers",
title: "Create a Subscriber",
text: "Learn about create a subscriber",
href: "/commerce-modules/payment/events",
title: "Payment Events",
text: "Learn about the events emitted related to the Payment Module",
icon: AcademicCapSolid,
}
},
]} />
<Card
href="!docs!/learn/fundamentals/events-and-subscribers"
title="Create a Subscriber"
text="Learn about create a subscriber"
icon={AcademicCapSolid}
className="mt-1"
/>
---
## Track Inventory Across Sales Channels
@@ -153,24 +159,12 @@ When an order is placed, the item's quantity is reserved from the stock location
## Handle Returns, Exchanges, and Changes
<Note type="soon">
All types of order changes are coming soon.
</Note>
In Medusa, items in an order can be returned or exchanged; these can be created by the merchant or requested by the customer. A merchant can also edit an order to add, update, or delete items.
In Medusa, items in an order can be returned or exchanged. A merchant can also edit an order to add, update, or delete items.
When changes are made to an order by any of the mentioned actions, the changes are reflected on the order's totals and associated inventory. The integrated fulfillment and payment module providers are used if fulfillment or payment actions are required, such as fulfilling exchanged items.
Medusa also emits events related to these actions, such as `order.return_requested`. So, you can create a subscriber that listens to these events and perform asynchronous actions, such as communicating with third-party services.
<Note type="soon">
Emitting of event `order.return_requested` isn't implemented yet.
</Note>
<CardList items={[
{
href: "/commerce-modules/order/order-change",
@@ -179,9 +173,17 @@ Emitting of event `order.return_requested` isn't implemented yet.
icon: AcademicCapSolid,
},
{
href: "!docs!/learn/fundamentals/events-and-subscribers",
title: "Create a Subscriber",
text: "Learn about create a subscriber",
href: "/commerce-modules/order/events",
title: "Order Events",
text: "Learn about the events emitted related to the Order Module",
icon: AcademicCapSolid,
}
},
]} />
<Card
href="!docs!/learn/fundamentals/events-and-subscribers"
title="Create a Subscriber"
text="Learn about create a subscriber"
icon={AcademicCapSolid}
className="mt-1"
/>

View File

@@ -1,5 +1,4 @@
import { AcademicCapSolid, NextJs } from "@medusajs/icons"
import { LearningPath } from "docs-ui"
export const metadata = {
title: `Personalized Products Recipe`,
@@ -44,7 +43,7 @@ Two line items in the cart having different `metadata` attributes are not consid
</Note>
In more complex cases, you can create a custom module that stores and manages the personalization data models. You can also create a relationship between these data models and the `LineItem` data model.
In more complex cases, you can create a custom module that stores and manages the personalization data models. You can also create a link between these data models and the `LineItem` data model.
<CardList items={[
{
@@ -54,18 +53,18 @@ In more complex cases, you can create a custom module that stores and manages th
icon: AcademicCapSolid,
},
{
href: "!docs!/learn/fundamentals/modules#1-create-data-model",
title: "Create a Data Model",
text: "Learn how to create a data model.",
href: "!docs!/learn/fundamentals/module-links",
title: "Define Module Link",
text: "Define link between data models.",
icon: AcademicCapSolid,
}
},
]} />
---
## Build a Custom Storefront
Due to Medusa's modular architecture, there are no restrictions on the framework you use to build the storefront, or design and experience you provide customers. The storefront connects to the Medusa application using the Store API Routes.
Medusa's modular architecture removes any restrictions on the framework you use to build the storefront, or design and experience you provide customers. The storefront connects to the Medusa application using the Store API Routes.
You can build a unique experience around your products that focuses on the customers personalization capabilities.
@@ -121,7 +120,7 @@ The Fulfillment Module registers your fulfillment module provider to use it to f
<Card
href="/references/fulfillment/provider"
title="Create a Fulfillment Service"
title="Create a Fulfillment Provider"
text="Learn how to create a fulfillment provider in Medusa."
icon={AcademicCapSolid}
/>

View File

@@ -1,5 +1,4 @@
import { AcademicCapSolid } from "@medusajs/icons"
import { LearningPath } from "docs-ui"
export const metadata = {
title: `Point-of-Sale (POS) Recipe`,
@@ -68,50 +67,13 @@ To search through product variants by their barcode, create a custom API Route a
]}
/>
<Details summaryContent="Example: Search Products By Barcode API Route">
Heres an example of creating a custom API Route at `/store/pos/search-barcode` that searches product variants by a barcode:
```ts title="src/api/store/pos/search-barcode/route.ts" collapsibleLines="1-8" expandButtonLabel="Show Imports"
import type {
MedusaRequest,
MedusaResponse,
} from "@medusajs/framework/http"
import { MedusaError } from "@medusajs/framework/utils"
import { Modules } from "@medusajs/framework/utils"
import { IProductModuleService } from "@medusajs/framework/types"
export const GET = async (req: MedusaRequest, res: MedusaResponse) => {
const barcode = (req.query.barcode as string) || ""
if (!barcode) {
throw new MedusaError(MedusaError.Types.INVALID_DATA, "Barcode is required")
}
// get product service
const productModuleService: IProductModuleService = req.scope.resolve(
Modules.PRODUCT
)
// retrieve product variants by barcode
const productVariants = await productModuleService.listProductVariants({
// @ts-ignore
barcode,
})
res.json({
product_variants: productVariants,
})
}
```
</Details>
---
## Access Accurate Inventory Details
As you manage an online and offline store, it's essential to separate inventory quantity across different locations.
Medusa's Inventory, Stock Location, and Sales Channel modules allow merchants to manage the inventory items and their availability across locations and sales channels.
Medusa's [Inventory](../../commerce-modules/inventory/page.mdx), [Stock Location](../../commerce-modules/stock-location/page.mdx), and [Sales Channel](../../commerce-modules/sales-channel/page.mdx) modules allow merchants to manage the inventory items and their availability across locations and sales channels.
![Using Multi-warehouse features with POS](https://res.cloudinary.com/dza7lstvk/image/upload/v1709034731/Medusa%20Book/pos-multiwarehouse_r1z48x.jpg)
@@ -133,22 +95,24 @@ This also opens the door for other business opportunities, such as an endless ai
text: "Learn about the Stock Location Module.",
icon: AcademicCapSolid,
},
{
href: "/commerce-modules/sales-channel",
title: "Sales Channel Module",
text: "Learn about the Sales Channel Module.",
icon: AcademicCapSolid,
},
]}
/>
<Card
href="/commerce-modules/sales-channel"
title="Sales Channel Module"
text="Learn about the Sales Channel Module."
icon={AcademicCapSolid}
className="mt-1"
/>
---
## Build an Omni-channel Customer Experience
Using Medusa's Customer Module, you can retrieve a customer's details from the Medusa application and place an order on the POS under their account. The customer can then view their order details on their online profile as if they had placed the order online.
Using Medusa's [Customer Module](../../commerce-modules/customer/page.mdx), you can retrieve a customer's details from the Medusa application and place an order on the POS under their account. The customer can then view their order details on their online profile as if they had placed the order online.
In addition, using Medusa's Promotion Module, store operators can create promotions on the fly for customers using the POS system and apply them to their orders.
In addition, using Medusa's [Promotion Module](../../commerce-modules/promotion/page.mdx), store operators can create promotions on the fly for customers using the POS system and apply them to their orders.
You can also create custom modules to provide features for a better customer experience, such as a rewards system or loyalty points.
@@ -166,15 +130,17 @@ You can also create custom modules to provide features for a better customer exp
text: "Learn about the Promotion Module.",
icon: AcademicCapSolid,
},
{
href: "!docs!/learn/fundamentals/modules",
title: "Create a Module",
text: "Learn how to create a module.",
icon: AcademicCapSolid,
},
]}
/>
<Card
href="!docs!/learn/fundamentals/modules"
title="Create a Module"
text="Learn how to create a module."
icon={AcademicCapSolid}
className="mt-1"
/>
---
## Accept Payment, Place Order, and Use RMA Features

View File

@@ -1,5 +1,4 @@
import { AcademicCapSolid, Github } from "@medusajs/icons"
import { LearningPath } from "docs-ui"
export const metadata = {
title: `Subscriptions Recipe`,
@@ -77,7 +76,7 @@ Implementing the logic depends on your use case, but you'll mainly implement the
1. Create an API route in place of the [Complete Cart Store API Route](!api!/store#carts_postcartsidcomplete) that creates a subscription for the order.
2. Create a scheduled job that checks daily for subscriptions that need renewal.
3. Create a scheduled job that checks daily for subscriptions that are expired.
3. Create another scheduled job that checks daily for subscriptions that are expired.
<CardList itemsPerRow={2} items={[
{

View File

@@ -107,8 +107,6 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add a link to cart object in API reference (once available). */}
The response of the Create Cart API route has a `cart` field, which is a cart object.
Refer to the [Create Cart API reference](!api!/store#carts_postcarts) for details on other available request parameters.

View File

@@ -118,9 +118,7 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add a link to cart object in API reference (once available). */}
The response of the Retrieve Cart API route has a `cart` field, which is a cart object.
The response of the [Get Cart API](!api!/store#carts_getcartsid) route has a `cart` field, which is a cart object.
---

View File

@@ -146,11 +146,7 @@ export const highlights = [
</CodeTab>
</CodeTabs>
The List Customer Addresses API route accepts pagination parameters to paginate the address.
{/* TODO add a link to the address object */}
It returns in the response the `addresses` field, which is an array of addresses.
The [List Customer Addresses API route](!api!/store#customers_getcustomersmeaddresses) accepts pagination parameters to paginate the address. It returns in the response the `addresses` field, which is an array of addresses.
---

View File

@@ -142,6 +142,4 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add a link to product object in API reference (once available). */}
The response has a `products` field, which is an array of products.
The response has a `products` field, which is an array of [products](!api!/store#products_product_schema).

View File

@@ -96,9 +96,7 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add link to product colleciton object */}
The response has a `collections` field, which is an array of product collections.
The response has a `collections` field, which is an array of [product collections](!api!/store#collections_getcollections).
---

View File

@@ -144,6 +144,4 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add a link to product object in API reference (once available). */}
The response has a `products` field, which is an array of products.
The response has a `products` field, which is an array of [products](!api!/store#products_product_schema).

View File

@@ -104,9 +104,7 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add link to product colleciton object */}
The response has a `collection` field, which is a product collection object.
The response has a `collection` field, which is a [product collection object](!api!/store#collections_collection_schema).
---

View File

@@ -97,9 +97,7 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add a link to product object in API reference (once available). */}
The response has a `products` field, which is an array of products.
The response has a `products` field, which is an array of [products](!api!/store#products_product_schema).
---

View File

@@ -121,9 +121,7 @@ export const highlights = [
</CodeTab>
</CodeTabs>
{/* TODO add a link to product object in API reference (once available). */}
The response has a `product` field, which is a product object.
The response has a `product` field, which is a [product object](!api!/store#products_product_schema).
---

View File

@@ -24,9 +24,7 @@ Publishable API keys are associated with sales channels. Then, when the publisha
## How to Create a Publishable API Key?
{/* TODO replace link with admin how-to guide once available. */}
You create a publishable API key either using the Medusa Admin or the [Admin API routes](!api!/admin#api-keys_postapikeys).
You create a publishable API key either using the [Medusa Admin](!user-guide!/settings/developer/publishable-api-keys) or the [Admin API routes](!api!/admin#api-keys_postapikeys).
For example, using the [Create API Key API Route](!api!/admin#api-keys_postapikeys):

View File

@@ -6,4 +6,10 @@ export const metadata = {
# {metadata.title}
<Note>
The following troubleshooting guides are intended for technical users. If you're not a technical user, refer your technical team to this documentation.
</Note>
<ChildDocs />

View File

@@ -98,11 +98,3 @@ To opt out of analytics collection in the Medusa Admin, set the following enviro
```bash
MEDUSA_FF_ANALYTICS=false
```
{/* TODO check steps after admin is ready */}
{/* 2. Alternatively, on your Medusa Admin, you can disable tracking by following these steps:
1. Go to Settings → Personal Information.
2. In the Usage insights section, click on the “Edit preferences” button.
3. Enable the “Opt out of sharing my usage data” toggle.
4. Click on the “Submit and close” button. */}

View File

@@ -13,91 +13,91 @@ export const generatedEditDates = {
"app/commerce-modules/cart/page.mdx": "2025-01-09T13:41:05.278Z",
"app/commerce-modules/currency/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/currency/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/currency/page.mdx": "2025-01-09T13:41:04.697Z",
"app/commerce-modules/currency/page.mdx": "2025-02-26T11:18:00.338Z",
"app/commerce-modules/customer/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/customer/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/customer/customer-accounts/page.mdx": "2024-10-08T12:20:44.769Z",
"app/commerce-modules/customer/page.mdx": "2025-01-09T13:41:05.014Z",
"app/commerce-modules/customer/customer-accounts/page.mdx": "2025-02-26T11:17:42.327Z",
"app/commerce-modules/customer/page.mdx": "2025-02-26T11:18:00.342Z",
"app/commerce-modules/fulfillment/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/fulfillment/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/fulfillment/concepts/page.mdx": "2024-06-19T13:02:16+00:00",
"app/commerce-modules/fulfillment/fulfillment-provider/page.mdx": "2024-10-08T14:34:16.019Z",
"app/commerce-modules/fulfillment/fulfillment-provider/page.mdx": "2025-02-26T11:21:56.242Z",
"app/commerce-modules/fulfillment/item-fulfillment/page.mdx": "2024-10-08T14:38:15.496Z",
"app/commerce-modules/fulfillment/module-options/page.mdx": "2024-10-15T12:51:56.118Z",
"app/commerce-modules/fulfillment/shipping-option/page.mdx": "2024-10-08T14:36:02.660Z",
"app/commerce-modules/fulfillment/page.mdx": "2025-01-09T13:41:05.614Z",
"app/commerce-modules/fulfillment/page.mdx": "2025-02-26T11:18:00.354Z",
"app/commerce-modules/inventory/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/inventory/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/inventory/concepts/page.mdx": "2025-02-13T12:37:28.918Z",
"app/commerce-modules/inventory/inventory-in-flows/page.mdx": "2025-01-08T12:21:12.157Z",
"app/commerce-modules/inventory/page.mdx": "2025-01-09T13:41:05.212Z",
"app/commerce-modules/inventory/page.mdx": "2025-02-26T11:18:00.353Z",
"app/commerce-modules/order/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/order/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/order/claim/page.mdx": "2024-10-09T10:11:12.090Z",
"app/commerce-modules/order/claim/page.mdx": "2025-02-26T11:23:55.003Z",
"app/commerce-modules/order/concepts/page.mdx": "2024-10-09T10:12:49.399Z",
"app/commerce-modules/order/exchange/page.mdx": "2024-10-09T10:15:52.698Z",
"app/commerce-modules/order/exchange/page.mdx": "2025-02-26T11:23:29.845Z",
"app/commerce-modules/order/order-versioning/page.mdx": "2024-10-09T07:41:22.201Z",
"app/commerce-modules/order/promotion-adjustments/page.mdx": "2024-10-09T10:19:19.333Z",
"app/commerce-modules/order/return/page.mdx": "2024-10-09T10:19:40.731Z",
"app/commerce-modules/order/return/page.mdx": "2025-02-26T11:22:49.675Z",
"app/commerce-modules/order/tax-lines/page.mdx": "2024-10-09T10:22:49.335Z",
"app/commerce-modules/order/transactions/page.mdx": "2024-10-09T10:23:36.485Z",
"app/commerce-modules/order/page.mdx": "2025-01-09T13:41:05.344Z",
"app/commerce-modules/order/page.mdx": "2025-02-26T11:18:00.361Z",
"app/commerce-modules/payment/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/payment/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/payment/module-options/page.mdx": "2024-10-15T12:51:40.574Z",
"app/commerce-modules/payment/payment/page.mdx": "2024-10-09T10:59:08.463Z",
"app/commerce-modules/payment/payment-collection/page.mdx": "2024-10-09T10:56:49.510Z",
"app/commerce-modules/payment/payment-flow/page.mdx": "2025-01-16T10:43:25.958Z",
"app/commerce-modules/payment/payment-provider/stripe/page.mdx": "2024-12-16T13:21:03.554Z",
"app/commerce-modules/payment/payment-provider/page.mdx": "2024-10-09T11:07:27.269Z",
"app/commerce-modules/payment/payment-provider/stripe/page.mdx": "2025-02-26T11:31:21.090Z",
"app/commerce-modules/payment/payment-provider/page.mdx": "2025-02-26T11:25:50.645Z",
"app/commerce-modules/payment/payment-session/page.mdx": "2024-10-09T10:58:00.960Z",
"app/commerce-modules/payment/webhook-events/page.mdx": "2024-11-19T11:45:02.167Z",
"app/commerce-modules/payment/page.mdx": "2025-01-31T09:38:17.917Z",
"app/commerce-modules/payment/page.mdx": "2025-02-26T11:18:00.361Z",
"app/commerce-modules/pricing/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/pricing/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/pricing/concepts/page.mdx": "2024-10-09T13:37:25.678Z",
"app/commerce-modules/pricing/price-calculation/page.mdx": "2024-10-09T13:43:14.038Z",
"app/commerce-modules/pricing/price-rules/page.mdx": "2024-10-09T13:38:47.112Z",
"app/commerce-modules/pricing/tax-inclusive-pricing/page.mdx": "2024-10-09T13:48:23.261Z",
"app/commerce-modules/pricing/page.mdx": "2025-01-09T13:41:04.553Z",
"app/commerce-modules/pricing/page.mdx": "2025-02-26T11:18:00.362Z",
"app/commerce-modules/product/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/product/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/product/guides/price/page.mdx": "2024-12-25T15:10:37.730Z",
"app/commerce-modules/product/guides/price-with-taxes/page.mdx": "2024-12-25T15:10:40.879Z",
"app/commerce-modules/product/page.mdx": "2025-01-09T13:41:04.786Z",
"app/commerce-modules/product/page.mdx": "2025-02-26T11:18:00.365Z",
"app/commerce-modules/promotion/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/promotion/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/promotion/actions/page.mdx": "2024-10-09T14:49:01.645Z",
"app/commerce-modules/promotion/application-method/page.mdx": "2024-06-26T07:55:59+00:00",
"app/commerce-modules/promotion/campaign/page.mdx": "2024-05-29T11:08:06+00:00",
"app/commerce-modules/promotion/concepts/page.mdx": "2025-01-13T11:34:55.221Z",
"app/commerce-modules/promotion/page.mdx": "2025-01-09T13:41:04.946Z",
"app/commerce-modules/promotion/campaign/page.mdx": "2025-02-26T11:32:24.484Z",
"app/commerce-modules/promotion/concepts/page.mdx": "2025-02-26T11:31:54.391Z",
"app/commerce-modules/promotion/page.mdx": "2025-02-26T11:18:00.366Z",
"app/commerce-modules/region/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/region/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/region/page.mdx": "2025-01-09T13:41:05.146Z",
"app/commerce-modules/region/page.mdx": "2025-02-26T11:18:00.368Z",
"app/commerce-modules/sales-channel/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/sales-channel/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/sales-channel/publishable-api-keys/page.mdx": "2024-10-15T14:21:38.353Z",
"app/commerce-modules/sales-channel/page.mdx": "2025-01-09T13:41:04.880Z",
"app/commerce-modules/sales-channel/publishable-api-keys/page.mdx": "2025-02-26T11:33:40.415Z",
"app/commerce-modules/sales-channel/page.mdx": "2025-02-26T11:18:00.368Z",
"app/commerce-modules/stock-location/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/stock-location/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/stock-location/concepts/page.mdx": "2024-10-15T14:32:21.875Z",
"app/commerce-modules/stock-location/page.mdx": "2025-01-09T13:41:05.080Z",
"app/commerce-modules/stock-location/page.mdx": "2025-02-26T11:18:00.382Z",
"app/commerce-modules/store/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/store/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/store/page.mdx": "2025-01-09T13:41:04.629Z",
"app/commerce-modules/store/page.mdx": "2025-02-26T11:18:00.382Z",
"app/commerce-modules/tax/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/tax/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/tax/module-options/page.mdx": "2024-10-15T14:35:46.117Z",
"app/commerce-modules/tax/tax-calculation-with-provider/page.mdx": "2024-10-15T14:43:00.700Z",
"app/commerce-modules/tax/tax-rates-and-rules/page.mdx": "2024-10-15T14:38:06.889Z",
"app/commerce-modules/tax/tax-region/page.mdx": "2024-10-15T14:36:47.028Z",
"app/commerce-modules/tax/page.mdx": "2025-01-09T13:41:05.680Z",
"app/commerce-modules/tax/tax-rates-and-rules/page.mdx": "2025-02-26T11:35:15.214Z",
"app/commerce-modules/tax/tax-region/page.mdx": "2025-02-26T11:34:21.259Z",
"app/commerce-modules/tax/page.mdx": "2025-02-26T11:18:00.382Z",
"app/commerce-modules/user/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/user/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/user/module-options/page.mdx": "2024-09-30T08:43:53.171Z",
"app/commerce-modules/user/user-creation-flows/page.mdx": "2024-10-15T14:51:37.311Z",
"app/commerce-modules/user/page.mdx": "2025-01-09T13:41:05.543Z",
"app/commerce-modules/user/user-creation-flows/page.mdx": "2025-02-26T11:35:54.685Z",
"app/commerce-modules/user/page.mdx": "2025-02-26T11:18:00.382Z",
"app/commerce-modules/page.mdx": "2024-12-23T14:38:21.064Z",
"app/contribution-guidelines/docs/page.mdx": "2024-12-12T11:06:12.250Z",
"app/create-medusa-app/page.mdx": "2025-01-16T10:00:25.975Z",
@@ -105,25 +105,25 @@ export const generatedEditDates = {
"app/deployment/medusa-application/railway/page.mdx": "2025-02-24T07:35:43.421Z",
"app/deployment/storefront/vercel/page.mdx": "2025-01-06T12:19:31.142Z",
"app/deployment/page.mdx": "2024-11-25T14:31:45.277Z",
"app/integrations/page.mdx": "2024-12-16T16:46:12.395Z",
"app/integrations/page.mdx": "2025-02-26T11:37:17.771Z",
"app/medusa-cli/page.mdx": "2024-08-28T11:25:32.382Z",
"app/medusa-container-resources/page.mdx": "2025-01-06T11:19:35.623Z",
"app/medusa-workflows-reference/page.mdx": "2025-01-20T08:21:29.962Z",
"app/nextjs-starter/page.mdx": "2025-01-06T12:19:31.143Z",
"app/recipes/b2b/page.mdx": "2025-01-29T11:35:23.247Z",
"app/recipes/commerce-automation/page.mdx": "2024-10-16T08:52:01.585Z",
"app/nextjs-starter/page.mdx": "2025-02-26T11:37:47.137Z",
"app/recipes/b2b/page.mdx": "2025-02-26T12:36:59.567Z",
"app/recipes/commerce-automation/page.mdx": "2025-02-26T12:38:15.404Z",
"app/recipes/digital-products/examples/standard/page.mdx": "2025-02-13T15:24:15.868Z",
"app/recipes/digital-products/page.mdx": "2025-01-06T11:19:35.623Z",
"app/recipes/ecommerce/page.mdx": "2024-10-22T11:01:01.218Z",
"app/recipes/digital-products/page.mdx": "2025-02-26T12:37:12.721Z",
"app/recipes/ecommerce/page.mdx": "2025-02-26T12:20:52.092Z",
"app/recipes/marketplace/examples/vendors/page.mdx": "2025-02-20T07:20:47.970Z",
"app/recipes/marketplace/page.mdx": "2024-10-03T13:07:44.153Z",
"app/recipes/multi-region-store/page.mdx": "2024-10-03T13:07:13.813Z",
"app/recipes/omnichannel/page.mdx": "2024-10-03T13:07:14.384Z",
"app/recipes/oms/page.mdx": "2024-07-01T10:21:19+03:00",
"app/recipes/personalized-products/page.mdx": "2024-10-03T13:07:44.153Z",
"app/recipes/pos/page.mdx": "2024-10-03T13:07:13.964Z",
"app/recipes/multi-region-store/page.mdx": "2025-02-26T12:38:50.292Z",
"app/recipes/omnichannel/page.mdx": "2025-02-26T12:22:08.331Z",
"app/recipes/oms/page.mdx": "2025-02-26T12:41:00.030Z",
"app/recipes/personalized-products/page.mdx": "2025-02-26T12:41:48.547Z",
"app/recipes/pos/page.mdx": "2025-02-26T12:42:52.949Z",
"app/recipes/subscriptions/examples/standard/page.mdx": "2025-02-11T14:21:09.533Z",
"app/recipes/subscriptions/page.mdx": "2024-10-03T13:07:44.155Z",
"app/recipes/subscriptions/page.mdx": "2025-02-26T12:31:49.933Z",
"app/recipes/page.mdx": "2024-07-11T15:56:41+00:00",
"app/service-factory-reference/methods/create/page.mdx": "2024-07-31T17:01:33+03:00",
"app/service-factory-reference/methods/delete/page.mdx": "2024-07-31T17:01:33+03:00",
@@ -136,9 +136,9 @@ export const generatedEditDates = {
"app/service-factory-reference/tips/filtering/page.mdx": "2024-07-31T17:01:33+03:00",
"app/service-factory-reference/page.mdx": "2024-07-26T14:40:56+00:00",
"app/storefront-development/cart/context/page.mdx": "2025-01-06T16:00:34.296Z",
"app/storefront-development/cart/create/page.mdx": "2025-01-06T15:57:04.923Z",
"app/storefront-development/cart/create/page.mdx": "2025-02-26T11:44:58.922Z",
"app/storefront-development/cart/manage-items/page.mdx": "2024-12-26T15:59:48.445Z",
"app/storefront-development/cart/retrieve/page.mdx": "2025-01-06T15:58:13.885Z",
"app/storefront-development/cart/retrieve/page.mdx": "2025-02-26T11:45:30.920Z",
"app/storefront-development/cart/update/page.mdx": "2025-01-06T16:01:33.752Z",
"app/storefront-development/cart/page.mdx": "2024-06-11T11:56:37+03:00",
"app/storefront-development/checkout/address/page.mdx": "2025-02-03T16:32:02.682Z",
@@ -148,7 +148,7 @@ export const generatedEditDates = {
"app/storefront-development/checkout/payment/page.mdx": "2025-01-02T08:47:20.531Z",
"app/storefront-development/checkout/shipping/page.mdx": "2025-01-13T11:31:35.361Z",
"app/storefront-development/checkout/page.mdx": "2024-06-12T19:46:06+02:00",
"app/storefront-development/customers/addresses/page.mdx": "2025-01-06T16:59:53.878Z",
"app/storefront-development/customers/addresses/page.mdx": "2025-02-26T11:46:18.629Z",
"app/storefront-development/customers/context/page.mdx": "2024-12-19T16:38:43.703Z",
"app/storefront-development/customers/log-out/page.mdx": "2024-12-19T16:31:28.347Z",
"app/storefront-development/customers/login/page.mdx": "2024-12-19T16:31:34.194Z",
@@ -158,19 +158,19 @@ export const generatedEditDates = {
"app/storefront-development/customers/page.mdx": "2024-06-13T12:21:54+03:00",
"app/storefront-development/products/categories/list/page.mdx": "2024-12-19T16:33:06.547Z",
"app/storefront-development/products/categories/nested-categories/page.mdx": "2025-01-06T15:50:56.324Z",
"app/storefront-development/products/categories/products/page.mdx": "2025-01-06T15:46:26.562Z",
"app/storefront-development/products/categories/products/page.mdx": "2025-02-26T11:46:56.674Z",
"app/storefront-development/products/categories/retrieve/page.mdx": "2025-01-06T15:44:45.608Z",
"app/storefront-development/products/categories/page.mdx": "2024-06-11T19:55:56+02:00",
"app/storefront-development/products/collections/list/page.mdx": "2024-12-19T16:33:43.902Z",
"app/storefront-development/products/collections/products/page.mdx": "2025-01-06T15:55:34.444Z",
"app/storefront-development/products/collections/retrieve/page.mdx": "2025-01-06T15:53:54.960Z",
"app/storefront-development/products/collections/list/page.mdx": "2025-02-26T11:47:22.010Z",
"app/storefront-development/products/collections/products/page.mdx": "2025-02-26T11:47:46.882Z",
"app/storefront-development/products/collections/retrieve/page.mdx": "2025-02-26T11:48:08.506Z",
"app/storefront-development/products/collections/page.mdx": "2024-06-11T19:55:56+02:00",
"app/storefront-development/products/list/page.mdx": "2024-12-19T16:34:23.521Z",
"app/storefront-development/products/list/page.mdx": "2025-02-26T11:48:38.941Z",
"app/storefront-development/products/price/examples/sale-price/page.mdx": "2025-01-06T15:39:33.475Z",
"app/storefront-development/products/price/examples/show-price/page.mdx": "2025-01-06T15:37:57.350Z",
"app/storefront-development/products/price/examples/tax-price/page.mdx": "2025-01-06T15:40:56.854Z",
"app/storefront-development/products/price/page.mdx": "2024-12-19T16:35:19.471Z",
"app/storefront-development/products/retrieve/page.mdx": "2025-01-06T15:35:38.192Z",
"app/storefront-development/products/retrieve/page.mdx": "2025-02-26T11:48:25.232Z",
"app/storefront-development/products/variants/page.mdx": "2025-01-06T15:36:41.374Z",
"app/storefront-development/products/page.mdx": "2024-06-11T19:55:56+02:00",
"app/storefront-development/regions/context/page.mdx": "2024-12-19T16:36:07.406Z",
@@ -187,18 +187,18 @@ export const generatedEditDates = {
"app/troubleshooting/errors-installing-cli/page.mdx": "2024-05-03T17:36:38+03:00",
"app/troubleshooting/general-errors/page.mdx": "2024-05-03T17:36:38+03:00",
"app/troubleshooting/s3/page.mdx": "2025-01-24T13:47:24.994Z",
"app/troubleshooting/page.mdx": "2024-07-18T08:57:11+02:00",
"app/usage/page.mdx": "2024-05-13T18:55:11+03:00",
"app/page.mdx": "2025-02-25T07:36:59.541Z",
"app/troubleshooting/page.mdx": "2025-02-26T11:40:54.162Z",
"app/usage/page.mdx": "2025-02-26T11:49:39.213Z",
"app/page.mdx": "2025-02-26T10:23:58.440Z",
"app/commerce-modules/auth/_events/_events-table/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/auth/auth-flows/page.mdx": "2025-01-13T11:31:35.361Z",
"app/commerce-modules/auth/_events/page.mdx": "2024-07-03T19:27:13+03:00",
"app/commerce-modules/auth/auth-identity-and-actor-types/page.mdx": "2025-01-07T09:02:27.235Z",
"app/commerce-modules/api-key/page.mdx": "2025-01-09T13:41:04.492Z",
"app/commerce-modules/api-key/page.mdx": "2025-02-26T11:18:00.337Z",
"app/commerce-modules/auth/create-actor-type/page.mdx": "2024-12-25T13:26:27.176Z",
"app/architectural-modules/page.mdx": "2025-01-08T12:13:50.333Z",
"app/architectural-modules/workflow-engine/redis/page.mdx": "2024-10-15T12:50:59.507Z",
"app/architectural-modules/notification/sendgrid/page.mdx": "2024-10-15T12:51:25.569Z",
"app/architectural-modules/notification/sendgrid/page.mdx": "2025-02-26T11:43:13.143Z",
"app/commerce-modules/api-key/concepts/page.mdx": "2024-10-07T13:59:37.529Z",
"app/architectural-modules/workflow-engine/page.mdx": "2025-01-08T12:16:04.157Z",
"app/_events-reference/page.mdx": "2024-07-03T19:27:13+03:00",
@@ -947,7 +947,7 @@ export const generatedEditDates = {
"references/order/IOrderModuleService/methods/order.IOrderModuleService.updateOrderChangeActions/page.mdx": "2025-01-13T18:05:56.207Z",
"references/types/ModulesSdkTypes/types/types.ModulesSdkTypes.RemoteQueryFunction/page.mdx": "2025-02-24T10:48:38.938Z",
"references/types/types.CommonTypes/page.mdx": "2025-01-13T17:30:27.580Z",
"app/storefront-development/publishable-api-keys/page.mdx": "2024-12-25T16:00:18.474Z",
"app/storefront-development/publishable-api-keys/page.mdx": "2025-02-26T11:49:00.515Z",
"references/api_key/types/api_key.ExpandScalar/page.mdx": "2024-09-17T00:10:59.563Z",
"references/api_key/types/api_key.FilterQuery/page.mdx": "2024-11-27T16:33:40.706Z",
"references/api_key/types/api_key.FilterValue/page.mdx": "2024-09-17T00:10:59.571Z",
@@ -2107,7 +2107,7 @@ export const generatedEditDates = {
"app/admin-components/layouts/single-column/page.mdx": "2024-10-07T11:16:06.435Z",
"app/admin-components/layouts/two-column/page.mdx": "2024-10-07T11:16:10.092Z",
"app/admin-components/components/forms/page.mdx": "2024-10-09T12:48:04.229Z",
"app/commerce-modules/auth/reset-password/page.mdx": "2024-12-25T13:26:32.595Z",
"app/commerce-modules/auth/reset-password/page.mdx": "2025-02-26T11:18:00.391Z",
"app/storefront-development/customers/reset-password/page.mdx": "2024-12-19T16:32:00.724Z",
"app/commerce-modules/api-key/links-to-other-modules/page.mdx": "2025-01-06T11:19:22.450Z",
"app/commerce-modules/cart/extend/page.mdx": "2024-12-25T12:48:59.149Z",
@@ -2120,7 +2120,7 @@ export const generatedEditDates = {
"app/commerce-modules/product/links-to-other-modules/page.mdx": "2025-02-11T12:09:46.420Z",
"app/commerce-modules/promotion/extend/page.mdx": "2024-12-11T09:07:24.137Z",
"app/commerce-modules/promotion/links-to-other-modules/page.mdx": "2025-01-06T11:19:35.608Z",
"app/commerce-modules/order/edit/page.mdx": "2024-10-09T08:50:05.334Z",
"app/commerce-modules/order/edit/page.mdx": "2025-02-26T11:24:28.852Z",
"app/commerce-modules/order/links-to-other-modules/page.mdx": "2025-01-06T11:19:35.604Z",
"app/commerce-modules/order/order-change/page.mdx": "2024-10-09T09:59:40.745Z",
"app/commerce-modules/payment/links-to-other-modules/page.mdx": "2025-01-31T09:22:05.326Z",
@@ -5584,7 +5584,7 @@ export const generatedEditDates = {
"references/types/DmlTypes/types/types.DmlTypes.RelationshipTypes/page.mdx": "2024-12-10T14:54:55.435Z",
"app/recipes/commerce-automation/restock-notification/page.mdx": "2025-02-11T13:29:56.235Z",
"app/troubleshooting/workflow-errors/page.mdx": "2024-12-11T08:44:36.598Z",
"app/integrations/guides/shipstation/page.mdx": "2025-01-07T14:40:42.561Z",
"app/integrations/guides/shipstation/page.mdx": "2025-02-26T11:21:46.879Z",
"app/nextjs-starter/guides/customize-stripe/page.mdx": "2024-12-25T14:48:55.877Z",
"references/core_flows/Cart/Workflows_Cart/functions/core_flows.Cart.Workflows_Cart.listShippingOptionsForCartWithPricingWorkflow/page.mdx": "2025-02-24T10:48:27.556Z",
"references/core_flows/Cart/Workflows_Cart/variables/core_flows.Cart.Workflows_Cart.listShippingOptionsForCartWithPricingWorkflowId/page.mdx": "2024-12-17T16:57:22.044Z",
@@ -5756,7 +5756,7 @@ export const generatedEditDates = {
"references/types/StockLocationTypes/types/types.StockLocationTypes.UpdateStockLocationAddressInput/page.mdx": "2025-01-07T12:54:23.057Z",
"references/types/StockLocationTypes/types/types.StockLocationTypes.UpsertStockLocationAddressInput/page.mdx": "2025-01-07T12:54:23.058Z",
"app/storefront-development/guides/express-checkout/page.mdx": "2025-02-12T07:21:55.821Z",
"app/commerce-modules/inventory/inventory-kit/page.mdx": "2025-01-13T11:31:35.362Z",
"app/commerce-modules/inventory/inventory-kit/page.mdx": "2025-02-26T11:18:00.353Z",
"app/commerce-modules/api-key/workflows/page.mdx": "2025-01-09T13:41:46.573Z",
"app/commerce-modules/api-key/js-sdk/page.mdx": "2025-01-09T12:04:39.787Z",
"app/commerce-modules/auth/js-sdk/page.mdx": "2025-01-09T13:27:54.016Z",
@@ -5861,7 +5861,7 @@ export const generatedEditDates = {
"references/core_flows/types/core_flows.ValidatePaymentsRefundStepInput/page.mdx": "2025-01-17T16:43:26.128Z",
"references/core_flows/types/core_flows.ValidateRefundStepInput/page.mdx": "2025-02-24T10:48:34.159Z",
"app/plugins/guides/wishlist/page.mdx": "2025-02-20T17:13:30.276Z",
"app/plugins/page.mdx": "2025-01-22T09:36:37.745Z",
"app/plugins/page.mdx": "2025-02-26T11:39:25.709Z",
"app/admin-components/components/data-table/page.mdx": "2025-01-22T16:01:01.279Z",
"references/order_models/variables/order_models.Order/page.mdx": "2025-01-27T11:43:58.788Z",
"references/order_models/variables/order_models.OrderAddress/page.mdx": "2025-01-27T11:43:58.773Z",
@@ -5900,7 +5900,7 @@ export const generatedEditDates = {
"references/core_flows/Order/Steps_Order/variables/core_flows.Order.Steps_Order.updateOrderChangesStepId/page.mdx": "2025-01-27T11:43:49.278Z",
"app/commerce-modules/payment/account-holder/page.mdx": "2025-01-31T09:37:41.595Z",
"app/troubleshooting/test-errors/page.mdx": "2025-01-31T13:08:42.639Z",
"app/commerce-modules/product/variant-inventory/page.mdx": "2025-02-13T12:31:51.593Z",
"app/commerce-modules/product/variant-inventory/page.mdx": "2025-02-26T11:21:20.075Z",
"app/examples/guides/custom-item-price/page.mdx": "2025-02-07T09:21:11.170Z",
"references/core_flows/Cart/Steps_Cart/functions/core_flows.Cart.Steps_Cart.validateShippingStep/page.mdx": "2025-02-11T11:36:39.235Z",
"references/core_flows/Cart/Steps_Cart/variables/core_flows.Cart.Steps_Cart.validateShippingStepId/page.mdx": "2025-02-11T11:36:39.228Z",

View File

@@ -784,6 +784,26 @@ export const generatedSidebar = [
}
]
},
{
"loaded": true,
"isPathHref": true,
"type": "category",
"title": "Admin User Guides",
"autogenerate_tags": "userGuide+auth",
"initialOpen": false,
"autogenerate_as_ref": true,
"description": "Learn how to utilize and manage Auth features in the Medusa Admin dashboard.",
"children": [
{
"loaded": true,
"isPathHref": true,
"type": "ref",
"title": "Reset Password",
"path": "https://docs.medusajs.com/user-guide/reset-password",
"children": []
}
]
},
{
"loaded": true,
"isPathHref": true,
@@ -2280,6 +2300,26 @@ export const generatedSidebar = [
}
]
},
{
"loaded": true,
"isPathHref": true,
"type": "category",
"title": "Admin User Guides",
"autogenerate_tags": "userGuide+currency",
"initialOpen": false,
"autogenerate_as_ref": true,
"description": "Learn how to utilize and manage Currency features in the Medusa Admin dashboard.",
"children": [
{
"loaded": true,
"isPathHref": true,
"type": "ref",
"title": "Manage Store",
"path": "https://docs.medusajs.com/user-guide/settings/store",
"children": []
}
]
},
{
"loaded": true,
"isPathHref": true,
@@ -16033,6 +16073,14 @@ export const generatedSidebar = [
"autogenerate_as_ref": true,
"description": "Learn how to utilize and manage User features in the Medusa Admin dashboard.",
"children": [
{
"loaded": true,
"isPathHref": true,
"type": "ref",
"title": "Reset Password",
"path": "https://docs.medusajs.com/user-guide/reset-password",
"children": []
},
{
"loaded": true,
"isPathHref": true,

View File

@@ -0,0 +1,52 @@
---
sidebar_label: "Reset Password"
tags:
- user guide
- user
- auth
---
export const metadata = {
title: `Reset Password in Medusa Admin`,
}
# {metadata.title}
In this guide, you'll learn how to reset your admin user password using the Medusa Admin dashboard.
## 1. Request to Reset Password
Before resetting your password, you must request the reset, which will send you an email with instructions to reset your password.
To reset your password:
1. Open the Medusa Admin dashboard.
2. Click on "Reset" below the login form.
3. In the Reset Password form, enter your email address.
4. Click the "Send reset instructions" button.
You will receive an email with instructions to reset your password. The email will contain a link that will redirect you to the [password reset form](#2-reset-password).
<Note>
If you don't receive an email, check with your technical team to ensure they have installed a [Notification Module Provider](!resources!/architectural-modules/notification) and configured the [password reset notification](!resources!/commerce-modules/auth/reset-password).
</Note>
![Request reset password form](https://res.cloudinary.com/dza7lstvk/image/upload/v1740567731/User%20Guide/Screenshot_2025-02-26_at_1.01.32_PM_pz36is.png)
---
## 2. Reset Password
After you've [requested to reset the password](#1-request-to-reset-password), you can reset your password using the link in the email you received.
To reset your password:
1. Open the link in the email you received.
2. In the Reset Password form, enter your new password and confirm it.
3. Click the "Reset password" button.
Once you've reset your password, click the "Back to login" link to return to the login form.
![Reset password form](https://res.cloudinary.com/dza7lstvk/image/upload/v1740568088/User%20Guide/Screenshot_2025-02-26_at_1.07.59_PM_st8r4s.png)

View File

@@ -4,6 +4,7 @@ sidebar_label: "Manage Store"
tags:
- user guide
- store
- currency
---
import { EllipsisHorizontal, ArrowUpRightOnBox, EllipsisVertical } from "@medusajs/icons"

View File

@@ -9,7 +9,7 @@ tags:
import { EllipsisHorizontal } from "@medusajs/icons"
export const metadata = {
title: `Tax Regions in Medusa Admin`,
title: `Manage Tax Regions in Medusa Admin`,
}
# {metadata.title}

View File

@@ -13,7 +13,7 @@ export const generatedEditDates = {
"app/settings/users/invites/page.mdx": "2025-02-19T11:38:54.009Z",
"app/settings/developer/page.mdx": "2025-02-25T15:11:55.392Z",
"app/settings/profile/page.mdx": "2025-02-25T16:24:21.165Z",
"app/settings/store/page.mdx": "2025-02-19T11:19:01.136Z",
"app/settings/store/page.mdx": "2025-02-26T10:33:07.346Z",
"app/products/import/page.mdx": "2025-02-18T12:15:03.830Z",
"app/products/categories/page.mdx": "2025-02-19T10:21:42.058Z",
"app/inventory/reservations/page.mdx": "2025-02-18T13:56:28.134Z",
@@ -54,5 +54,6 @@ export const generatedEditDates = {
"app/settings/product-types/page.mdx": "2025-02-19T17:36:16.496Z",
"app/settings/developer/publishable-api-keys/page.mdx": "2025-02-25T16:15:29.847Z",
"app/settings/developer/secret-api-keys/page.mdx": "2025-02-25T16:17:40.621Z",
"app/settings/developer/workflows/page.mdx": "2025-02-25T15:52:48.349Z"
"app/settings/developer/workflows/page.mdx": "2025-02-25T15:52:48.349Z",
"app/reset-password/page.mdx": "2025-02-26T11:13:45.457Z"
}

View File

@@ -7,6 +7,14 @@ export const generatedSidebar = [
"title": "Introduction",
"children": []
},
{
"loaded": true,
"isPathHref": true,
"type": "link",
"path": "/reset-password",
"title": "Reset Password",
"children": []
},
{
"type": "separator"
},
@@ -22,7 +30,7 @@ export const generatedSidebar = [
"isPathHref": true,
"type": "link",
"path": "/tips/bulk-editor",
"title": "Bulk Editor",
"title": "Bulk Editor in Medusa Admin",
"description": "",
"children": []
},
@@ -31,7 +39,7 @@ export const generatedSidebar = [
"isPathHref": true,
"type": "link",
"path": "/tips/languages",
"title": "Admin Languages",
"title": "Languages in Medusa Admin",
"description": "",
"children": []
},
@@ -170,7 +178,7 @@ export const generatedSidebar = [
"isPathHref": true,
"type": "link",
"title": "Manage Variants",
"path": "/proucts/variants",
"path": "/products/variants",
"children": []
},
{

View File

@@ -9,6 +9,11 @@ export const sidebar = sidebarAttachHrefCommonOptions([
path: "/",
title: "Introduction",
},
{
type: "link",
path: "/reset-password",
title: "Reset Password",
},
{
type: "separator",
},
@@ -97,7 +102,7 @@ export const sidebar = sidebarAttachHrefCommonOptions([
{
type: "link",
title: "Manage Variants",
path: "/proucts/variants",
path: "/products/variants",
},
{
type: "link",
@@ -106,7 +111,7 @@ export const sidebar = sidebarAttachHrefCommonOptions([
},
{
type: "link",
title: "Categories",
title: "Manage Categories",
path: "/products/categories",
},
{
@@ -231,7 +236,7 @@ export const sidebar = sidebarAttachHrefCommonOptions([
children: [
{
type: "link",
title: "Invites",
title: "Manage Invites",
path: "/settings/users/invites",
},
],
@@ -273,12 +278,12 @@ export const sidebar = sidebarAttachHrefCommonOptions([
children: [
{
type: "link",
title: "Locations",
title: "Manage Locations",
path: "/settings/locations-and-shipping/locations",
},
{
type: "link",
title: "Shipping Profiles",
title: "Manage Shipping Profiles",
path: "/settings/locations-and-shipping/shipping-profiles",
},
],

View File

@@ -1,4 +1,8 @@
export const auth = [
{
"title": "Reset Password",
"path": "https://docs.medusajs.com/user-guide/reset-password"
},
{
"title": "Log-out Customer in Storefront",
"path": "https://docs.medusajs.com/resources/storefront-development/customers/log-out"

View File

@@ -1,4 +1,8 @@
export const currency = [
{
"title": "Manage Store",
"path": "https://docs.medusajs.com/user-guide/settings/store"
},
{
"title": "currency",
"path": "https://docs.medusajs.com/resources/references/js-sdk/admin/currency"

View File

@@ -1,41 +1,41 @@
export * from "./user-guide.js"
export * from "./fulfillment.js"
export * from "./payment.js"
export * from "./fulfillment.js"
export * from "./pricing.js"
export * from "./product.js"
export * from "./promotion.js"
export * from "./api-key.js"
export * from "./user.js"
export * from "./workflow.js"
export * from "./region.js"
export * from "./sales-channel.js"
export * from "./inventory.js"
export * from "./customer.js"
export * from "./order.js"
export * from "./concept.js"
export * from "./store.js"
export * from "./storefront.js"
export * from "./cart.js"
export * from "./server.js"
export * from "./auth.js"
export * from "./stock-location.js"
export * from "./region.js"
export * from "./api-key.js"
export * from "./store.js"
export * from "./sales-channel.js"
export * from "./currency.js"
export * from "./customer.js"
export * from "./query.js"
export * from "./order.js"
export * from "./tax.js"
export * from "./stripe.js"
export * from "./concept.js"
export * from "./storefront.js"
export * from "./cart.js"
export * from "./product-category.js"
export * from "./example.js"
export * from "./auth.js"
export * from "./js-sdk.js"
export * from "./checkout.js"
export * from "./product-collection.js"
export * from "./product-category.js"
export * from "./link.js"
export * from "./publishable-api-key.js"
export * from "./step.js"
export * from "./publishable-api-key.js"
export * from "./inventory.js"
export * from "./remote-query.js"
export * from "./logger.js"
export * from "./locking.js"
export * from "./query.js"
export * from "./link.js"
export * from "./event-bus.js"
export * from "./file.js"
export * from "./admin.js"
export * from "./notification.js"
export * from "./file.js"
export * from "./remote-query.js"
export * from "./currency.js"
export * from "./locking.js"
export * from "./js-sdk.js"
export * from "./draft-order.js"
export * from "./server.js"

View File

@@ -123,6 +123,10 @@ export const userGuide = [
"title": "Promotions Overview",
"path": "https://docs.medusajs.com/user-guide/promotions"
},
{
"title": "Reset Password",
"path": "https://docs.medusajs.com/user-guide/reset-password"
},
{
"title": "Manage Publishable API Keys",
"path": "https://docs.medusajs.com/user-guide/settings/developer/publishable-api-keys"

View File

@@ -1,4 +1,8 @@
export const user = [
{
"title": "Reset Password",
"path": "https://docs.medusajs.com/user-guide/reset-password"
},
{
"title": "Manage Profile",
"path": "https://docs.medusajs.com/user-guide/settings/profile"