Prerequisites
Before setting up email, you need a sender profile. If you don’t have one yet:- Go to Sender Profiles in the dashboard
- Click New Sender and give it a name
- Once created, click on the sender to open its settings
Sandbox email is no longer available
Sandbox domains (*.sandbox.zavu.dev) have been retired. Every email channel sends from a domain you own. A sender still configured with a sandbox domain must be reconfigured with a verified domain to keep sending; the steps below cover it.
Custom Domain Email
Add your own domain to send from addresses likenoreply@yourcompany.com.
1
Add your domain
Domains are managed under Accounts, so one domain can serve several senders. Add your domain there (e.g.,
yourcompany.com). The Email channel dialog links to it with Go to Accounts to add a domain when the project has none yet.2
Configure DKIM records
Open the domain’s DNS panel. It lists the DKIM CNAME records to add at your DNS provider, formatted for that provider. Copy each record and add it:The records look like:
3
Wait for verification
Verification runs automatically in the background once the records propagate; you can close the dialog and Zavu notifies you when it is done. Once verified, the domain status changes to Verified and the from address fields appear.
4
Select the domain on your sender
Go to Sender Profiles > your sender > Channels tab > click the Email card, and pick the domain under Email Domain.
5
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
6
Save
Click Save to enable the email channel with your custom domain.
No identity verification is required to send email. What applies is your plan’s email quota (100 a day and 3,000 a month on Free) and the reputation of your domain. Email broadcasts are the one exception: they need the account past the unverified level (identity verification, a saved payment method, a settled deposit, or a paid plan). See Sending limits.
Send a Test Email
Create an email sender via the API
Once a domain is verified (dashboard or above), you can create an email sender programmatically — no phone number required. SetemailAddress to a from-address at your verified domain:
emailDomainId is optional — Zavu resolves it from the address. To attach an email address to an existing sender instead, PATCH /v1/senders/{senderId} with the same emailAddress field.
Then send from it — as the default sender, or by passing its ID in the Zavu-Sender header:
cURL
Passing
from in the send body does not create or select a sender — the from-address comes from the sender’s configured emailAddress. Create the email sender first (above), then it sends as the default or via Zavu-Sender.Receiving Emails
Zavu can receive inbound emails and deliver them to your application via webhooks. Your domain needs an MX record for it.Add the 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:
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.
Set Up Webhook for Inbound Emails
To receive inbound emails in your application, configure a webhook on your sender:- Go to your sender > Webhooks tab
- Add your webhook URL and subscribe to the
message.inboundevent
message.inbound event:
Catch-all: receive every address at your domain
By default a sender only receives email sent to its exact address (e.g.support@yourcompany.com). Enable Catch-all to receive email addressed to any local part at the domain — sales@, billing@, hello@, or an address that doesn’t exist as its own sender — all delivered through this one sender’s webhook.
1
Enable receiving first
Catch-all builds on receiving, so Enable Email Receiving must be on (the domain’s MX record must be verified). See the steps above.
2
Toggle Catch-all
In the sender’s Channels > Email dialog, turn on Catch-all address and save. The toggle only appears once receiving is enabled.
message.inbound event. Route sub-addresses yourself using data.to, which is always the original recipient:
emailCatchAllEnabled on the sender:
cURL
Catch-all is per sender. Only one sender per domain should have it enabled — it owns all otherwise-unmatched addresses for that domain. Addresses that exactly match another sender still route to that sender.
emailCatchAllEnabled is ignored unless emailReceivingEnabled is also on.Testing Your Setup
Verify Sending
- Send a test email using the code examples above
- Check the message status in Messages in the dashboard
- Verify the email arrived in the recipient’s inbox
Verify Receiving
- Send an email to your configured address (e.g.,
support@yourcompany.com) - Check your webhook endpoint received the
message.inboundevent - Verify the inbound message appears in the dashboard under Messages
Common Issues
Next Steps
- Sending Emails - API reference for email messages
- Webhooks - Set up webhooks for delivery events
- Email Health - Monitor bounce rates and deliverability
