Transactional vs marketing email: what every developer should know
The technical and legal differences between transactional and marketing email, why you should separate them, and how MailStack handles both from one API.
Almost every product sends two kinds of email, and conflating them is one of the most common — and costly — mistakes in email infrastructure.
Definitions that actually matter
Transactional email is triggered by a user action and contains information the user expects: order confirmations, password resets, receipts, shipping updates, one-time codes. There is a one-to-one relationship between an event and a message.
Marketing email is sent to a list to promote, announce, or re-engage: newsletters, product launches, drip campaigns. It's one-to-many and the recipient may not have asked for this specific message.
Why the distinction is technical, not just semantic
- Reputation. Transactional mail has high open and click rates; marketing mail has lower engagement and higher complaint rates. Send them from the same domain and the marketing complaints poison your transactional delivery.
- Volume shape. Transactional mail is steady and event-driven; marketing mail is bursty. Providers read sudden bursts as suspicious.
- Consent. Marketing email is governed by laws like CAN-SPAM and GDPR — it must include an unsubscribe mechanism and honor opt-outs. Transactional email is largely exempt from unsubscribe requirements precisely because it isn't promotional.
The cardinal rule: don't smuggle marketing into transactional
A receipt with a "while you're here, check out our sale!" banner is a marketing email wearing a transactional costume. Mailbox providers and regulators both treat it as marketing. Keep the streams clean.
How MailStack handles both
MailStack gives you a single transactional API — POST /v1/emails — that returns a message id you can poll via GET /v1/emails/{id}. You can tag messages to segment your own reporting, and the suppression list protects you across both streams. For marketing sends, the visual template builder and batch endpoint (POST /v1/emails/batch) let you ship campaigns without leaving the platform — while you keep separation by using distinct sending domains or subdomains.
Practical takeaways
- Use separate sending domains (or subdomains) for transactional and marketing traffic.
- Always include unsubscribe handling for marketing; never bolt promos onto transactional mail.
- Respect suppression globally — a complaint on marketing should suppress that address everywhere.
- Bill should follow usage, not list size, so growing your audience doesn't punish you (see pricing).
Ready to send better email?
Get started free →