Transactional e-mails
for Medusa
The store's e-mails through Resend: order confirmation, shipping with tracking numbers, cancellation, welcome and password reset, in Polish and English, in your store's look and with a dark mode. Each goes out exactly once, and the admin shows what went out.
What exactly
this integration does
-
Five templates out of the box
Order confirmation with the products and totals, shipping with every tracking number and its link, cancellation, a welcome for new accounts and password reset. Abandoned cart and negotiation e-mails you turn on when you want them.
-
Live preview
Every template in the admin exactly as the customer gets it: light and dark, desktop and phone, Polish and English, on sample data or on your newest order.
-
Your store's look
Name, a live-text logo, colours, footer and support address from the admin or the options. Text colours pick their own contrast so everything stays readable.
-
The recipient's language
Each e-mail goes out in the language of the order, the cart or the customer, and Polish texts never leave a one-letter word at the end of a line.
-
Test and retry from the admin
A test send takes the same road as real e-mails, so it proves the setup at once. A failed e-mail is retried with one click.
-
E-mails on the order
Every order page shows its e-mails with their status, and your own templates come in the same look.
How it guards
your data
-
Exactly once per event
One key per event, checked by Medusa's notification module, claimed in the plugin's send log and sent to Resend as the Idempotency-Key. A repeated event never sends a second e-mail.
-
Masked addresses
The log keeps the template, the subject, the status and the Resend id, and the recipient only as a***@e***.com.
-
No key, nothing leaves
Without an API key every e-mail is only rendered and recorded as not sent, and demo mode keeps everything on the server.
-
Test limits
At most 5 tests per person in 10 minutes and 30 an hour for the store, so the admin never becomes a way to send spam.
Setup
in three steps
The full list of options, events and API routes is in the package README on GitHub.
Paste it into Claude Code, Cursor or another AI assistant in your Medusa project: it installs and configures the integration, with writes off.
- 1 Install the package from npm.
npm install @koda-plus/medusa-plugin-emails - 2 Add the plugin to medusa-config.ts.
const emails = { apiKey: process.env.RESEND_API_KEY, from: process.env.EMAILS_FROM, // "Sklep <zamowienia@mail.twoj-sklep.pl>" defaultLocale: "pl", } plugins: [{ resolve: "@koda-plus/medusa-plugin-emails", options: emails }], modules: [ { resolve: "@medusajs/medusa/notification", options: { providers: [ { resolve: "@koda-plus/medusa-plugin-emails/providers/emails", id: "emails", options: { channels: ["email"], ...emails }, }, ], }, }, ], - 3 Run the migrations and open the integration in the Medusa admin.
npx medusa db:migrate
Running for our clients
See our portfolio
biolcheck



WJ Investment
Firma Inwestycyjna JW
Outside Medusa: the same logic and the same code in a project on another stack.
Other
integrations
- Allegro Offers, orders, stock and parcels
- BaseLinker Cards, stock, prices and orders both ways
- Subiekt nexo Orders as ZK, WZ and invoices with KSeF
- Fakturownia Invoices, corrections and KSeF exactly once
- InPost Parcel lockers, courier and COD on ShipX
- OLX Adverts that match the store's stock
- Stripe Volume, fees, disputes and account health
- Negotiations Target price, counter offer, acceptance
- Trade credit Limits, terms and customer balances
- Loyalty Points, a reward ladder and a ledger
- Packaging Piece, box, pallet, minimum and step
- EU compliance GPSR, RODO and Omnibus in one panel
- VAT whitelist NIP, VIES and REGON in one panel
- Tasks Tasks on orders, products and customers
Tell us about your project,
we'll tailor the rest to you
A 15-minute call is enough for us to know whether we are a fit for your project.
We start from what you need, not from an off-the-shelf solution.