InvergeDocs

In-app messages

Designed modals, bottom sheets, banners, full-screen takeovers and carousels — targeted, personalised and A/B-tested on the server, drawn natively by the SDK.

Design a message in the console's designer — images, badges, headings, text, buttons, spacers, dividers and carousels, with solid, gradient or image backgrounds, a close button, entrance animation, auto-dismiss and right-to-left layout — then choose its audience, trigger and optional A/B test. The Flutter SDK fetches eligible messages and draws them natively.

Enable it

await Nexus.init(const NexusConfig(apiKey: 'nxs_live_xxx', inAppEnabled: true));

The overlay mounts itself (autoShowOverlay, default true). Messages with a session start trigger appear on launch; event triggers fire when you track the event.

Handle button taps

Impressions and clicks are tracked for you, event buttons are tracked as events, and copy buttons copy to the clipboard. The SDK never opens links itself — route them:

Nexus.instance.inApp.onAction = (a) {
  // a.messageId, a.buttonId, a.action ('dismiss' | 'url' | 'event' | 'copy'), a.url, a.event, a.value
  if (a.action == 'url' && a.url != null) launchUrl(Uri.parse(a.url!));
};

Targeting & personalisation

Each fetch sends who this is — the identify() person (name, email, phone, traits), platform, OS, app version, language — plus anything you add:

await Nexus.instance.inApp.setProperties({'plan': 'pro', 'coupon': 'SARA20'});
  • The console's Audience step matches user.*, device.*, app.version and trait.<key> with operators including in and version comparisons.
  • Copy can use {{first_name}} — with a fallback: {{first_name | there}}. Values inserted into links are URL-encoded, so data cannot change a destination.

A/B tests

Add 2–4 variants with weights and a goal event. Each install is assigned one variant and keeps it (signing in does not switch it). The report shows exposure, conversions within the goal window and lift per variant.

Frequency & layouts

  • Layouts: modal, bottom_sheet, banner_top, banner_bottom, fullscreen.
  • maxDisplays per device, and optionally once per session; start / end dates.

Testing

Send test shows a message on a chosen device the next time the app fetches — on open or on returning to the foreground. Devices you've sent a test to become test devices; while their app is open with realtime connected, tests appear instantly. Test impressions are never counted or billed.

Custom presentation

const NexusConfig(apiKey: '…', inAppEnabled: true, inAppAutoShow: false);
Nexus.instance.inApp.show(message);   // present yourself

For a fully custom look set autoShowOverlay: false and mount NexusInAppOverlay(messageBuilder: …) in MaterialApp.builder; the builder gets the parsed message.design (blocks, frame, colours).

Server-driven UIs

Other SDKs can fetch eligible messages and report events — for web or server-rendered surfaces:

const messages = await nexus.inApp.active({ distinctId: 'u_1' });
await nexus.inApp.impression('m1', { distinctId: 'u_1' });
await nexus.inApp.click('m1', 'cta', { distinctId: 'u_1' });

Reference

Flutter · JavaScript · PHP · Python · .NET · REST

On this page