Keep password resets and receipts apart from newsletters and product updates. Each Sendzovo message stream has its own credentials, delivery statistics, activity log and pause control, so one type of email never gets in the way of another.
Most applications send two very different kinds of email. Mixing them in one pipeline makes problems harder to see and harder to contain.
Messages triggered by something a user did: password resets, sign-in codes, receipts, invoices, account and security alerts. People expect these immediately, and they are rarely reported as spam.
Messages your application sends to many users at once: product updates, release notes, newsletters and policy notices. They need an unsubscribe option and are more likely to draw complaints.
When both share one stream, a complaint-heavy announcement can drown out the signals from your critical transactional mail, and you cannot tell which kind of email caused a bounce spike. Message Streams give each kind its own lane and its own numbers.
Streams belong to a sending domain. You choose the stream per message, or let Sendzovo use the default.
Every sending domain gets a Transactional stream automatically. If a request does not name a stream, the message goes through this default, so existing integrations keep working with no changes.
Add streams of type Transactional or Broadcast for each
purpose, for example password-resets,
billing or product-updates.
Stream names are unique per domain.
Pass the stream slug in message_stream
when you call the
Send Email API.
The stream must belong to the same sending domain as
your API key.
An email template can be tied to a stream. Whenever that template is used, its message is sent through the assigned stream automatically.
Add one field to your send request. A Broadcast stream also needs an unsubscribe link.
POST https://api.sendzovo.com/v1/messages
{
"from": "notifications@example.com",
"to": [{ "email": "customer@example.net" }],
"subject": "Your password reset code",
"text": "Your code is 482913",
"message_stream": "transactional"
}
POST https://api.sendzovo.com/v1/messages
{
"from": "updates@example.com",
"to": [{ "email": "customer@example.net" }],
"subject": "What's new this month",
"html": "<p>Here is our latest update.</p>",
"message_stream": "product-updates",
"unsubscribe_url": "https://example.com/unsubscribe/abc123"
}
Broadcast requests without unsubscribe_url are
rejected. Sendzovo uses the URL to add a
List-Unsubscribe header, which mailbox providers
expect on bulk mail.
See how unsubscribe links work.
Each stream has its own page in the Sendzovo dashboard, so you can see exactly how each kind of email is performing.
Creating a stream creates API and SMTP credentials for it. Create, regenerate and revoke them per stream, so a leaked newsletter key never touches your transactional sending.
Sent, delivered, soft bounces, hard bounces, spam complaints and failed verifications, for the last day, 7, 30 or 90 days.
Search the messages sent through a stream by subject, sender, tag or recipient, and filter by time range.
Review the recipient verification results and the suppressed addresses connected to each stream.
Pause a stream you created to stop its sending instantly while you investigate, without affecting your other streams.
The built-in streams can't be deleted, and a stream with message history is kept for your records. Pause it instead of deleting it.
The simplest setup: the default Transactional stream for application email and one Broadcast stream for updates and announcements.
Separate streams for authentication, billing and notifications, so you can see at a glance which flow has a delivery problem.
Running several products on one domain? Give each its own stream, credentials and numbers.
Give each team the credentials for its own stream only, and revoke them independently when needed.
A separate lane for one type of email on a sending domain. Sendzovo streams are either Transactional or Broadcast, and each has its own credentials, statistics and activity log.
No. Every sending domain gets a built-in Transactional
stream. Requests without message_stream
use it automatically.
An unsubscribe_url on every message.
Sendzovo adds the List-Unsubscribe header
from it and rejects broadcast requests without one.
Yes. Streams you create can be paused from the dashboard without affecting your other streams.
Yes. Each stream gets its own API and SMTP credentials, which you can create, regenerate and revoke separately.
Yes. Use the SMTP credentials created for a stream and your messages are sent through that stream. See the SMTP settings.
Create a free account, verify your sending domain and your Transactional stream is ready right away. Add a Broadcast stream whenever you need one.