Everything you need to reach a user — and the interfaces to swap any piece out when you outgrow it.
Five channels, one platform
Everything you need to reach a user
Email, push, in-app, deep links and automation — behind clean adapter interfaces so you're never locked in.
🔔
Push notifications
Your own FCM credentials
Reach Android and iOS devices through your own Firebase project — FCM relays to APNs for iOS. Retainza batches sends, prunes dead tokens automatically, and never owns your deliverability.
Bring-your-own FCM service account
sendEach batching up to 500/call
Automatic dead-token pruning
✉️
Transactional & campaign email
Any SMTP, provider-agnostic
Send through any SMTP provider with nodemailer. Rich HTML with plain-text fallback, throttled to your provider's rate. SPF/DKIM guidance built in.
Works with SendGrid, SES, Postmark, or your own SMTP
HTML + text multipart
Rate-limit aware throttling
💬
In-app messages
Five layouts, rendered for you
Modal, banner, full-screen, bottom-sheet and custom HTML — all rendered by the SDK, styled from the dashboard. Or take the payload yourself and draw it however you like.
Modal, banner, full-screen, bottom-sheet & HTML
Self-handled rendering when you want it
Frequency caps, quiet hours & queueing
🧭
Deep-link navigation
Route users to any screen
Every message can carry a route — a screen name plus key/value params. Your app maps it to its own navigator, so a tap lands users exactly where you want them.
Structured { screen, kv } routes
onNavigate() maps to your router
Works across push, email & in-app
⚙️
Conditional & automated sends
Segments, schedules & triggers
Target saved segments or inline filters, then fire on a schedule, on an event (with delay + cooldown), or manually. Caps and quiet hours are enforced for every recipient.
Filter operators: eq, gt, lt, contains, in, exists…
Event triggers with delay & cooldown
Daily / weekly / one-off schedules
~20 lines to integrate
One SDK. Your UI stays yours.
A TypeScript core with thin wrappers for Web, React Native and Node. You keep full control of rendering and navigation — Retainza just hands you the message and the route.
Public key is write-only — safe to ship in apps
onInApp / onNavigate mirror your existing renderer & router
Server SDK uses the secret key for campaigns & send-now