await richese.messages.send({
from: "updates@yourdomain.example",
to: "dev@example.com",
template: "welcome"
});
Email for product teams.
A clear API for transactional email, verified domains, reusable templates, event webhooks, and readable logs.
Start sending
Send from familiar code with a placeholder key, then inspect the request before it reaches a real environment.
- Transactional sending API
- Verified sending domains
- Events and logs you can follow
- Install the SDK or call the API directly.
- Point the sender at a verified domain.
- Follow the response and next steps in the quickstart.
- One docs-first starting point.
- Original examples marked as illustrative.
- A clear path from send to follow-up.
2
3
4
5
6
7
8
9
10
11
12
13
import { Richese } from "@richese/node";
const courier = new Richese({
apiKey: process.env.RICHESE_API_KEY,
});
await courier.messages.send({
from: "updates@yourdomain.example",
to: "dev@example.com",
template: "welcome",
data: { firstName: "Ari" },
});
Read the quickstart. Send the first message on your terms.
See the send pathKnow what happened after `send()`.
Each request, event, and log stays connected.
email.delivered
Verify every domain
Add a sending domain, check its records, and keep sender identity visible while your team builds templates and events.
- Add a sending domain.
- Follow its verification status.
- Use the verified sender in the API request.
Keep the message in the product.
Keep templates separate from requests. Choose a template, pass its data, and use the same send path for each product moment.
- Welcome and onboarding messages.
- Password and access messages.
- Receipts and status updates.
Welcome, Ari.
Your workspace is ready. Keep building the product and let Richese carry the message.
Let email events reach your app.
Webhooks return message events to your server, so the product can update state, investigate exceptions, or continue a workflow.
- Receive event notifications at your endpoint.
- Connect each notification to the message in your system.
- Handle the next action in the product you already own.
{ "type": "email.delivered", "message_id": "ck_msg_01H9J2", "to": "dev@example.com", "template": "welcome", "occurred_at": "09:42:19Z" }
See the message. Respect the address.
Logs give you a readable record of a send and its latest state.
Suppression state stays in the send path, so your application can review an address before another request.
- Trace a message from request to event.
- Review the latest state in the log.
- Check suppression handling before retrying.
Move email without a rewrite.
Bring existing sends across in steps: map templates and domains, reconnect events, then change the default path.
- Inventory existing sends.
- Map templates and domains.
- Check webhook and suppression behavior.
- Follow the cutover notes one step at a time.
Map templates and domains.
Connect existing messages to the templates and sender identity Richese will carry forward.
Everything in view
Domains, logs, and suppression stay close to every send.