The email layer
for your product.

From the first “hello” to the next receipt.
Send, test, and receive email with an API
and SMTP built for your application.

3,000 emails / month free. No credit card required.

A small addition
to your codebase.

Use the language you know.
Send an HTTP request or connect
your existing SMTP mailer.

One API for the email your product sends. Webhooks for what happens next.

Open the quickstart
Start with a verified domain.Keep your API key on your server.Send. Then follow the event.
POST/v1/emailsNode.js
const response = await fetch(
  process.env.ZAPSMTP_API_URL, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer zap_your_api_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    from: 'hello@yourdomain.com',
    to: ['delivered@simulator.zapsmtp.com'],
    subject: 'You’re all set.',
    html: '<p>Your next big thing starts here.</p>'
  })
});
Set ZAPSMTP_API_URL to your account’s send endpoint.
Try a delivery scenario.Local simulation. No real email is sent.

A clear picture.
Before and after send.

Inspect the message. Watch the sending IP.
Give a new IP time to earn its reputation.

Delivery tools
More than a send response.

Tools to understand what reaches the receiving side.

Explore deliverability
welcome.emlExample inspection
Spam score0.2 / 5.0
Low spam score

Content, authentication,
and sending reputation.

Lower riskHigher risk
DKIM signatureVerified

The example message carries a valid DKIM signature. A real check inspects the signed message, not just the presence of a DNS key.

SPF authenticationPassed

In this example, the sending IP is authorized by the domain’s SPF policy. Use your provider’s actual DNS values when configuring a domain.

Message contentChecked

SpamAssassin and rspamd inspect the message content. A low score is useful context, rather than a guarantee of inbox placement.

Sending IPInspected

The product checks the real sending IP and blocklist signals as part of message inspection. This report contains illustrative results.

Illustrative results. A low score does not guarantee inbox placement.

The conversation
goes both ways.

Turn incoming email into something your app can use.
Messages, replies, and attachments arrive as events.

Explore inbound email
Incoming message
Your webhook endpoint
AL
Alex Leealex@example.com
To your product
support@yourdomain.com

Re: Getting started

Hey team, thanks for the welcome. Could you help me get my workspace set up?

Thanks,
Alex

POST/webhooks/emailPayload excerpt
{
  "type": "email.received",
  "data": {
    "from": "alex@example.com",
    "to": "support@yourdomain.com",
    "subject": "Re: Getting started",
    "files": []
  }
}
Incoming email → application eventIllustrative message and payload excerpt

Send replies to the right place.

Route incoming messages into support workflows, product conversations, or your own backend.

Keep the attachments.

Receive files along with the message, then process them in the application you already run.

The small things
your code relies on.

A few fewer problems to solve in your application.

Events you can verify.

Signed webhooks, retries, and event replay keep your app in sync. Inspect every delivery attempt.

Retries without duplicate sends.

Idempotent requests let you retry safely when a connection is interrupted.

Content you can reuse.

Keep templates in one place and your sending code focused on the request.

Explore the Email API
Scheduled sendingExample queue
Tomorrow09:00UTC
A little help getting started.Onboarding follow-up
Scheduled
Sent when you need it.
Templateonboarding-follow-up
Sending methodEmail API

Write now. Send later.

Schedule a follow-up or notification in advance. Cancel or reschedule before it goes out.

See scheduled sending

Start with 3,000.
Grow from there.

API and SMTP from the first email.
Choose the monthly volume your product needs.

All plans and limits
50,000 emails / month
3,0005 million+

API & SMTP included in every plan.
Start free, then grow at your own pace.

Pro
$18/ month

50,000 emails included per month$0.85 / 1,000 extra

Get started Secure payment by Stripe. Cancel or change plan any time.
Email API & SMTP Inbound email Sandbox No credit card required

Give your domain
a quick check.

See the SPF, DKIM, DMARC, and MX records
behind your sending setup.

Public DNS lookup. No email is sent.
SPFDKIMDMARCMX

Before you
get started.

Something else on your mind?

Talk to us
Can I use my existing mailer?

Yes. Connect an SMTP client with the credentials from your dashboard, or use the Email API directly over HTTP. SMTP supports ports 587, 465, and 2525.

What’s included in the free plan?

Free includes 3,000 emails per month, with a limit of 100 emails per day, API and SMTP, one domain, one SMTP credential, sandbox, inbound email, and three days of logs. No credit card required.

What happens if I exceed my plan?

Free: sending pauses at 3,000 emails in a month and the API returns 429 monthly_quota_exceeded — upgrade to keep sending. Pro and Scale: email keeps flowing. Extra email is billed at your plan’s per-1,000 rate on the next invoice. Set a monthly spending cap in Billing if you want a hard stop.

How do I pay?

By card through Stripe. Invoices and receipts are in Billing; you can change plan or cancel at any time.

Can I test before sending to real people?

Yes. The product sandbox supports eight delivery and failure scenarios, including mailbox full, blocked, and suppressed outcomes. The examples on this website are local demonstrations and do not send real email.

What do I need for my first send?

Create an account, add and verify your domain, and generate a server-side API key or SMTP credentials. The quickstart walks through the integration.

Your product.
Its next email.

A verified domain. A few lines of code.
The beginning of a better conversation.

Start building Read the documentation 3,000 emails / month free. No credit card required.