Samva is in early access — self-serve signup is limited. Have a team invite? Sign up with that email. Contact us for access.

Skip to content

The email channel, end to end.

Deliverability, versioned templates, inbound parsing, signed webhooks, and typed SDKs, all behind one send call.

01Deliverability

Bounces and complaints feed suppression automatically.

Your reputation stays clean without you watching it. You send from your own domains with SPF, DKIM, and DMARC managed for you, and every bounce or complaint feeds the suppression list on its own.

acme.com · sending domainVerified
SPFpass
DKIMpass
DMARCaligned
Bounces and complaints feed suppression automatically. Your reputation stays clean.
02Templates

Pass data by name. The rendered message goes out server-side.

Reference a template by name, pass the data, and the version you pinned is the version that sends. Transactional and product email share the same templates, rendered on our side. No separate template service to wire up.

templates4 versions
order-updatev4 · 1,204 sends today
password-resetv2 · 612 sends today
welcomev7 · 188 sends today
03Inbound · Receive

Replies parse and thread back into your app.

A reply is something your code handles, not something a human forwards. Inbound email arrives parsed and threaded as an event in your app, never dropped in a side mailbox you have to poll.

inbound · thread #8842parsed
maya@acme.com2m ago

Thanks, got the shipping update. One question…

routed to support · attachments stripped & scanned
04Webhooks · Events

Every send comes back as a signed event you can verify.

Every delivery, bounce, and complaint comes back as an HMAC-signed webhook you can verify with a typed verifier in the SDK. We retry with backoff until your endpoint acknowledges, so you never miss an event.

events · signed200 OK
POSTemail.deliveredmsg_a1c
POSTemail.bouncedmsg_9f2
POSTemail.complainedmsg_4d8
HMAC-signed, idempotent, retried with backoff until your endpoint acknowledges.
05Typed SDK · Quickstart

Same key on retry returns the same send.

A flaky network never turns into a duplicate email. Reuse an idempotency key across retries and you get the original message id back, through end-to-end types in the SDK or the same JSON contract over REST.

  • Idempotency keys, so a retry returns the original send, not a second email
  • REST API with an OpenAPI 3 spec, so you generate a client in any language
  • Typed webhook verifier in the SDK, no shared-secret guesswork
// install, then send your first email
import { createClient } from "samva";

const samva = createClient({ apiKey: process.env.SAMVA_API_KEY });

await samva.messages.send({
  channel: "email",
  to: [{ email: "maya@acme.com" }],
  email: {
    subject: "Your order shipped",
    templateId: "order-update",
    templateData: { orderId: "A-1042" },
  },
});
# send over the REST API
curl -X POST https://api.samva.app/v1/messages/send \
  -H "Authorization: Bearer $SAMVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"email","to":"maya@acme.com",
     "email":{"subject":"Welcome","template":"welcome"}}'

Build on email today.

Request early access and send your first email in minutes.