Skip to content

One provider for product email and marketing.

Add a subscriber on signup, send the receipt, then send the newsletter — same SDK, same verified domain, same dashboard. It replaces Resend or Postmark plus your newsletter tool.

Paste this into the agent in your codebase
Read lumail.io/integration/install and wire Lumail into this codebase.
See the integration steps
app/api/signup/route.ts
npm install lumail
import { Lumail } from "lumail";
await lumail.subscribers.create({ email, tags: ["trial"] });
await lumail.emails.send({ to: email, from: "[email protected]", subject: "Welcome", transactional: true });
queued on the transactional lane

Setup

  1. 1. Install the SDK

    npm install lumail
  2. 2. Create the client once

    import { Lumail } from "lumail";
    
    export const lumail = new Lumail({
      apiKey: process.env.LUMAIL_API_KEY,
    });
  3. 3. Add the subscriber on signup

    await lumail.subscribers.create({
      email: user.email,
      name: user.name,
      tags: ["trial"],
      fields: { plan: "free" },
      triggerWorkflows: true,
    });
  4. 4. Send the transactional email

    await lumail.emails.send({
      to: user.email,
      from: "[email protected]",
      subject: "Welcome aboard",
      markdown: "Your account is **ready**.",
    });

Questions

Can Lumail replace Resend or Postmark?

For transactional email, yes: POST /api/v1/emails and lumail.emails.send cover Markdown, HTML and Tiptap content, with a priority queue lane at 40 emails per second and an SMTP endpoint for tools that cannot call HTTP. The difference is that the same account also runs your campaigns and holds your subscriber list.

How do I authenticate from my server?

Create an API token in Settings > API Tokens and pass it to new Lumail({ apiKey }) or as an Authorization: Bearer header. The token is bound to one organization and belongs in your server environment, never in client-side code.

Do I need to verify a domain?

Yes. Every from address must belong to a domain verified in the same organization as the token. Add the domain in Lumail, complete the DNS records, and the address becomes usable for both transactional email and campaigns.

Will a big campaign delay my password reset emails?

No. Transactional messages are queued on a priority lane with its own capacity, separate from the bulk lane campaigns use. Both run at 40 emails per second and neither blocks the other.

What about Supabase Auth or another SMTP-only tool?

Point it at smtp.lumail.io on port 587 with STARTTLS, using any non-empty username and your API token as the password. It is a thin adapter over the same HTTP endpoint. One recipient per message, no attachments, 1 MB limit.

Is there a REST API if I am not on TypeScript?

Yes. Every SDK method maps to a documented REST endpoint under https://lumail.io/api, authenticated with the same bearer token. The SDK is a convenience, not a requirement.

What does it cost to start?

The free plan includes 3,000 emails a month with full API access, which covers most products' transactional volume while you are getting started.