Step 01
Call the SDK
Install @zindua/sdk and call send(). Template slug, optional language, channel. One line. Infrastructure stays out of your app.

Pipeline · SDK & API
Call the SDK. We isolate the project, resolve the template, queue, and dispatch. Email, WhatsApp, or push. Same contract.
OTP is a template, not a separate product. Campaigns stay on the dashboard desk.

One call
Connect a channel, pick a template, deliver. Isolation, i18n, queue, and webhooks are already in the pipe.
Your app
Zindua engine
Delivery
Six steps
Step 01
Install @zindua/sdk and call send(). Template slug, optional language, channel. One line. Infrastructure stays out of your app.

Step 02
The request is authenticated and isolated to your project. Each project has its own API key, templates, and connectors.

Step 03
The engine fetches the slug. If a language is requested, that version renders. Otherwise the project default. No fallback logic in your code.

Step 04
The rendered message is enqueued with retries, priority, and rate limits so deliverability stays even when volume spikes.

Step 05
Zindua sends through the connector you already run: Gmail, Outlook, SMTP, WhatsApp on your number, or PushMirror in the app. Provider details stay on our side.

Step 06
The message lands. Open, click, bounce, and read events come back to the dashboard and your webhooks.

import { Zindua } from '@zindua/sdk'; const client = new Zindua({ apiKey: process.env.ZINDUA_KEY,}); await client.send({ to: 'user@example.com', channel: 'email', template: 'welcome', lang: 'fr', variables: { name: 'Alex' },});Connect the line once. Pickup windows, fee reminders, clinic slots, and OTP when you need a code. Same send(). Campaigns stay a desk.
Dashboard, project, WhatsApp. Scan the QR with your service phone. Pause or unlink anytime.

Call from the backend with znd_live_ keys. Keys never touch the browser. Sessions stay on our servers.

Use channel: whatsapp, email, or push. Same templates, variables, and logs.

{
"to": "+243812345678",
"channel": "whatsapp",
"template": "pickup-ready",
"variables": { "order": "ZND-4821" }
}Reliability
From API call to queue, before the provider even sees it.

Credentials encrypted at rest. Never stored in plain text.

Up to 5 attempts with exponential backoff. Reliability by default.

Every event logged. Every error surfaced. Every delivery tracked.
