Four channels. Clean adapters.Zero lock-in, swap any piece when you outgrow it.

Everything you need to reach a user, push, email, in-app, and deep links, on your own infrastructure.

01

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

02

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

03

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

Ask AIDescribe the audience or campaign, review every draft yourself.

Built into the dashboard next to Campaigns, Segments and Templates. Scoped to your project. Nothing sends without your confirmation.

01

Read

Look at campaigns, sends, segments, analytics and usage in the current project, ask why a send missed people.

02

Draft

Create campaigns, segments or templates for review. Everything lands as draft; you publish in the normal editor.

03

Confirm

Send, pause, activate or delete only after you click Confirm within 5 minutes. The assistant proposes, never executes alone.

Every draft and confirm action is logged on Activity. Billing, credentials and team settings stay on the normal screens, Ask AI cannot change them.

One SDK. Your UI stays yours.~20 lines to integrate, no lock-in renderer.

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
App.tsx
import { Retainza } from "@retainza/react-native";

const engage = Retainza.init({
  publicKey: "pk_live_…",
  userProvider: () => auth.currentUser?.uid,
});

// Identify + track
await engage.identify(uid, { trial_days_left: 3, locale: "de" });
engage.track("opened_paywall");

// Render in-app messages + handle deep links, your way
engage.onInApp((msg) => showModal(msg));
engage.onNavigate((route) => router.push(route));

Security and portability, not an afterthought.Built right, trust it in production, leave whenever you want.

The principles that shape every line of the platform.

01

Multi-tenant from day one

The Project is the isolation boundary. Every write is scoped by projectId; nothing about one tenant is ever reachable by another.

02

Bring your own credentials

Each project connects its own FCM and SMTP. Retainza sends on your behalf and never owns delivery cost or deliverability.

03

Secrets encrypted at rest

Credentials never touch the database in plaintext, only a reference, backed by Secret Manager + per-project KMS envelope encryption.

04

Portable by design, no lock-in

Store and Channel adapter seams mean Firestore→Postgres and Functions→Run are swaps, not rewrites.

Stop burning budget on engagement.Same tools. Less cost. Less complexity.

Book a demo, or start engaging customers today.

Not ready to sign up? Get a free retention plan.

Tell us your app and we'll send which users to reach, on which channel, and when, within one business day.

We'll use your email to reply and follow up. Privacy