Changelog

New updates and product improvements

Email attachments and engagement tracking

emailnew

Zend Email now carries attachments, and every verified domain can opt into open and click tracking — so you can send invoices and receipts as real files, and measure what happens after you hit send.

Attachments

Attach up to 10 files (7 MB total) to any send — PDFs, receipts, images, CSVs. Pass a Buffer or base64 string with the Node SDK, or base64 over the raw API.

await zend.emails.send({
  from: 'billing@yourdomain.com',
  to: 'customer@example.com',
  subject: 'Your invoice',
  html: '<p>Invoice attached.</p>',
  attachments: [
    { filename: 'invoice.pdf', content: pdfBuffer, contentType: 'application/pdf' },
  ],
});

Open & click tracking

Toggle open and click tracking per domain from the dashboard under Email → Domains:

  • Opt-in per domain — off by default, so password resets and other sensitive mail stay untracked unless you choose otherwise.
  • First-touch webhooks — the first open or click fires a message.read / message.clicked webhook.
  • In your metrics — unique and total opens and clicks, plus open and click-through rates, on the deliverability dashboard.

See the Email documentation and the Node SDK to get started.

The official Node.js SDK

sdknew

@usezend/node is the official Node.js and TypeScript client for Zend. One typed client covers every channel, so you can stop hand-rolling HTTP requests.

What's new

  • Every channel, one client. SMS, WhatsApp, email, and voice, plus read-only templates.
  • It never throws. Every call resolves to a { data, error } envelope, so you handle API and network failures inline instead of wrapping everything in try/catch.
  • Typed and dependency-free. Full TypeScript types, built on the platform's own fetch, so it adds nothing to your bundle.

Install

npm i @usezend/node
import { Zend } from '@usezend/node';

const zend = new Zend(process.env.ZEND_API_KEY);

const { data, error } = await zend.emails.send({
  from: 'you@yourdomain.com',
  to: 'customer@example.com',
  subject: 'Hello',
  html: '<p>It works.</p>',
});

See the Node.js SDK documentation to get started.

Voice channel: send calls via the API

voicenew

Zend can now place voice calls alongside SMS, WhatsApp, and email — from the same API and the same credit wallet you already use. Read a message aloud with text-to-speech, or play your own recorded audio.

What's new

  • Text-to-speech and audio modes — send a message body to be spoken, or point at an uploaded audio file.
  • Dashboard send flow — compose and place a call from the dashboard, no code required.
  • Per-call delivery tracking — every call reports its status and duration, and fires your registered webhooks.

Place your first call

curl https://api.tryzend.com/voice/send \
  -H "Authorization: Bearer $ZEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+233201234567",
    "mode": "tts",
    "message": "Your Zend verification code is 4 8 2 1."
  }'

Voice is billed per call from your credit balance. See the Voice documentation to get started.

Real-time delivery metrics and a status page

platformimproved

You can now see exactly what is happening to your traffic. We shipped real-time delivery metrics across every channel and a public status page so you always know the platform is healthy.

What's improved

  • Live metrics for delivery, bounces, and throughput, broken down by channel.
  • Public status page at status.tryzend.com with current uptime.
  • Health in the footer — a quick indicator on every page reflects live system status.

These power the monitoring behind your dashboard so issues surface the moment they appear.

Transactional Email from your own domain

emailnew

Zend now sends transactional email — receipts, password resets, and system notifications — from a domain you own, so messages come from you, not a shared sender.

What's new

  • Bring your own domain — add a domain and verify it with the SPF and DKIM records we generate.
  • Deliverability built in — every verified domain is authenticated and sent through reputation-monitored infrastructure.
  • Real-time tracking — see deliveries, opens, bounces, and complaints as they happen, and manage a suppression list per domain.

Send an email

curl https://api.tryzend.com/email/send \
  -H "Authorization: Bearer $ZEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "receipts@yourdomain.com",
    "to": "customer@example.com",
    "subject": "Your receipt",
    "html": "<h1>Thanks for your order</h1>"
  }'

Email plans include a monthly sending volume; anything beyond it draws on the same credits as SMS and WhatsApp. See the Email documentation and the pricing page.

Registered webhooks for delivery events

webhooksplatformnew

Stop polling for status. You can now register webhook endpoints and Zend will push you a signed event every time a message changes state — across SMS, WhatsApp, Voice, and Email.

What's new

  • Register endpoints in the dashboard under Settings, and pick which events you want.
  • Every channel, one shape — delivery, failure, and engagement events share a consistent payload.
  • Retries and delivery logs so you can see exactly what was sent and replay if your endpoint was down.

Example event

{
  "event": "message.delivered",
  "channel": "sms",
  "message_id": "msg_9f2c...",
  "to": "+233201234567",
  "status": "delivered",
  "timestamp": "2026-06-10T12:34:56Z"
}

See the Webhooks documentation to set up your first endpoint.

Faster bulk messaging and reusable templates

smswhatsappimproved

Sending to many people just got easier. Bulk messaging now moves through reusable contact groups and pre-approved templates, so campaigns are quicker to build and safer to send.

What's improved

  • Contact groups and CSV import — build a list once and reuse it, or import contacts from a spreadsheet.
  • Message templates with dynamic variables and variants, so one template covers many recipients.
  • Campaign monitor — watch throughput and delivery in real time as a batch sends.

Explore the Bulk messaging and Templates guides.

Zend OTP: one-time passwords, done for you

otpnew

Zend OTP handles the whole one-time-password flow so you don't have to — generation, delivery, and verification, with automatic fallback across channels if the first attempt does not land.

What's new

  • Generate and verify with two endpoints — we store and expire codes for you.
  • Channel fallback — start on WhatsApp or SMS and fall back automatically to keep verification rates high.
  • Built for critical moments — OTPs are prioritized for instant delivery ahead of bulk traffic.

Read the OTP documentation to add verification to your login or checkout flow.