Email for your product, sent from your own domain.

Receipts, sign-in links and newsletters through one API or SMTP. Every message is signed with your domain and tracked until it lands. Hosted in Frankfurt.

Northwindorders@northwind.gr

Maria Papadopouloumaria@example.com

Subject
Your order 4821 has shipped
Signed by
northwind.gr

Send with a single request

Post a message to the API, or point your framework's mailer at our SMTP server with your API key as the password. Both go through the same queue, the same checks and the same tracking.

  • Idempotency keys, so a retried request never sends twice.
  • Stored templates, or your own HTML and text.
  • Tags on every message to filter and count by.
  • Cc, Bcc, Reply-To, attachments and your own headers.
curl https://api.mailto.gr/v1/emails \
  -H "Authorization: Bearer $MAILTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": { "email": "orders@northwind.gr", "name": "Northwind" },
    "to": ["maria@example.com"],
    "template": { "id": "order-shipped", "data": { "order": "4821" } },
    "idempotency_key": "order-4821-shipped"
  }'

Your domain, set up in one click

Add your domain and you get five DNS records. If your DNS is at Cloudflare, connect your account and we publish them for you. Otherwise copy them over; we check every few minutes and tell you when it is done.

Your mail is then signed with your own DKIM key and bounces return through your own subdomain, so SPF and DMARC pass for your name, not ours.

Every message, accounted for

Each message keeps its own timeline, in the dashboard and through the API. When something goes wrong, the address is taken care of before it can hurt your domain.

  1. Queued

    Accepted by the API or SMTP, stored before we answer.

  2. Sent

    Handed to the delivery network, with retries if it is busy.

  3. Delivered

    The recipient's server accepted it.

  4. Opened

    The message was displayed.

  5. Clicked

    A link was followed, recorded per link.

Bounced

A hard bounce puts the address on your suppression list. It is never mailed again unless you remove it.

Marked as spam

The contact is unsubscribed from everything, and the complaint counts toward your complaint rate.

Paused before it gets worse

If more than 8% of recent mail bounces, or 0.4% is marked as spam, sending pauses and we tell you why. One bad list does not ruin your domain.

Also included

Receive mail
Turn on receiving for a domain and route each address to mailboxes, to your webhook, or both.
Contacts and lists
Import a CSV or sync from your app. Double opt-in when you want it. People who unsubscribed are never added back by an import.
Newsletters
Send a campaign to one or more lists at a steady pace, with one-click unsubscribe in every message and click counts per link.
Templates
Write a template once and use it from the API and from campaigns, filled with each contact's details.
Signed webhooks
Received mail is posted to your endpoint with a signature you can verify, and retried until your server answers.
Dashboard
Every message with its delivery timeline, domain health, bounce and complaint rates, and your API keys.

mailto.gr is in early access

Tell us what you send and roughly how much, and we will set up your account and help you move your first domain. Data and delivery stay in the EU.

Request early access

Opens your mail app with a message to hello@mailto.gr.