Why brands
Most self-hosters fall into one of two camps: a solo builder running multiple side-projects, or an agency running email for a stable of clients. Both want isolated workspaces — a Stripe key for SideProjectA shouldn't accidentally fire emails for SideProjectB.
What's per-brand
- Email provider config (SMTP / SES / SendGrid / Mailgun)
- Sender domain + DKIM/SPF status
- Contacts, tags, custom fields
- Templates, campaigns, sequences, forms
- Integration credentials (Stripe key, Firebase JSON, etc.)
- Brand API key — used by the public API + transactional sends
- Team membership (owners / members per brand)
- Analytics + event history
What's shared
- The user accounts (one login, switch brands from the brand picker)
- The Docker container, SQLite database, AUTH_SECRET
- Cron loop, queue, retention sweeps
Creating a brand
From the /brands page → + New brand. Pick a name and (optionally) a domain. The brand is yours immediately as the owner.
License limits
- Solo license: install on 1 domain, unlimited brands.
- Pro license: install on 3 domains, unlimited brands.
- Agency license: install on unlimited domains, unlimited brands.
"Domain" here means the host you're running the Maillayer install on (e.g.mail.client-a.com, mail.client-b.com). Brands are the per-install workspaces — those are uncapped on every tier.
Switching brands
The sidebar header shows the current brand with a back arrow. Clicking it goes to
/brands for the picker. Each brand's URL is /brands/<id>/... — bookmarkable and shareable within your team.