A notification email API for the alerts users can't miss.
tinyRelay sends security, billing and account alert emails from your app over a REST API or SMTP relay. Every alert reports back with signed webhook events, including SPAM and UNSUBSCRIBE, and carries the metadata you attached.
- DELIVEREDnew_sign_in · accepted by the receiving serverrecord it
- BOUNCEDpayment_failed · HARD_BOUNCED · category 10ask in-app
- UNSUBSCRIBEplan_changed · receiver clicked unsubscribeturn that type off
Example emails and events · illustrative
Alerts are transactional, with a twist.
A receipt answers something the user just did. An alert tells them something they did not see happen: a sign-in, a failed charge, a change to their plan. That makes two questions matter more: did it arrive, and should the user be able to turn it off?
Security notification email
New sign-ins, password changes, new API keys. Time matters, and the user did not ask for it.
Billing notification email
Failed payments, upcoming renewals, expiring cards. If it bounces, the account is at risk.
Account alert email
Plan changes, usage notices, team invites. Often the kind users want control over.
Three alerts, three answers on unsubscribe.
Pick an alert to see the email, the metadata to attach, and whether one-click unsubscribe headers (RFC 8058) usually belong on it.
Most teams treat sign-in alerts as messages a user cannot opt out of, because the person most at risk is the one who did not sign in. That is a policy call for you to make.
If you do not send your own List-Unsubscribe header, tinyRelay adds a default one. If your policy is "no unsubscribe on security alerts", raise it with our team at onboarding.
A failed-payment notice is about the service the user pays for, so many teams send it to every account owner. The same note on the default header applies.
What matters more is the bounce. If the billing contact hard-bounces, show an in-app banner asking for a new address before access lapses.
If your notification settings let users turn this alert off, offer the same choice in the inbox. Send both headers, pointing at a URL that accepts a POST and turns off this one alert type.
{
"List-Unsubscribe": "<https://acme.com/notify/off?t=…>",
"List-Unsubscribe-Post": "List-Unsubscribe=One-Click"
}Product guidance, not legal advice. Which messages must offer an unsubscribe option depends on where you and your users are.
If you add the headers, add them properly.
tinyRelay passes your headers object through on the email. The docs spell out what one-click unsubscribe needs.
Guide: one-click unsubscribe headers →Use metadata to know which alert it was.
Attach alert_type as metadata. It is echoed on every event, so an UNSUBSCRIBE or SPAM event tells your app exactly which notification to switch off, not just which person.
How webhook events are signed and retried →- DELIVEREDnew_sign_in · accepted by the receiving serverrecord it
- BOUNCEDpayment_failed · HARD_BOUNCED · category 10ask in-app
- UNSUBSCRIBEplan_changed · receiver clicked unsubscribeturn that type off
- SPAMplan_changed · marked as spamreview frequency
Illustrative event list. Field reference: webhook responses in the docs.
API for new alerts, SMTP for the ones you already send.
Both run on the same infrastructure. Use the email API when you want metadata like alert_type on every event. Use the SMTP relay when your framework's mailer already sends these alerts.
Notification email questions.
RFC 8058, Signaling One-Click Functionality for List Email Headers: rfc-editor.org/rfc/rfc8058
tinyRelay Send Email docs: docs.tinyrelay.com
Most teams decide they should not, because a user needs to hear about a sign-in they did not make. It is your policy decision, not a technical one. Note that if you do not send your own List-Unsubscribe header, tinyRelay adds a default one, so raise your policy with our team at onboarding.
Send both List-Unsubscribe and List-Unsubscribe-Post in the request's headers. List-Unsubscribe-Post must be List-Unsubscribe=One-Click, and the URL in List-Unsubscribe must accept a POST. One header alone does not enable one-click.
Put the alert type in metadata, for example alert_type: plan_changed. Metadata is echoed on every webhook event, including UNSUBSCRIBE, so your app can turn off that one type.
Yes. tinyRelay offers SMTP relay and a REST API on the same infrastructure. Point your existing mailer at tinyRelay with the SMTP credentials issued at onboarding.
No. This page is product guidance. Rules on which messages must offer an unsubscribe option depend on where you and your users are, so check them with your own counsel.
Send transactional email with a service that reports back.
SMTP relay or REST API, standalone or alongside tinyEmail. Tell us what you send and our team sets you up.