Introduction
Introduction
EmailsDone is a transactional email API for sending common application emails using ready-made templates.
It is designed for product emails such as password resets, email verification, welcome emails, billing emails, account notifications and other app events.
Instead of writing and maintaining email HTML, you choose a template, pass the required data, and EmailsDone renders and sends the email.
How EmailsDone works
EmailsDone uses a template-first approach.
Each email is sent by calling the API with:
- a
templateId - a recipient email address
- a
dataobject containing the fields required by that template
For example, a password reset email needs a reset URL:
{
"templateId": "password-reset",
"to": "user@example.com",
"data": {
"actionButton": {
"url": "https://app.example.com/reset-password?token=abc"
}
}
}
EmailsDone uses that data to generate the email, queue it, and send it to the recipient.
Templates
Templates define the structure and required fields for each type of email.
For example:
password-resetsends a password reset linkverify-emailsends an email verification linkwelcomesends a welcome message to a new userpayment-failednotifies a user about a failed paymenttrial-endingwarns that a trial is endingexport-readytells a user that a file or export is ready
Each template has sensible default content, with optional fields you can override when needed.
For example, many templates support optional fields such as:
subjectpreheaderactionButton.labelactionButton.url
Required and optional fields are documented on each template page.
Sending email
Emails are sent using the EmailsDone API:
POST https://api.emailsdone.dev/v1/send
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Example request:
{
"templateId": "welcome",
"to": "user@example.com",
"data": {}
}
API keys should only be used from server-side code. Do not expose your EmailsDone API key in browser JavaScript, mobile apps, public environment variables or frontend configuration.
Projects and environments
EmailsDone is organised around projects and environments.
A project represents an application or product.
An environment represents where the email is being sent from, such as:
- development
- staging
- production
Each environment can have its own API key and sending configuration. This lets you separate test email from production email and avoid mixing development activity with live users.
Unsubscribe support
EmailsDone includes unsubscribe support for email types where unsubscribing is appropriate.
Some emails are essential to account access or security, such as password reset and email verification emails. These are normally still sent because the user needs them to use the application.
Other emails, such as reminders, updates and non-critical notifications, can include unsubscribe support so users can opt out of messages they no longer want.
EmailsDone can handle unsubscribe and resubscribe requests and include unsubscribe information in supported emails.
Delivery flow
When an email is accepted by the API, it is queued for sending.
A typical email moves through states such as:
- accepted
- queued
- sent
- delivered, bounced or complained
This gives your application a clear result when the API accepts the request, while allowing EmailsDone to handle the actual sending process reliably.
Common use cases
EmailsDone is commonly used for:
- password reset emails
- email verification
- welcome emails
- magic links
- billing and subscription emails
- product notifications
- reminders
- account alerts
- export or report completion emails
The template documentation shows which fields each email supports.
Next steps
To start sending email:
- Create or select a project
- Choose an environment
- Store the environment API key on your server
- Call the send email endpoint from your backend
- Pass the fields required by the template
See the API reference for request details, or browse the template documentation to choose the right template for your flow.