Skip to main content
Email is configured as a channel on a sender profile. You can start testing immediately with a sandbox domain, or add your own custom domain for production.

Prerequisites

Before setting up email, you need a sender profile. If you don’t have one yet:
  1. Go to Sender Profiles in the dashboard
  2. Click New Sender and give it a name
  3. Once created, click on the sender to open its settings
Sender profiles list

Sandbox Email (Quick Start)

Sandbox domains let you test email sending immediately without configuring DNS records.
Sandbox emails are limited to 100 emails/hour. No KYC required. Use a custom domain for production.
1

Open your sender profile

Go to Sender Profiles and click on the sender you want to configure.
2

Go to the Channels tab

Click the Channels tab in the sender detail page.Sender channels tab
3

Add Email channel and activate Sandbox

Click the Email channel card to open the email configuration dialog. The dialog opens on the Sandbox (Free) tab by default. Click Activate Sandbox Email to create your sandbox domain.Email channel card
4

Configure your from address

Once the sandbox domain is created, configure:
  • From Email Address: The local part before @ (e.g., noreply)
  • From Name: The display name recipients see (e.g., Your Company)
  • Reply-To Email (optional): Where replies go
  • Enable Email Receiving: Toggle this on if you want to receive inbound emails on this address
5

Save

Click Save to enable the email channel on your sender.

Send a Test Email

import Zavu from "@zavudev/sdk";

const zavu = new Zavu({ apiKey: process.env.ZAVU_API_KEY });

const result = await zavu.messages.send({
  to: "recipient@example.com",
  channel: "email",
  subject: "Test from Zavu Sandbox",
  text: "If you see this, your sandbox email is working!",
});

console.log("Message ID:", result.message.id);
console.log("Status:", result.message.status);
If you have multiple senders, use the Zavu-Sender header to specify which sender to use. Otherwise, the default sender is used.

Sandbox vs Custom Domain

FeatureSandboxCustom Domain
Rate limit100 emails/hourBased on your plan
From address*@yourproject.sandbox.zavu.dev*@yourdomain.com
DeliverabilityLower (sandbox reputation)Higher (your domain reputation)
Inbound receivingSupportedSupported (requires MX record)
KYC requiredNoYes

Custom Domain Email

For production use, add your own domain to send from addresses like noreply@yourcompany.com.
1

Open the Email channel dialog

Go to Sender Profiles > your sender > Channels tab > click the Email card.
2

Switch to Custom Domain tab

Click the Custom Domain tab at the top of the dialog.Custom domain tab
3

Add your domain

Select Add new domain from the dropdown and enter your domain (e.g., yourcompany.com).Add domain
4

Configure DKIM records

Zavu displays the DKIM CNAME records you need to add to your DNS. Copy each record and add them to your DNS provider:DKIM records tableThe records look like:
selector1._domainkey.yourcompany.com  CNAME  selector1.dkim.zavu.dev
selector2._domainkey.yourcompany.com  CNAME  selector2.dkim.zavu.dev
selector3._domainkey.yourcompany.com  CNAME  selector3.dkim.zavu.dev
DNS propagation typically takes a few minutes, but can take up to 72 hours. Use the copy buttons next to each record to avoid typos.
5

Verify DNS

Click Verify DNS to check if your records have propagated. Once verified, the domain status changes to Verified and the from address fields appear.
6

Configure from address

Set your:
  • From Email Address: e.g., noreply
  • From Name: e.g., Your Company
  • Reply-To Email (optional): e.g., support@yourcompany.com
7

Save

Click Save to enable the email channel with your custom domain.
Email sending with custom domains requires KYC verification. Complete identity verification in the dashboard before sending production emails.

Receiving Emails

Zavu can receive inbound emails and deliver them to your application via webhooks. This works for both sandbox and custom domains.

For Custom Domains: Add MX Record

1

Open the Email channel dialog

Go to your sender > Channels > Email card.
2

Find the MX record section

Under Enable Email Receiving, Zavu shows the MX record to add to your DNS:
yourcompany.com  MX  10  inbound.zavu.dev
3

Verify MX record

After adding the record, click Verify MX. Once verified, the toggle becomes available.
4

Enable receiving

Toggle Enable Email Receiving on and save.

For Sandbox Domains

Toggle Enable Email Receiving directly in the sandbox email configuration and save. No MX record needed.

Set Up Webhook for Inbound Emails

To receive inbound emails in your application, configure a webhook on your sender:
  1. Go to your sender > Webhooks tab
  2. Add your webhook URL and subscribe to the message.inbound event
Or via the API:
await zavu.senders.update({
  senderId: "sender_abc123",
  webhookUrl: "https://api.yourcompany.com/webhooks/zavu",
  webhookEvents: ["message.inbound"],
});
When an email is received, Zavu sends a message.inbound event:
{
  "id": "evt_1736850000000_abc123",
  "type": "message.inbound",
  "timestamp": 1736850000000,
  "senderId": "sender_abc123",
  "projectId": "proj_xyz789",
  "data": {
    "messageId": "msg_def456",
    "to": "support@yourcompany.com",
    "from": "customer@gmail.com",
    "channel": "email",
    "status": "received",
    "subject": "Question about my order",
    "text": "Hi, I have a question about order #12345..."
  }
}
See the Webhooks guide for details on signature verification and security.

Testing Your Setup

Verify Sending

  1. Send a test email using the code examples above
  2. Check the message status in Messages in the dashboard
  3. Verify the email arrived in the recipient’s inbox

Verify Receiving

  1. Send an email to your configured address (e.g., support@yourcompany.com)
  2. Check your webhook endpoint received the message.inbound event
  3. Verify the inbound message appears in the dashboard under Messages

Common Issues

IssueCauseSolution
Email not deliveredSender has no email channel configuredAdd email channel on your sender profile
Domain stuck on “Pending”DNS records not propagatedWait up to 72 hours, click Verify DNS
email_kyc_required errorKYC not completedComplete identity verification in dashboard
Emails going to spamUsing sandbox domainSwitch to a custom domain for production
Inbound not workingMX record missing or not verifiedAdd MX record and click Verify MX
Can’t toggle receivingMX record not verified yetVerify MX record first

Next Steps