# Email for your SaaS app, from one typed call.

URL: https://samva.dev/solutions/saas

Send password resets, receipts, invites, and alerts from your own domain. Change an email without a deploy, see what happened to every send, and get customer replies back as webhooks.

[Start sending free](https://samva.dev/signup) or [read the docs](https://samva.dev/docs/channels/email/send-an-email).

## One call out, a signed event back.

A typed send call returns a message id right away. When the recipient's mail server accepts the email, Samva posts a signed message.delivered event to your webhook, and your product database updates from that signal.

A typed send call to POST /v1/messages with an idempotency key returns a message id with status pending. A signed message.delivered webhook then arrives at /webhooks/samva carrying that message id.

## Product email is a stack nobody signed up to own.

- **A 200 that tells you nothing**: The API accepts the send, and nobody hears about the bounce until a user asks where their reset link went.
- **Email copy in your codebase**: Fixing a typo in a receipt means a pull request and a deploy.
- **Replies to noreply**: Customers answer your receipts and alerts, and the reply goes nowhere.

## Send it, change it, hear back.

1. **One typed call, safe to retry.** One typed call from the SDK, REST, or the CLI. Send the same idempotency key and payload within 24 hours and Samva replays the first result instead of sending again.
   
   A samva.email.send call with a template slug and an idempotency key returns a message id with status pending.
2. **Change the email, skip the deploy.** Templates live in a Git-backed project. Publish a version, roll back, or edit it in the AI email editor, with no deploy.
   
   A template with four versions: v4 is a draft, v3 is published and pinned, v1 and v2 are archived. A send call names the template slug, and the pinned version is the one that sends.
3. **Events and replies reach your webhook.** Sent, delivered, bounced, complained, and received events reach your webhook, signed and retried, plus opens and clicks. Unsubscribes arrive as contact.unsubscribed events.
   
   A signed message.delivered webhook request carrying a timestamp and a message id, with a note to verify the signature against an HMAC of the request body.

## See the pieces up close.

- [Transactional email](https://samva.dev/features/transactional-email): Transactional email from the SDK, REST, CLI, or your agent through MCP. Retries are safe.
- [Templates](https://samva.dev/features/templates): Versioned templates in Git. Review the diff, publish that version.
- [Inbound email](https://samva.dev/features/inbound-email): Receive on your domain, parsed and threaded to the email it answers, delivered as a signed webhook.
- [Per-email pricing](https://samva.dev/pricing): 500 emails a month free, then $0.50 per 1,000 extra.

## Questions from developers.

### Can I move from Resend or SendGrid?

Yes. Verify your domain in Samva, swap your send call for the SDK, and point your webhook at Samva's events. Each compare page lists the steps, and [moving from Resend](https://samva.dev/guides/migrate-from-resend) and [replacing Amazon SES](https://samva.dev/guides/replace-amazon-ses) have full guides. [Compare pages](https://samva.dev/compare)

### How do customer replies reach my app?

Turn on receiving for your domain. A reply is parsed, attached to the conversation of the email it answers, and posted to your webhook as message.received with its conversationId. Store that id to find your record.

### How do I know an email arrived?

Every send has delivery events: sent, delivered, bounced, and complained, plus opens and clicks when tracking is on. They reach your webhook signed and retried, and the dashboard shows a timeline per send. Bounced and complained addresses are suppressed for you.

### How does pricing work?

Free covers 500 emails a month. Paid plans start at $5 for 15,000. Past your plan, extra emails cost $0.50 per 1,000, up to a spend limit you set.

## Send your next product email in minutes.

Create a key and send a typed call.

[Start sending free](https://samva.dev/signup) or [read the docs](https://samva.dev/docs/channels/email/send-an-email).
