Skip to content

Concepts

Five objects explain the whole product. Two minutes here saves an hour later.

The account boundary — billing, members, and roles live here. Everything below belongs to a team, and a member’s role (admin, developer, finance, member) decides what they can see and touch.

The unit of sending. A project groups one application’s (or environment’s) mail: its own credentials, its own attached providers, its own suppression list, its own analytics. Typical setups have one project per app, or per app-environment (shop-production, shop-staging).

A project also declares the sender domain(s) it mails from — plans cap how many domains a team can send from in total (limits). Domain authentication (SPF, DKIM, DMARC) stays where it belongs under BYOK: at your provider, on your DNS — see Deliverability for what goes where, and the Amazon SES guide for the concrete records.

Your email provider account — Amazon SES, SendGrid, Mailgun, Postmark, and friends — added to Mailway with your API key. Mailway never resells email: every message relays through a provider account you own, on your reputation and your pricing. Providers attach to projects in an ordered list; that order is the failover chain.

Two ways in, both per-project so a leak is contained:

Used for Looks like
SMTP credential The SMTP relay — apps that already speak SMTP username + password
API key The Send API mw_live_… / mw_test_… bearer token

Both are minted in the console and shown once.

One message, from ingest to archive. Every mail gets a permanent ID (m.01k8w9…) that threads through the console, webhook events, share links, and delivery certificates. Its lifecycle is a ladder of states:

Mail lifecycleINGESTpendingaccepteddeliveredsoft-bouncedbouncedcomplainedpausedfailedfailoverreleasedBEFORE HANDOFFDELIVERY WEBHOOKSprimary pathconditional state

Two of these deserve precision, because most services blur them:

  • Accepted — a provider took the handoff. Getting here isn’t a given: Mailway tries each provider in your failover chain in order until one accepts, and if they’re all exhausted the mail is failed. This is all most APIs ever tell you.
  • Delivered — the recipient’s mail server confirmed receipt, reported back through provider delivery events. It’s a conditional state: a mail only reaches it once those events are flowing (SES → SNS, and friends); until then it rests at accepted. Mailway shows the two separately and never relabels one as the other.

The full message — headers, body, attachments — is archived byte-for-byte for your plan’s retention window, which is what makes share links and proof-of-delivery certificates possible. When the window closes the content is genuinely deleted; the delivery record stays on file permanently.