Engagement

In-app messages that engage

Design visual messages with the drag-and-drop editor, trigger them on events, and render them natively on iOS and Android. Buttons communicate with the native layer via a JavaScript bridge.

Visual Builder powered

Design once, render natively

In-app messages are built with the same Visual Builder you use for landing pages. The SDK fetches the message HTML and renders it in a native WebView. Button actions (close, navigate, deep link) communicate with the native layer through a JavaScript bridge.

  • Drag-and-drop editor: Use the Visual Builder's 12 components to design your message
  • Native WebView: Messages render in a platform-native WebView on both iOS and Android
  • JavaScript bridge: Buttons trigger native actions (close, navigate to screen, open URL) via the bridge
  • No app update: Change message content server-side without shipping a new app version
9:41
Welcome back!
Check out our new features

Show the right message at the right time

Trigger messages on events, target specific audiences, and control frequency.

Event Triggers

Trigger messages on SDK events like app open, screen view, or custom events you define. The SDK checks for eligible messages on each trigger and displays the highest-priority match.

Audience Targeting

Link messages to audience segments built from your analytics data. Show onboarding tips to new users, promotions to power users, or win-back messages to inactive users.

Frequency Control

Set maximum display count per user and minimum interval between displays. Messages can also have start and end dates for time-limited campaigns.

Native bridge

Buttons that talk to your app

Each button in an in-app message can trigger a native action through the JavaScript bridge. Close the message, navigate to a specific screen, open an external URL, or trigger a deep link. The bridge works on both iOS (WKWebView) and Android (WebView).

close Dismiss the message
navigate Go to a screen in the app
deeplink Open a deep link URI
url Open an external URL in browser
// Button action in Visual Builder
{
  "action": "navigate",
  "screen": "/profile/settings",
  "data": { "tab": "notifications" }
}

// SDK receives via JS bridge
TolinkuBridge.onAction(action => {
  if (action.type === "navigate") {
    router.push(action.screen)
  }
})

Test and optimize

A/B test different message designs and measure engagement.

A/B Test Messages

Create multiple message variants with different copy, images, or button layouts. Split traffic with configurable weights and track which variant drives more engagement via custom events and click tracking.

Configurable weights Custom event tracking Declare winner

Cross-Platform Consistency

The same message HTML renders identically on iOS and Android. Design once in the Visual Builder, and both platforms receive the same experience. The JavaScript bridge API is consistent across both SDKs.

iOS (WKWebView) Android (WebView) Same HTML

Send your first in-app message

Design a message in the Visual Builder and assign it to a trigger. No app update required.