Skip to main content

Auth emails, handled.

Magic links, verification emails, password resets, and invites. Sent, queued, and retried. One key. One environment variable. Done.

// auth.ts
import {
  OwnAuthManagedEmailProvider,
  createOwnAuth,
} from "own-auth";

export const auth = createOwnAuth({
  emailProvider: new OwnAuthManagedEmailProvider({
    deliveryKey: process.env.OWN_AUTH_EMAIL_DELIVERY_KEY,
  }),
});

// That's it. Emails just work.

Your app does the auth. Delivery does the envelope.

Your app handles the login. It creates the link, secures it, and stores it in your database. Then it hands that link to Delivery. Delivery puts it in an email and sends it.

That's the entire relationship.

What Delivery does

Sends the email.

Queues delivery work.

Retries failures.

Logs the status.

What Delivery never does

Create users.

Verify tokens.

Create sessions.

Touch your database.

Store user data.

Make auth decisions.

Switch to your own email provider anytime. Your auth flows stay the same. Only the transport changes.

Four emails. That's the whole product.

Magic links

Passwordless sign-in. Click and you're in.

Verification

Confirm the email address is real.

Password resets

Safe link to set a new password.

Invites

Join an organisation. One click.

Three steps. Emails just work.

02

Get your delivery key

Create a key in the dashboard's Delivery Keys tab and copy it. It is shown once.

03

Add it to your email provider

emailProvider: new OwnAuthManagedEmailProvider({
  deliveryKey: process.env.
    OWN_AUTH_EMAIL_DELIVERY_KEY
})

That's it. requestMagicLink, requestEmailVerification, requestPasswordReset, and inviteMember now send through Delivery.

Simple pricing. No feature gates.

Every plan includes every feature. The only difference is email volume.

Free

$0

forever

3,000 emails/month

No daily limit

Sending stops at the monthly limit

Start free

Scale

$20

per month

Unlimited emails

No daily limit

Every Delivery feature included

Start free

No credit card for Free. Upgrade when you need to.

See every email. Debug in seconds.

See whether every email was accepted, delivered, or failed. Filter by status and date without digging through server logs.

Logs show

Status, email type, recipient, timestamp, and safe failure messages.

Logs never show

Auth tokens, email bodies, password reset URLs, or raw delivery keys.

Open Delivery logs →

Building a mobile or desktop app without a website? Delivery hosts the auth link page for you. The user clicks the email link, lands on go.own-auth.com, and gets redirected into your app.

User clicks email link

go.own-auth.com/your-app/magic?token=abc123

hosted page opens deep link

myapp://auth/callback?token=abc123

your app sends token to backend

own-auth verifies token and creates session

user is signed in

The hosted page just opens your app. It doesn't verify anything or touch your data.

Everything is an API.

Create apps, manage keys, update settings, and check usage programmatically. Everything in the dashboard is available through an API request.

curl -X POST https://api.own-auth.com/v1/apps \
  -H "Authorization: Bearer oa_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "My App"}'
API reference →

We send the emails. You ship the app.

3,000 emails per month free. No credit card. Your app creates the link. Delivery just sends it.