Blog

Message stream: transactional vs marketing email

A message stream is a separate lane for one class of email. See how Postmark streams map to SendRaven's mail. and news. sending identities.

SendRaven5 min read

A message stream is a separate lane for one class of email, usually transactional or broadcast (marketing). Each lane gets its own reputation and its own suppression handling, so one kind of mail can't drag the other down.

This is the email term from Postmark. It is not the ChatGPT "Error in message stream" message, and it is not message streaming or queue systems. In SendRaven you don't configure streams. Each domain gets two sending identities: mail. for transactional and news. for campaigns.

What a message stream is

Postmark splits outbound mail into message streams. A transactional stream carries receipts, password resets and alerts. A broadcast stream carries newsletters and other bulk mail.

The idea is simple. Different mail behaves differently with recipients, so it should live in different lanes.

SendRaven keeps the idea and drops the setting. The lane is a sending identity, and the domain you add creates both identities at once. Messages map like this:

  • A transactional stream is transactional mail.
  • A broadcast stream is marketing.

Why keep transactional and marketing apart

Reputation attaches to the domain and sending identity you use. Mailbox providers score the From domain. If a campaign goes badly and shares an identity with your login emails, your login emails pay for it.

Our own checklist puts it plainly: if both streams share one reputation, the problem can spread to transactional mail.

So transactional and marketing email can live in one API, on one plan, under one key, as long as they never share a reputation. A newsletter should not be able to trash the reputation of your password resets.

The longer argument, including the pricing side, is in one plan for transactional and marketing, two reputations. We won't repeat it here.

How Postmark streams map onto SendRaven

If you're coming from Postmark, this is the translation:

In PostmarkIn SendRaven
Transactional streamTransactional identity (mail.), sent through POST /v1/emails
Broadcast streamCampaigns on the marketing identity (news.)
"MessageStream" field in the requestNo stream field. Transactional sends use a from address on mail.acme.com
Separate suppression list per streamOne suppression list, scoped by kind

Here is the same send, before and after. First, the Postmark side. The request carries a stream field:

"MessageStream": "outbound"

Now the SendRaven equivalent:

POST https://api.sendraven.ai/v1/emails
Authorization: Bearer sk_live_...
Idempotency-Key: welcome-42

{ "from": "Acme <hello@mail.acme.com>", ... }

No stream field to set. None to forget, either. The Idempotency-Key header means a retry with the same key delivers once.

The full mapping lives in the guide to migrating from Postmark to SendRaven. For a feature-by-feature view, see SendRaven vs Postmark.

Set it up: one call, two identities

Add your domain once:

POST /v1/domains
{ "domain": "acme.com" }

You get back two identities, both starting as pending with dns_records to publish:

201
{ "data": [
  { "domain": "mail.acme.com", "risk_class": "transactional", "status": "pending", "dns_records": [ … ] },
  { "domain": "news.acme.com", "risk_class": "marketing", "status": "pending", "dns_records": [ … ] }
] }

mail.acme.com is the transactional lane. news.acme.com is the marketing lane. Each has its own reputation, its own DNS records, its own sending configuration and its own metrics. See how we separate sending identities for the details.

Publish the records, then check:

POST /v1/domains/:id/verify

The response is verified, or pending with ok: false on exactly the DNS record that is still missing. No guessing which of the records you fat-fingered.

One rule to know: marketing-class email has exactly one recipient per message. That is how the marketing lane works, so plan batch sends around it.

Both lanes share one API. Read more on one API for transactional and campaigns.

Suppression lists and unsubscribes

In Postmark, each stream keeps its own suppression list. The transactional and broadcast streams do not share one. To export, open Message Streams, open each stream, then open Suppressions.

SendRaven works differently:

  • One suppression list, scoped by kind.
  • Permanent bounces only are suppressed.
  • Unsubscribe cancels queued campaign sends. Later steps don't sit there waiting.

Export each Postmark stream's list, then follow the ordered import steps in the Postmark migration guide.

One plan, one meter

Both identities sit under one key and one plan. The meter is outbound emails sent. One counted email is one outbound recipient, and To, Cc and Bcc each count. Retries are not counted twice.

Pay for emails sent. Never for contacts stored.

  • Free: $0/month, 3,000 emails/month, unlimited contacts, inbound included, 1 sending domain.
  • Standard: from $19/month for 50,000 emails, with unlimited sending domains.

A verified payment method is required before any sending, including on Free. Sending to the marketing identity costs the same as sending to the transactional one. Both count as emails sent.

What separate identities don't do

Two identities keep reputations apart. They don't promise inbox placement.

We do not have a decade of warm IPs or an abuse team of forty, and we will not quote a deliverability figure until we have earned one.

What moves reputation is the boring work: authentication (SPF, DKIM, DMARC), a gradual ramp on a new domain, and list and bounce hygiene. The spam checklist walks through all of it.

One safeguard does come with the marketing lane. A campaign is refused before it starts if the bounce or complaint rate says so.

FAQ

The questions below are the ones people ask most about this term.

What is a message stream?

A message stream is a separate lane for one class of email, usually transactional or broadcast (marketing). Each lane has its own reputation and suppression handling. In SendRaven, that lane is a sending identity.

Is a message stream the same as the ChatGPT "Error in message stream"?

No. The email term comes from Postmark. The ChatGPT message and message streaming or queue systems are different things.

Do I need separate message streams for transactional and marketing email?

Keep the two classes of mail on separate reputations. If both share one, a campaign problem can spread to transactional mail. On SendRaven you get the separation by adding a domain.

How do Postmark message streams map to SendRaven?

A transactional stream becomes the transactional identity (mail.), sent through POST /v1/emails. A broadcast stream becomes campaigns on the marketing identity (news.). See the Postmark migration guide.

Do I have to pick a stream when I send through SendRaven?

No. There is no stream field in the payload. Transactional sends use a from address on your mail. domain, and campaigns go out on the news. identity.

How do suppression lists work across transactional and marketing mail?

SendRaven keeps one suppression list, scoped by kind, and suppresses only permanent bounces. Unsubscribe also cancels queued campaign sends. Postmark keeps a list per stream, so export each one when you move.

Does separating streams guarantee better deliverability?

No. Separate identities keep reputations apart, but they don't guarantee inbox placement, and we won't quote a deliverability figure. Authentication, warm-up and list hygiene still do the work.

Do I pay more to send marketing email than transactional?

No. There is one meter, outbound emails sent, across both lanes. Contacts are never charged for. Free is $0/month with 3,000 emails, and Standard starts at $19/month for 50,000.

Add your domain and see both lanes

Add your domain and watch mail. and news. appear in one call. Or follow the Postmark migration guide to move your streams over. Runnable examples are in the examples repo.

Start free.

  • message stream
  • messagestream
  • message streams
  • postmark message streams
  • transactional vs marketing email

SendRaven

Try it

Give your agent an inbox, an outbox, and a seatbelt.

3,000 emails a month free, and an MCP server your agent can use today.