chore: Merge master to develop (#3653)
This commit is contained in:
@@ -1,89 +1,98 @@
|
||||
# medusa-plugin-restock-notification
|
||||
# Restock Notifications
|
||||
|
||||
Send notifications to subscribed customers when an item has been restocked.
|
||||
|
||||
## Usage
|
||||
[Medusa Website](https://medusajs.com/) | [Medusa Repository](https://github.com/medusajs/medusa)
|
||||
|
||||
Install the plugin:
|
||||
## Features
|
||||
|
||||
`$ yarn add medusa-plugin-restock-notification`
|
||||
- Triggers an event when a product variant has been restocked.
|
||||
- Provides an endpoint to subscribe customers to receive restock notifications.
|
||||
- Does not implement the email or notification sending mechanisms. Instead, it is compatible with Notification plugins such as [SendGrid](https://docs.medusajs.com/plugins/notifications/sendgrid).
|
||||
|
||||
```js
|
||||
// medusa-config.js
|
||||
---
|
||||
|
||||
module.exports = {
|
||||
...,
|
||||
plugins: [
|
||||
...,
|
||||
`medusa-plugin-restock-notification`
|
||||
## Prerequisites
|
||||
|
||||
- [Medusa backend](https://docs.medusajs.com/development/backend/install)
|
||||
- [Redis](https://docs.medusajs.com/development/backend/prepare-environment#redis)
|
||||
- [PostgreSQL](https://docs.medusajs.com/development/backend/prepare-environment#postgresql)
|
||||
|
||||
---
|
||||
|
||||
## How to Install
|
||||
|
||||
1\. Run the following command in the directory of the Medusa backend:
|
||||
|
||||
```bash
|
||||
npm install medusa-plugin-restock-notification
|
||||
```
|
||||
|
||||
2\. In `medusa-config.js` add the following at the end of the `plugins` array:
|
||||
|
||||
```js
|
||||
const plugins = [
|
||||
// other plugins...
|
||||
{
|
||||
resolve: `medusa-plugin-restock-notification`,
|
||||
options: {
|
||||
trigger_delay, // optional, delay time in milliseconds
|
||||
inventory_required, // minimum inventory quantity to consider a variant as restocked
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
The plugin will migrate your database to include the RestockNotification entity, which consists of a variant id of a sold out item and a jsonb list of arrays that wish to be notified about restocks for the item.
|
||||
3\. Run the following command in the directory of the Medusa backend to run the plugin's migrations:
|
||||
|
||||
```bash
|
||||
medusa migrations run
|
||||
```
|
||||
|
||||
## API endpoint
|
||||
---
|
||||
|
||||
The plugin exposes an endpoint to sign emails up for restock notifications:
|
||||
## Test the Plugin
|
||||
|
||||
```
|
||||
POST /restock-notifications/variants/:variant_id
|
||||
1\. Run the following command in the directory of the Medusa backend to run the backend:
|
||||
|
||||
Body
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
2\. Subscribe an email or identification username (depends on your notification service) to receive restock notifications using the endpoint `/restock-notifications/variants/<variant_id>`. `<variant_id>` is the ID of the variant you're subscribing to.
|
||||
|
||||
2\. Change the inventory quantity of a product variant based on the restock threshold you've set, and see the event `restock-notification.restocked` triggered.
|
||||
|
||||
---
|
||||
|
||||
## Additional Information
|
||||
|
||||
### API endpoint
|
||||
|
||||
The plugin exposes an endpoint `/restock-notifications/variants/:variant_id` to sign emails up for restock notifications. It accepts the following request body:
|
||||
|
||||
```json
|
||||
{
|
||||
"email": "seb@test.com"
|
||||
"email": "customer@test.com"
|
||||
}
|
||||
```
|
||||
|
||||
The endpoint responds with `200 OK` on successful signups. If a signup for an already in stock item is attempted the endpoint will have a 400 response code.
|
||||
|
||||
|
||||
## Restock events
|
||||
### Restock events
|
||||
|
||||
The plugin listens for the `product-variant.updated` call and emits a `restock-notification.restocked` event when a variant with restock signups become available.
|
||||
|
||||
The data sent with the `restock-notification.restocked` event is:
|
||||
```
|
||||
variant_id: The id of the variant to listen for restock events for.
|
||||
emails: An array of emails that are to be notified of restocks.
|
||||
The data sent with the `restock-notification.restocked` event are:
|
||||
|
||||
e.g.
|
||||
- `variant_id`: The ID of the variant to listen for restock events for.
|
||||
- `emails`: An array of emails that are to be notified of restocks.
|
||||
|
||||
For example:
|
||||
|
||||
```json
|
||||
{
|
||||
"variant_id": "variant_1234567890",
|
||||
"emails": ["seb@test.com", "oli@test.com"]
|
||||
}
|
||||
```
|
||||
|
||||
*Note: This plugin does not send any communication to the customer, communication logic must be implemented or provided through a communication plugin.*
|
||||
|
||||
You may use `medusa-plugin-sendgrid` to orchestrate transactional emails.
|
||||
|
||||
|
||||
## Usage with medusa-plugin-sendgrid
|
||||
|
||||
Install the plugins:
|
||||
`$ yarn add medusa-plugin-restock-notification medusa-plugin-sendgrid`
|
||||
|
||||
```js
|
||||
// medusa-config.js
|
||||
|
||||
module.exports = {
|
||||
...,
|
||||
plugins: [
|
||||
...,
|
||||
`medusa-plugin-restock-notification`,
|
||||
{
|
||||
resolve: `medusa-plugin-sendgrid`,
|
||||
options: {
|
||||
from: SENDGRID_FROM,
|
||||
api_key: SENDGRID_API_KEY,
|
||||
medusa_restock_template: `d-13141234123412342314`
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
You should set up a dynamic template in SendGrid which will be send for each of the emails in the restock notification.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user