---
title: Email
description: Send email from your own verified domain with Sylphx Notify - templates, recipients, suppression and a delivery receipt on every message.
type: tutorial
product: email
summary: What you set up once, how a message is sent, and what a delivery receipt tells you.
updated: 2026-10-01
order: 0
---

Email is sent through **Notify**. You verify a domain once, write a template,
and then send a **message**: one notification to one recipient. Notify checks
that the recipient has not been suppressed and has not turned the topic off,
sends it, and closes every delivery with a receipt from the mail provider.

All of it is on the one API at `https://api.sylphx.com`.

## The pieces

<PropertyTable
	properties={[
		{
			name: 'Email domain',
			type: 'mail_domains',
			description: 'A domain you send from, for example mail.example.com. You publish the DNS records it gives you (DKIM, SPF, return path) and verify it.',
		},
		{
			name: 'Template',
			type: 'templates',
			description: 'The From address (on a verified domain), subject and bodies of an email, with variables. Messages pin the version they were sent with.',
		},
		{
			name: 'Recipient',
			type: 'recipients',
			description: 'A person you notify: email addresses, language, time zone and per-topic preferences. Your own user id goes in external_key.',
		},
		{
			name: 'Message',
			type: 'messages',
			description: 'One notification to one recipient on one topic. Send it with notify.messages.create.',
		},
		{
			name: 'Suppression',
			type: 'suppressions',
			description: 'An address that is never sent to. Bounces, complaints and unsubscribes write one themselves.',
		},
	]}
/>

A message has a `state` (`accepted`, `suppressed`, `delivering`, `delivered`,
`failed`, `cancelled` or `rate_limited`) and one entry in `deliveries` per
channel, each with a `provider_receipt` once the provider has taken it. A
template can limit how often one recipient is sent that template.

## Send a message

```bash
sylphx notify messages send \
  --parent orgs/acme/projects/shop/envs/production \
  --recipient orgs/acme/projects/shop/envs/production/recipients/ada \
  --topic billing \
  --template orgs/acme/projects/shop/envs/production/templates/receipt
```

[The quickstart](/docs/email/quickstart) sets up the domain, template and
recipient first, and sends a test message that is rendered and captured without
leaving Sylphx.

## Send as a mailbox

A message can instead be sent as one of your [mailboxes](/docs/api/mailboxes)
with its subject and bodies inline (`mailbox` and `content`), and can answer a
thread with `parent_message_id` and `references`. A mailbox also receives
email: each arrival is an [inbound email](/docs/api/inbound_emails) you can read.

## What is not served

Senders and broadcasts are declared in the API reference and are not routed,
so there is no bulk send. Send one message per recipient.

<RelatedDocs
	links={[
		{
			href: '/docs/email/quickstart',
			label: 'Quickstart',
			description: 'Verify a domain, write a template and send a message.',
		},
		{
			href: '/docs/api/messages',
			label: 'The messages collection',
			description: 'Every method, field and example.',
		},
		{
			href: '/docs/api/mail_domains',
			label: 'The mail_domains collection',
			description: 'Create a domain, read its DNS records and verify it.',
		},
	]}
/>
