Skip to content

Developer tools

A CLI that does the DNS work.

Add a domain, publish its records to Cloudflare, wait for verification and watch events without leaving the terminal.

Add a domain

Register a sending domain and get the records to publish.

devel domains add mail.example.com

Publish DNS and verify

Push the records to Cloudflare, then poll until verification passes or the timeout runs out.

devel domains publish-dns <id> --yes
devel domains verify <id> --wait

Watch events and read logs

Tail new email events as they happen, or list recent emails filtered by status.

devel tail
devel logs --limit 20 --status bounced

Signed webhooks

Delivery events are POSTed to your project’s webhook URL with an X-Webhook-Signature header. In Next.js, verifyWebhook checks it against DEVELEMAIL_SIGNING_SECRET.

import { verifyWebhook } from '@develemail/nextjs';

export async function POST(req: Request) {
  const body = await req.text();
  const signature = req.headers.get('x-webhook-signature') ?? '';

  if (!(await verifyWebhook(body, signature))) {
    return new Response('Invalid signature', { status: 401 });
  }

  const event = JSON.parse(body) as { event: string; emailId: string | null };
  console.log(event.event, event.emailId);
  return new Response('ok');
}

React email templates

Compose emails as React components and render them to HTML and plain text with the React package.

import { DevelEmail, Heading, Html, Text } from '@develemail/react';

function Welcome({ name }: { name: string }) {
  return (
    <Html>
      <Heading>Welcome, {name}</Heading>
      <Text>Your account is ready.</Text>
    </Html>
  );
}

export async function sendWelcome() {
  const client = new DevelEmail({
    apiKey: process.env.DEVELEMAIL_API_KEY!,
    baseUrl: 'https://develemail.com/api',
  });

  return client.emails.send({
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Welcome aboard',
    react: <Welcome name="Ada" />,
  });
}

Access is invite-only for now

Tell us what you are sending and we will review your request.