Features
Send your product's email
email-service sends magic links, invitations, event notices, broadcasts, and newsletters. You choose Resend or SMTP, the standard mail protocol. Sign-in mail uses its own queue, so a broadcast does not delay it.
Connect email to the shell
Set email.url in shellui.config.json. The shell exposes that block to apps as settings.email. Administration calls email-service with the signed-in account's token. If url is missing, it uses https://email.shellui.com.
identity-service sends magic links and invitations through email-service when EMAIL_SERVICE_API_KEY is set. Without that key, it uses SMTP. Storage and hosting post their events the same way.
{
"email": {
"url": "https://email.shellui.com",
"showInAdmin": true
}
}A separate queue for sign-in mail
email-service keeps three queues: auth, transactional, and bulk. Each queue has its own worker. Magic links, invitations, and the staff notice use the auth queue. A newsletter or broadcast does not delay that mail.
Auth-queue mail goes to exactly one recipient. Staff accounts get a fixed notice, identity.auth.magic_link.staff_blocked, instead of a magic link. You cannot change that notice from a company account.
40 email designs
The template library has 40 email designs in five sets:
- Barebone
- Matte
- Protocol
- Arcane
- Studio
You can add company templates. You edit a design in the React Email editor as JavaScript Object Notation (JSON). email-service composes Hypertext Markup Language (HTML) and the plain-text part when you save.
A library design can be recolored with a Shellui theme. email-service serves the library images and fonts from EMAIL_PUBLIC_URL. Images and fonts in that HTML load from that host.
Translate once, send per recipient
Each template has one layout. You set the subject, preheader, and text per language. A send uses the recipient's language.
If a block has no translation, the send uses the default language for that block. Event mail from the catalog includes English and French subjects.
Email rules next to webhook rules
You can attach several email rules to one event. Each rule sends its own editable copy of a library design. The same events can also have webhook rules in Administration. Suggested events cover identity, storage, and hosting.
Sign-in events have a built-in rule you cannot delete or disable. You cannot add extra rules or extra recipients on those events. Put a sign-in link only in a link target, not in the rest of the copy.
Choose Resend or SMTP
Resend is the default. You can connect an SMTP server instead. email-service encrypts per-company credentials at rest and masks them in application programming interface (API) responses. You can send a test message.
When a company has not set a provider, Shellui's own mail uses the platform provider. Resend can also report delivery, bounces, complaints, and unsubscribes. Those events update message status and the suppression list.
Newsletters with a confirmed sign-up
Public lists use double opt-in. A person confirms by email before they join. email-service rate-limits sign-up, the form includes a honeypot, and you can require Cloudflare Turnstile.
Each list has its own unsubscribe link. You can import and export a list as comma-separated values (CSV).
Broadcast to a company audience
Send one email to members from identity-service. Filter by groups, roles, access, join date, and last seen. Each recipient gets their own language. email-service delivers through Resend Broadcasts or the bulk queue.
Webhooks for mail events
email-service posts signed webhooks for message events, unsubscribes, and newsletter events. Signing and retries match the other Shellui services. The image runs the scheduler itself:
- Webhook retries
- A queue sweep every minute
- An hourly purge
Next, see how file storage adds uploads, sharing, and storage limits to your apps.