Multi-brand

One install, many brands. Each one has its own provider, domain, contacts, and integrations.

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.