The Zindua Pipeline
From a single function call in your code to delivery in your user's inbox. A robust architecture built for scale and deliverability.
Call the SDK
Install @zindua/sdk and call client.send(). Specify your template slug and an optional language code. One line of code, infrastructure-agnostic sending.
import { Zindua } from '@zindua/sdk';
const client = new Zindua({
apiKey: process.env.ZINDUA_KEY,
});
await client.send({
to: 'user@example.com',
template: 'welcome',
lang: 'fr', // pick any language version
variables: { name: 'Alex' },
});Project Isolation
Your request hits our API, gets authenticated, and is isolated to your specific project environment. Each project has its own API key, templates, and service connectors.
// Zindua isolates by projectKey:
{
"project": "proj_prod_01",
"template": "welcome",
"lang": "fr",
"origin": "api.myapp.com"
}i18n & Engine Resolution
Our engine fetches the template slug. If a language is requested, it resolves that version; otherwise, it falls back to the project default automatically. No logic needed in your code.
// Engine resolves:
// 1. Check 'fr' version ✅
// 2. Render variables
<!-- Template: welcome/fr -->
<h1>Bienvenue, {{name}}!</h1>
<!-- Rendered output -->
<h1>Bienvenue, Alex!</h1>Redis-backed Queue
The rendered email is enqueued in our high-performance system with automatic retries, priority routing, and rate limiting to maximize deliverability across all projects.
// BullMQ job payload:
{
"id": "job_0x9f2a",
"priority": "high",
"attempts": 0,
"projectId": "proj_prod_01",
"renderedHtml": "...",
}Universal Dispatch
Zindua dispatches the email through your connected service (Gmail, Outlook, SMTP, or any modern provider). We handle all provider-specific API nuances for you.
// Dispatching via project service:
{
"service": "gmail_oauth2",
"from": "app@company.com",
"latency": "14ms",
"providerId": "<msg_88281@mail.gmail.com>"
}Delivered & Tracked
The email lands in the inbox. Open, click, and bounce events are captured and routed back to your dashboard and configured webhooks in real-time.
// Webhook event fired:
{
"event": "email.delivered",
"to": "user@example.com",
"openedAt": "2026-04-12T11:43:00Z",
"project": "proj_prod_01"
}OTP on WhatsApp, not only email
Connect your business number once. Send verification codes and transactional messages through the same API. Ideal for Africa where WhatsApp beats SMS cost.
Scan & connect
Dashboard → Project → WhatsApp. Scan the QR with your service phone. Pause or unlink anytime.
Your API key only
Integrate from your backend with znd_live_ keys. Keys never touch the browser; sessions stay on our servers.
One API, two channels
Use channel: 'whatsapp' or channel: 'email'. Same templates, variables, and logs.
{
"to": "243812345678",
"channel": "whatsapp",
"template": "otp-verification",
"variables": { "code": "4592" }
}Reliability as a service
Built-in guarantees that keep your emails flowing.
< 15ms median latency
From API call to queue, before your email provider even sees it.
AES-256-GCM encryption
All credentials stored encrypted at rest. Never in plain text.
Automatic retries
Up to 5 attempts with exponential backoff. Reliability by default.
Full observability
Every event logged. Every error surfaced. Every delivery tracked.
Ready to build?
Connect your service and start sending transaction emails in under a minute.