Engage
In-App Messages
Modal + banner + tooltip surfaces rendered in-app from a server-side rule engine. Trigger on event + segment + screen.
Features
- **4 message types** — `banner` / `modal` / `slideout` / `tooltip`. Content fields: title (optional), body, ctaText, ctaUrl, imageUrl, dismissible.
- **Trigger config** — fire by event type, audience membership, URL match, or fixed delay (0-300s). Mix as needed.
- **Audience targeting** — pick a Customers audience; real-time membership.
- **Appearance** — position (top / bottom / center), theme (light / dark / auto), optional background + text colour overrides.
- **Schedule window** — `startsAt` + `endsAt` for time-boxed campaigns. Inactive flag for soft-pause.
- **Priority** — 0-100; higher wins when multiple messages match the same render slot.
- **Impression tracking** — every render writes to `in_app_message_impressions`. Stats endpoint returns total / active / impressions.
- **SDK helpers** — Web `sendora.messages.*`; RN 0.18.6+ ships `messages.fetchActive()` + `recordImpression()`. Mobile + web parity.
- **Ship without app-store re-submit** — content + targeting + appearance all server-side.
Common use cases
- Audience-targeted modals ("active 14d + free plan → upgrade prompt") without writing custom rendering logic.
- Empty-state nudges + onboarding tooltips driven by Analytics-built audiences.
- Time-boxed announcements (launch banner, scheduled maintenance notice) via `startsAt` / `endsAt`.
In-app messaging
Fetch in-app messages
FREEReturns active messages targeted to the current user. Targeting evaluated server-side against the user's profile + audience memberships.
const { messages } = await sendora.inApp.fetch();
messages.forEach(m => console.log(m.title, m.body, m.cta));Track impression / click
FREEFires `in_app.impression` and `in_app.clicked` events into the analytics stream. Used for conversion + frequency-cap evaluation.
await sendora.inApp.trackImpression(messageId);
await sendora.inApp.trackClick(messageId);Author a message (dashboard)
STARTER+Visual editor in the dashboard: title, body, optional CTA url, audience targeting, schedule + frequency cap. No SDK call — created server-side.
# Author in dashboard → In-app messaging → New message.
# Or POST https://api.sendoracloud.com/api/v1/orgs/<ORG_UUID>/in-app-messages with the same payload.