How to Implement In-App Messaging
TL;DR
In-app messages appear when the moment is right. They can welcome new users, explain a feature, or push someone to complete checkout. Unlike email or push, they live inside the product and speak while the user is still listening. This guide walks you through how they work and how to set them up.
What In-App Messages Do Inside Your App
An in-app message is a piece of content displayed within the app interface itself. Common formats include:
- Pop-ups (modals): windows that appear over the main interface.
- Bottom sheets: panels that slide up from the bottom without blocking the entire screen.
- Fullscreens: panels covering the full display with interactive elements.
Unlike push notifications or email, these messages are delivered only when the user is already active in the app. Their purpose is to provide contextual information, guide behavior, or highlight functions without redirecting the user outside the product environment.
In practice, they are applied to solve specific product and marketing challenges:
- Onboarding: guiding new users through the first actions.
- Promotion: informing about discounts or new products.
- Feature adoption: highlighting functions that might otherwise remain unnoticed.
- Retention: encouraging users to return or complete abandoned actions.
The effectiveness of in-app messages depends on timing and context. A message linked to a clear trigger such as app launch, reaching the checkout page, or clicking a product category will integrate smoothly into the user journey. Random or excessive messages increase friction and reduce trust.
How to Create In-App Messages: Step by Step
In-app messages require one technical component before they can be created: the SDK. An SDK, or software development kit, is a block of code that connects your app to a third-party service.
Once installed, it enables the app to display formats such as stories, mini-games, or in-app messages. Integration is a one-time process. After this step, your marketing and product teams can design and publish messages directly through the console. The example below is based on how these steps are implemented inside the InAppStory platform.
Step 1. Choose the format
In-app messaging platforms usually offer three formats:
1. Pop-ups (modals): small windows that open on top of the interface. They work well for time-sensitive information such as discounts or confirmations.

2. Bottom sheets: sliding panels from the bottom of the screen. They deliver content without fully interrupting the user’s current flow.

3. Fullscreens: panels that take over the entire screen. They are suitable for onboarding steps, tutorials, or campaigns that need maximum visibility.

Each format can be reused, cloned, or edited in the console. Format selection depends on the business goal: onboarding calls for fullscreen guidance, while a promo code may be better suited to a pop-up.
Step 2. Add the content
Once the format is chosen, the editor allows you to insert content blocks:
- Text: short instructions, product highlights, or explanations.
- Image or video: visuals to demonstrate or promote.
- Buttons and swipe actions: to direct users to the next screen or checkout.
- Widgets: extra functions such as copy-to-clipboard, barcode, or swipe-up redirection.
Backgrounds can be customized in several ways: using predefined colors, a color picker, or a full image upload. Important interface elements should not be embedded into the background image, as resizing may crop them on different devices.
Step 3. Set display rules
Rules define how often and under what conditions the message appears:
- Frequency limit: show once, every time, daily, or at longer intervals.
- Opening limit: total number of impressions allowed across all users.
- Priority: order in which a message is displayed if several are triggered at the same time. Higher numbers take precedence over lower ones.
For example, a message with priority “10” will be shown before one with priority “9,” even if both share the same trigger. If limits conflict (e.g., hourly vs daily), the stricter one applies.
Step 4. Configure additional fields
Advanced settings let you pass custom data:
- Slide payloads: carry metadata across iOS, Android, and web for tracking or personalization.
- Content fields: specify values such as “yes/no,” numbers, or strings to customize the message content for each user.
- Descriptions: internal notes for team members, invisible to end users.
These options help align messages with analytics systems and CRM workflows, ensuring consistency between marketing and product data.
Step 5. Preview and publish
Before publishing, each message can be previewed on a real device. Scanning a QR code in the console loads the draft into a test app for validation. After adjustments, the message can be published according to the defined rules. Once live, its performance (opens, clicks, and CTR) is tracked in the analytics console.
How to Make In-App Messages Valuable
Value comes from how precisely messages are integrated into the app journey. They should feel like part of the product, not a layer on top of it. Below are principles and features that advanced teams use to make in-app messaging both effective and unobtrusive.
Key principles and controls
Area | Why it matters | Features you can configure | Risks if ignored |
---|---|---|---|
Publishing rules | Prevents user fatigue by limiting exposure. | Frequency caps, opening limits, event triggers, scheduling. | Overexposure, uninstalls. |
Personalization | Increases relevance and trust. | Text variables, images, links tied to user segments. | Generic, “spammy” campaigns. |
Visual design | Grabs attention without overwhelming. | Pop-ups, bottom sheets, fullscreens; CTAs, promo codes, barcodes, widgets (e.g., countdowns). | Cluttered layouts, ignored CTAs. |
Targeting | Ensures the right segment sees the right message. | Tags, cohorts, CDP integrations, segment builder. | Irrelevant prompts, poor CTR. |
Analytics | Links engagement to product metrics. | Opens, clicks, CTR on dashboards; exports to CSV/XLS/API. | Blind spots, no optimization. |
⚡ Applied in real user journeys
- Homepage: Fullscreens, bottom sheets, pop-ups, and even gamification can appear when the app opens, setting the tone for onboarding or promotions.
- Search and profile pages: Bottom sheets or short pop-ups guide discovery without interrupting flow.
- Offer pages: Fullscreens and bottom sheets highlight promotions, while keeping users focused on conversion.
- Loyalty sections: Gamification and fullscreens reinforce retention programs and keep customers engaged.

Mapping formats to specific stages ensures each message serves a clear role. For example, a discount shown as a bottom sheet during checkout feels supportive, while the same message as a fullscreen on the homepage may feel intrusive.
Conclusion
Looking at the flow of a user journey, it’s clear that no single in-app message type works everywhere. A fullscreen that feels helpful on day one becomes annoying on day thirty. A bottom sheet that nudges checkout works only if shown once, not ten times. The power of in-app messaging lies in making these trade-offs consciously, with data guiding each decision.
What follows from this is simple: in-app messages are not just a feature to enable but a practice to maintain. The most effective teams treat them as part of the product experience, not as a campaign channel to be switched on and off. They test, cap, personalize, and measure, and they know that the user’s trust is the ultimate metric.