Monitor stock levels in your dashboard and get notified when products are almost out of stock
Vendure stock monitoring plugin
Official documentation here
This plugin helps you monitor the stock levels in two ways:
- A dashboard widget that displays variants who’s stocklevel is below a given threshold
- An email handler that sends an email when stocklevels of a variant dropped below a given threshold
Getting started
- Add the plugin to your
vendure-config.ts
to expose aproductVariantsWithLowStock
query in the admin API.
import { StockMonitoringPlugin } from '@pinelab/vendure-plugin-stock-monitoring';
import { AdminUiPlugin } from '@vendure/admin-ui-plugin';
plugins: [
StockMonitoringPlugin.init({
threshold: 10,
}),
// Add the widget to the admin ui
AdminUiPlugin.init({
port: 3002,
route: 'admin',
app: compileUiExtensions({
outputPath: path.join(__dirname, '__admin-ui'),
extensions: [StockMonitoringPlugin.ui],
}),
}),
];
For more configuration options regarding the admin ui, check the docs.
When you start the server and login, you can find stock-levels
under the add widgets
button.
Low stock email handler
The email handler will send an email when the stocklevel of a variant drops below the given threshold. To activate the
handler, you can add the following handlers to your vendure-config.ts
:
import { createLowStockEmailHandler } from "@pinelab/vendure-plugin-stock-monitoring";
EmailPlugin.init({
handlers: [
// Dynamically get email recipients based on the event
// and send an email when stock drops below 10
createLowStockEmailHandler({
threshold: 10,
subject: "Stock of variants belo 10",
emailRecipients: async (injector, event) => {
// Dynamically resolve email recipients with the injector and event
const recipients = await injector.get(MyService).getAdminsForChannel(event.ctx);
return recipients;
}
}),
// Send emails to two static addresses when stock drops below 99
createLowStockEmailHandler({
threshold: 99,
subject: "Stock of variants below 99",
emailRecipients: ["test@test.com", "admin2@vendure.io"]
})
],
...
Create a template file for the low stock email in static/email/templates/low-stock/body.hbs
with the following
content:
<mjml>
<mj-body>
<mj-section>
<mj-column>
<mj-text font-size='30px'>Low stocknotification</mj-text>
<mj-divider border-color='#343434'></mj-divider>
<mj-text>
These products are low on stock:
<br />
<br />
{{#each lines}}
<a href='http://localhost:3050/admin/products/'>
{{productVariant.name}}
-
{{productVariant.stockOnHand}}
pc.
</a>
<br />
{{/each}}
</mj-text>
</mj-column>
</mj-section>
</mj-body>
</mjml>
Create your first commerce experience with Vendure in less than 2 minutes
Vendure is a registered trademark. Our trademark policy ensures that our brand and products are protected. Feel free to reach out if you have any questions about our trademarks.
Documentation
Newsletter
Get the latest product news and announcements delivered directly to your inbox.