Medusa v2 notification provider for Groundmail transactional email
A Medusa v2 notification provider for the Groundmail transactional email API.
Order confirmations, shipping updates and password resets go out on the channel through Groundmail.
Docs · Get a free account · groundmail.dev
From a subscriber or workflow:
Without , the provider sends the Groundmail template whose id or alias matches , with as its variables. Nested keys are joined with underscores, so in the template reads .
To send your own markup instead, pass .
| Option | Purpose |
|---|---|
| Groundmail API key. Falls back to | |
| Default From address, on a verified domain | |
| Default Reply-To address | |
| Map Medusa template names to Groundmail templates, e.g. | |
| Override the API base URL |
on a notification can carry , , , , , and .
Found a bug or want something added? Open an issue. This code is published here on each release, so we port fixes rather than merging pull requests directly. The HTTP client itself is the package.
| Use | Package |
|---|---|
| Node.js / TypeScript | on npm |
| Python (Django), Go, Ruby (Rails Action Mailer) | Groundmail/groundmail-sdks |
| PHP | Groundmail/groundmail-php |
| Laravel | Groundmail/groundmail-laravel |
| Symfony Mailer | Groundmail/groundmail-symfony-mailer |
| Nodemailer | Groundmail/groundmail-nodemailer |
| NestJS | Groundmail/nestjs-groundmail |
| Strapi | Groundmail/strapi-provider-email-groundmail |
| Medusa | Groundmail/medusa-notification-groundmail |
| AdonisJS | Groundmail/adonisjs-groundmail |
| Phoenix (Swoosh) | Groundmail/swoosh_groundmail |
| CLI | on npm |
| MCP server (Claude, ChatGPT, Cursor) | Groundmail/groundmail-mcp |
| Agent skills and Claude Code plugin | Groundmail/groundmail-skills |
| Email templates (React Email, MJML, HTML) | Groundmail/email-templates |
Website · Docs · Pricing · Sign up free
npm install medusa-notification-groundmailGROUNDMAIL_API_KEY=gm_your_key_here1// medusa-config.ts2module.exports = defineConfig({3 // ...4 modules: [5 {6 resolve: '@medusajs/medusa/notification',7 options: {8 providers: [9 {10 resolve: 'medusa-notification-groundmail',11 id: 'groundmail',12 options: {13 channels: ['email'],14 api_key: process.env.GROUNDMAIL_API_KEY,15 from: 'Acme <orders@yourdomain.com>',16 },17 },18 ],19 },20 },21 ],22})1await notificationModuleService.createNotifications({2 to: order.email,3 channel: 'email',4 template: 'order-placed',5 data: { order: { display_id: order.display_id, total: order.total } },6})