A Medusa plugin that enables webhook management and integration, allowing you to configure and manage outgoing webhooks for your e-commerce events.
Add webhook functionality to your Medusa e-commerce server, allowing you to send real-time notifications to external services when specific events occur in your system. The plugin seamlessly integrates with Medusa's event system and provides a simple way to manage webhooks for various events.
npm install @lambdacurry/medusa-webhooks# oryarn add @lambdacurry/medusa-webhooks
const plugins = [// ... other plugins{resolve: "@lambdacurry/medusa-webhooks",options: {// Add here the subcribers you will definesubscriptions: ["product.created", "product.updated"],},},];
yarn medusa db:migrate
The plugin provides three different workflows for handling webhooks:
Here's an example of how to use these workflows in your subscriber:
import {SubscriberArgs,SubscriberConfig,} from "@medusajs/framework/subscribers";import {getWebhooksSubscriptionsWorkflow,sendWebhooksEventsWorkflow,fullWebhooksSubscriptionsWorkflow,} from "@lambdacurry/medusa-webhooks/workflows";export const config: SubscriberConfig = {event: ["product.created", "product.updated"],context: {subscriberId: "product-added",},};export default async function handleProductAdded({event: { name },container,}: SubscriberArgs<{ id: string }>): Promise<void> {const query = container.resolve("query");const logger = container.resolve("logger");// Fetch product dataconst { data: productResult } = await query.graph({entity: "product",fields: ["*"],});const product = productResult[0];if (!product) {logger.error("Product not found");return;}// Option 1: Use the full workflow (recommended for most cases)const fullResult = await fullWebhooksSubscriptionsWorkflow(container).run({input: {eventName: name,eventData: product,},});// Option 2: Use separate workflows for more controlconst { results: webhooks } = await getWebhooksSubscriptionsWorkflow(container).run({input: {eventName: name,eventData: product,},});const sendResult = await sendWebhooksEventsWorkflow(container).run({input: {webhooks,eventData: product,},});console.log(fullResult);// orconsole.log(sendResult);}
To contribute to this plugin:
Please read more about how to run the plugin in dev mode: https://docs.medusajs.com/learn/fundamentals/plugins/create
MIT License