YOUR BACKEND. YOUR PROVIDER.
Email delivery.
On your terms.
A persistent email queue for Convex.
Plug in Plunk or Resend. Keep the delivery logic in one place.
Open source · Apache-2.0 · Provider adapters included
ONE QUEUE. TWO WAYS TO SEND.
Pick the provider.
Keep the architecture.
Scheduling, recipient restrictions, and message records stay in Convex. Each adapter handles its provider’s API and retry rules.
import { Emails } from "@clipin/convex-emails";
import { plunk } from "@clipin/convex-emails/plunk";
const email = new Emails(components.emails, {
adapter: plunk({ route: "plunk-primary" }),
});
export const deliver = email.worker();Test mode is enabled by default.Stop when the result is unclear.
Plunk timeouts, conflicts, and server errors pause for review. A rate limit can safely schedule another attempt.
THE WORK AFTER “SEND”
Built for what
happens next.
Set a time. Keep the job.
Queue now or schedule ahead. Convex persists the job. Cancel it before the worker starts.
Different providers. Clear rules.
Each adapter classifies failures. Safe retries stay on the same route with the same request key.
Carry restrictions forward.
Keep hard bounces and complaints blocked. Preserve marketing opt-outs across provider changes.
Know where every message stands.
Inspect queued, accepted, delivered, and uncertain outcomes. Review ambiguous sends before taking action.
<WelcomeEmail
name="Alex"
workspace="Studio"
/>Welcome aboard, Alex.
Your workspace is ready.
Let’s make something worth sending.
BRING YOUR OWN HTML
Your templates
come with you.
Keep React Email and your local preview workflow. Render your template once, then pass the HTML to the queue.
Choose your provider independently of the way you build your emails.
Use React EmailSMALL API. EXPLICIT BEHAVIOR.
Make email part
of your backend.
Start with the local example. No provider account required.