What is Senlo
Templates and automations for transactional email, on top of the delivery provider you already use.
curl -X POST https://senlo.io/api/triggered \
-H "Authorization: Bearer snl_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "id": 12, "to": "customer@example.com", "data": { "name": "Ada" } }'That request renders a template you designed in Senlo, fills in {{name}}, and sends it through your own provider.
What Senlo does
Senlo is a template and automation layer. It is not an email service provider (ESP): it does not own sending IPs or domains. Delivery stays with Resend, Postmark or any SMTP server you connect.
On top of that provider, Senlo gives you:
- A visual email editor. Templates are designed in the browser, rendered to email-safe HTML (MJML), with merge tags, conditions and loops.
- Triggers. One API call sends one email from a template. Your code passes data; designers change the email without a deploy.
- Automations. Events from your app (
contact_added,order_created, ...) start workflows: wait, check a condition, send, update the contact. - Contacts, unsubscribe and suppression. Every email carries a signed one-click unsubscribe link. Bounces and complaints from your provider suppress the address.
- Delivery logs. Every send, with its status from the provider's webhooks.
What Senlo does not do
- No marketing campaigns or newsletters. Senlo is for transactional and lifecycle email triggered by your product.
- No delivery infrastructure. You need an account with a provider, and a verified sending domain there.
Cloud or self-hosted
Senlo is open source (AGPL-3.0). Run it yourself with Docker Compose, or use Senlo Cloud and skip the infrastructure. These docs cover both. Where they differ, a page says so:
Cloud only
Applies to senlo.io only.
Self-hosted only
Applies to your own instance only.
Next steps
- Quickstart: send your first email from senlo.io in about five minutes.
- Self-hosting: run Senlo on your own server.
- API reference: every endpoint, generated from
openapi.yaml.