{"id":3433,"date":"2023-10-27T12:37:09","date_gmt":"2023-10-27T12:37:09","guid":{"rendered":"https:\/\/refiner.io\/blog\/?p=3433"},"modified":"2025-05-27T10:42:23","modified_gmt":"2025-05-27T10:42:23","slug":"in-app-messaging-guide","status":"publish","type":"post","link":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/","title":{"rendered":"In-app Messaging: The Ultimate Guide"},"content":{"rendered":"\n<p>Let&#8217;s not beat around the bush here: There really is no better way to engage users as they&#8217;re using your app than dropping an in-app message on them.<\/p>\n\n\n\n<p>No, really!<\/p>\n\n\n\n<p>Think about it &#8211; In-app message is direct.<\/p>\n\n\n\n<p>It\u2019s timely.<\/p>\n\n\n\n<p>And let&#8217;s face it, it doesn\u2019t have to compete with 48 unread emails or a dozen browser tabs (or anything else, at that.)<\/p>\n\n\n\n<p><em>But here\u2019s the catch:<\/em> most companies still get in-app messaging wrong.<\/p>\n\n\n\n<p>They overuse it. Or underuse it. Or worse\u2014treat it like a push notification.<\/p>\n\n\n\n<p>Yikes.<\/p>\n\n\n\n<p>But in-app messaging isn\u2019t just about pushing a feature or shouting about an update. Done right, it guides users, nudges behavior, and builds momentum inside the product.<\/p>\n\n\n\n<p>Let me show you how.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What Is In-App Messaging?<\/h3>\n\n\n\n<p>In-app messaging refers to any message you show to users <em>while<\/em> they\u2019re inside your product. Not on their phone lock screen. Not in their inbox. Right there, inside the app.<\/p>\n\n\n\n<p>That could be a welcome message when someone signs up. A tooltip guiding them to use a feature. A banner announcing a new integration. Or a modal nudging them to upgrade.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"424\" height=\"511\" src=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Notification.png\" alt=\"In-app notification example.\" class=\"wp-image-3503\" srcset=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Notification.png 424w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Notification-249x300.png 249w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/figure>\n\n\n\n<p>What matters here is <em>context<\/em>. These messages show up based on what the user is doing or where they are in the product journey. They\u2019re timely, targeted, and designed to move users forward.<\/p>\n\n\n\n<p>Unlike push notifications, in-app messages aren\u2019t trying to bring users back. They\u2019re trying to help users do something <em>right now<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why In-App Messaging Matters<\/h3>\n\n\n\n<p>Let me be blunt (again!):<\/p>\n\n\n\n<p>If you\u2019re not using in-app messaging to engage your users, you\u2019re leaving value on the table.<\/p>\n\n\n\n<p>It really is that simple.<\/p>\n\n\n\n<p>Here\u2019s why.<\/p>\n\n\n\n<p>Users are most open to nudges and prompts when they\u2019re actively using your product. Not an hour later in an email. Not three days later in a push. Right there, in context.<\/p>\n\n\n\n<p>In fact, research from Localytics showed that in-app messages can boost user retention by up to <strong>3x<\/strong> compared to apps that don\u2019t use them at all (<a href=\"https:\/\/www.localytics.com\/blog\/benchmark-data-in-app-messaging-drives-3x-higher-user-retention\/\">source<\/a>). And when personalized, those messages see <strong>click-through rates north of 30%<\/strong>.<\/p>\n\n\n\n<p>Insane, right?<\/p>\n\n\n\n<p>Now try getting that from a cold email&#8230;<\/p>\n\n\n\n<p>But more importantly, in-app messages let you speak to users at moments that actually matter.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A new user logs in for the first time? Trigger a welcome message or onboarding tour.<\/li>\n\n\n\n<li>Someone\u2019s hovered over a new feature but never clicked? Drop a subtle tooltip nudging them to explore.<\/li>\n\n\n\n<li>A loyal customer hits a usage milestone? Celebrate it with a custom modal or banner.<\/li>\n<\/ul>\n\n\n\n<p>That\u2019s what makes in-app messaging so powerful. It\u2019s <strong>behavior-driven<\/strong>, not blast-driven.<\/p>\n\n\n\n<p>And that fits perfectly with modern product-led growth strategies. You\u2019re not guessing what to say or when to say it. You\u2019re reacting to what users are doing\u2014and helping them move one step closer to value.<\/p>\n\n\n\n<p>Email and push still have their place, of course. But they\u2019re interruptions. In-app messaging? That\u2019s a conversation happening right inside the product.<\/p>\n\n\n\n<p>That\u2019s where you win trust. That\u2019s where you guide action. That\u2019s where you drive adoption.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Types of In-App Messages<\/h3>\n\n\n\n<p>In-app messaging isn\u2019t one-size-fits-all. Different messages serve different goals\u2014and knowing when to use which type is half the battle. Here are the most common types of in-app messages you should know about:<\/p>\n\n\n\n<p><strong>Modals<\/strong>: The classic popup. Full attention, full interruption. Great for onboarding steps, upgrade prompts, or urgent messages\u2014but use sparingly. Nobody wants a modal overload.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"355\" height=\"363\" src=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Notification-2.png\" alt=\"In-app notification example 2.\" class=\"wp-image-3502\" srcset=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Notification-2.png 355w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Notification-2-293x300.png 293w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><\/figure>\n\n\n\n<p><strong>Tooltips<\/strong>: Small, contextual hints that point users in the right direction. Perfect for product tours or feature discovery. They\u2019re subtle, but powerful.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"398\" src=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/saas-user-activation-inapp-messages-1024x398.png\" alt=\"In-app notification example for onboarding.\" class=\"wp-image-3437\" srcset=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/saas-user-activation-inapp-messages-1024x398.png 1024w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/saas-user-activation-inapp-messages-300x117.png 300w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/saas-user-activation-inapp-messages-768x299.png 768w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/saas-user-activation-inapp-messages-1536x597.png 1536w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/saas-user-activation-inapp-messages.png 1800w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Banners<\/strong>: Usually pinned to the top or bottom of the screen. Ideal for announcements (think new features, outages, or scheduled maintenance). Low friction, always visible.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"198\" src=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Banner-in-app-notification-1024x198.png\" alt=\"In-app notification banners.\" class=\"wp-image-3497\" srcset=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Banner-in-app-notification-1024x198.png 1024w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Banner-in-app-notification-300x58.png 300w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Banner-in-app-notification-768x148.png 768w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/01\/Banner-in-app-notification.png 1263w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>(In-app message banner) <\/p>\n\n\n\n<p><strong>Slide-ins<\/strong>: Messages that slide into view from the side of the screen. These strike a good balance between visibility and subtlety. Great for engagement nudges or feedback requests.<\/p>\n\n\n\n<p><strong>Full-screen takeovers<\/strong>: High-impact. Best for walkthroughs or big updates. Use them when you want to control the entire experience for a moment\u2014like at first login.<\/p>\n\n\n\n<p><strong>Surveys and Forms<\/strong>: Embedded feedback collection tools like NPS, CES, or quick polls. You can ask the right question <em>in the right moment<\/em>, and actually get a response.<\/p>\n\n\n\n<p>Choosing the right message type depends on two things: what you want the user to do\u2014and how disruptive you&#8217;re willing to be.<\/p>\n\n\n\n<p>And yes, \u201cleast disruptive, most useful\u201d is usually the right answer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When to Use In-App Messaging<\/h3>\n\n\n\n<p>The short answer? When context is king.<\/p>\n\n\n\n<p>In-app messages shine when they show up <em>in the moment<\/em>\u2014while the user is already engaged, active, and primed to take action. But not every moment is equal. Here\u2019s when you should absolutely be using in-app messages:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. <strong>Onboarding New Users<\/strong><\/h4>\n\n\n\n<p>You only get one chance to make a first impression. In-app messages are your chance to guide users through the early steps: showing them where to go, what to do, and how to see value fast.<\/p>\n\n\n\n<p>Use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A welcome modal with a short product tour<\/li>\n\n\n\n<li>Tooltips that explain key features<\/li>\n\n\n\n<li>Slide-ins that nudge toward the next step<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udd0d <em>Example<\/em>: Slack uses a series of tooltips to highlight key features like channels, threads, and integrations\u2014making sure new users don&#8217;t get lost.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2. <strong>Announcing New Features<\/strong><\/h4>\n\n\n\n<p>Email open rates are fine. But if a user logs in and doesn&#8217;t know about a new feature, that\u2019s a missed opportunity.<\/p>\n\n\n\n<p>Use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Banners for subtle announcements<\/li>\n\n\n\n<li>Modals if it&#8217;s a major feature release<\/li>\n\n\n\n<li>Tooltips to guide usage<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udcc8 According to Pendo, companies that highlight new features in-app see <strong>40\u201360% more feature adoption<\/strong> within the first week.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. <strong>Triggering Behavior-Based Nudges<\/strong><\/h4>\n\n\n\n<p>Behavioral nudges are where in-app messaging really starts to shine. If someone visited a feature multiple times but didn\u2019t activate it? That\u2019s a perfect moment.<\/p>\n\n\n\n<p>Use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Slide-ins to nudge action<\/li>\n\n\n\n<li>Tooltips with targeted guidance<\/li>\n<\/ul>\n\n\n\n<p>\ud83c\udfaf <em>Example<\/em>: Grammarly uses smart prompts when it detects you haven\u2019t used a tone-check or premium feature that\u2019s relevant to your workflow.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4. <strong>Collecting Feedback<\/strong><\/h4>\n\n\n\n<p>Don\u2019t wait for the user to leave your app to ask how things are going. Ask <em>while they\u2019re still using it.<\/em><\/p>\n\n\n\n<p>Use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CES after feature use<\/li>\n\n\n\n<li>NPS for power users<\/li>\n\n\n\n<li>Short 1-click surveys post-onboarding<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udde3\ufe0f According to Wootric, collecting feedback at the right in-app moment can increase response rates by <strong>up to 7x<\/strong> compared to email.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5. <strong>Driving Upgrades or Monetization<\/strong><\/h4>\n\n\n\n<p>Not every upgrade prompt belongs in a modal. But if someone\u2019s hit their usage limit or keeps interacting with a gated feature, that\u2019s a conversion opportunity.<\/p>\n\n\n\n<p>Use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Slide-ins for gentle nudges<\/li>\n\n\n\n<li>Modals when there\u2019s urgency or value to highlight<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udca1 <em>Example<\/em>: Canva offers contextual prompts when users try to download premium assets\u2014creating upgrade moments that feel natural, not forced.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6. <strong>Celebrating Milestones<\/strong><\/h4>\n\n\n\n<p>Recognition builds loyalty. It also feels good.<\/p>\n\n\n\n<p>Use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Banners or modals to mark usage milestones<\/li>\n\n\n\n<li>Fun animations or congratulatory messages<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\ude4c Whether it\u2019s \u201c100th note created\u201d or \u201c1-year anniversary,\u201d a little acknowledgment goes a long way.<\/p>\n\n\n\n<p>Bottom line: In-app messages should always feel relevant, timely, and helpful. They work best when they match the user&#8217;s intent\u2014not interrupt it.<\/p>\n\n\n\n<p>That\u2019s the secret to making them feel like part of the product\u2014not noise.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Refiner Helps You Push Better In-app Messages to Users<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/11\/Refiner-1024x538.png\" alt=\"Refiner, the best mobile survey app.\" class=\"wp-image-3837\" srcset=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/11\/Refiner-1024x538.png 1024w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/11\/Refiner-300x158.png 300w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/11\/Refiner-768x404.png 768w, https:\/\/refiner.io\/blog\/wp-content\/uploads\/2024\/11\/Refiner.png 1366w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><a href=\"https:\/\/refiner.io\/\">Refiner<\/a> (disclaimer &#8211; this is my product) is built for SaaS and digital product teams who want to engage users <em>inside<\/em> the product, not just blast them with emails or push notifications. <\/p>\n\n\n\n<p>With Refiner, you can trigger beautifully designed, no-code messages\u2014think surveys, announcements, or upgrade nudges\u2014based on real user behavior.<\/p>\n\n\n\n<p>Want to show a tooltip only to new users who skipped onboarding? Easy. <\/p>\n\n\n\n<p>Need to launch an NPS survey after someone completes a key workflow? Done. <\/p>\n\n\n\n<p>You can also segment audiences, set precise triggers, and throttle message frequency to avoid overwhelming your users.<\/p>\n\n\n\n<p>Plus, Refiner integrates seamlessly with tools like Segment, Mixpanel, and HubSpot, so your messages are always in sync with your user data. And with built-in analytics, you\u2019ll know exactly which messages are driving engagement\u2014and which ones need a tweak.<\/p>\n\n\n\n<p><strong>Bottom line: <\/strong>Refiner helps you deliver the right message, to the right user, at the right time\u2014without annoying them. That\u2019s how you turn in-app messaging from a nuisance into a growth engine.<\/p>\n\n\n\n<p><a href=\"https:\/\/refiner.io\/\">Check out Refiner.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Common Mistakes to Avoid<\/h3>\n\n\n\n<p>Let\u2019s be honest\u2014most bad in-app experiences come down to a few avoidable missteps. Here\u2019s what to look out for (and what to fix fast):<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. <strong>Blasting Everyone with the Same Message<\/strong><\/h4>\n\n\n\n<p>In-app messaging isn\u2019t about quantity\u2014it\u2019s about relevance. One of the most common mistakes? Sending the same message to every user, regardless of who they are or what they\u2019ve done.<\/p>\n\n\n\n<p>A generic message might sort of make sense to some users\u2014but it\u2019ll feel random or even annoying to others. Picture this: a user on your free plan gets prompted to \u201cexplore enterprise features.\u201d Or a new signup gets an upsell message before they\u2019ve even activated a single feature. That\u2019s not just ineffective. It\u2019s frustrating.<\/p>\n\n\n\n<p>\u2705 <em>Fix<\/em>: Segment, segment, segment. Tailor your messages based on user type, lifecycle stage, and behavior. If someone\u2019s used a feature three times, speak to that usage. If they\u2019ve never touched it, guide them there gently. Modern messaging tools make this easy. There\u2019s no excuse for a one-size-fits-all blast.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2. <strong>Showing Messages Too Early (or Too Late)<\/strong><\/h4>\n\n\n\n<p>Timing isn\u2019t just a nice-to-have\u2014it\u2019s everything. Show a message too early, and users will dismiss it before it registers. Too late, and the moment of intent is long gone.<\/p>\n\n\n\n<p>Say someone logs in for the first time and gets a modal pushing them to upgrade before they\u2019ve even seen the product. What are they supposed to do with that? Or worse\u2014someone tries a new feature three times, but the helpful tooltip only shows up after they\u2019ve given up.<\/p>\n\n\n\n<p>\u2705 <em>Fix<\/em>: Tie messages to events, not time. Use logic like \u201cuser clicked X but didn\u2019t complete Y within 10 minutes\u201d to surface relevant nudges. Behavior-driven timing means the message shows up <em>when it makes sense<\/em>, not just when the system says so.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. <strong>Overdoing It<\/strong><\/h4>\n\n\n\n<p>Just because you <em>can<\/em> show ten messages doesn\u2019t mean you should. Nothing kills trust faster than bombarding users with banners, modals, tooltips, and slide-ins all in one go.<\/p>\n\n\n\n<p>It\u2019s like being trapped in a product with a dozen chatty sales reps shouting over each other. The result? Cognitive overload, decision fatigue, and a strong urge to hit \u201cX.\u201d<\/p>\n\n\n\n<p>\u2705 <em>Fix<\/em>: Implement message caps and prioritize the most important actions. One high-value message per session is a solid rule of thumb. Make every message earn its place\u2014if it\u2019s not useful, cut it.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4. <strong>Using Vague or Generic Copy<\/strong><\/h4>\n\n\n\n<p>You\u2019ve seen it before: \u201cCheck this out!\u201d or \u201cNew feature available!\u201d That\u2019s not messaging\u2014it\u2019s noise. Without context, users have no idea what they\u2019re being asked to do or why it matters.<\/p>\n\n\n\n<p>Good copy does more than inform\u2014it motivates. It connects the feature to a benefit. It reduces uncertainty. It makes taking action feel obvious.<\/p>\n\n\n\n<p>\u2705 <em>Fix<\/em>: Write like a human who actually wants to help. Instead of \u201cTry our new dashboard,\u201d say \u201cVisualize your usage trends with the new reporting dashboard\u2014now live.\u201d Add clarity, not cleverness.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5. <strong>Ignoring Mobile Optimization<\/strong><\/h4>\n\n\n\n<p>Your messages might look gorgeous on desktop\u2014but are they readable on a phone? If you\u2019re forcing users to pinch-zoom a modal or tap a 6px \u201cclose\u201d button, you\u2019ve already lost them.<\/p>\n\n\n\n<p>Mobile users expect smooth, native-like experiences. Misaligned content, awkward positioning, or inaccessible interactions can kill engagement\u2014and trust.<\/p>\n\n\n\n<p>\u2705 <em>Fix<\/em>: Test every message on mobile devices. Use platform-specific layouts, and keep content concise. Buttons should be easy to tap. And yes, let users dismiss with a swipe.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6. <strong>Forgetting to Measure Performance<\/strong><\/h4>\n\n\n\n<p>You wouldn\u2019t launch a marketing campaign without tracking results. Why treat in-app messaging any differently?<\/p>\n\n\n\n<p>If you\u2019re not measuring message views, dismissals, CTR, and downstream actions, you\u2019re just guessing. And without data, there\u2019s no way to know what\u2019s working (or what\u2019s annoying users).<\/p>\n\n\n\n<p>\u2705 <em>Fix<\/em>: Set clear goals for each message\u2014click, conversion, or feedback completion. Use A\/B testing to compare versions. And always monitor outcomes so you can iterate and improve.<\/p>\n\n\n\n<p>Avoid these mistakes and you\u2019re already ahead of 90% of teams. Because great in-app messaging doesn\u2019t just happen. It\u2019s designed, tested, and constantly refined.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Frequently Asked Questions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">What\u2019s the difference between in-app messaging and push notifications?<\/h4>\n\n\n\n<p>The main difference lies in where and when each type of message is delivered. In-app messaging appears while the user is actively using your product\u2014inside your app or web platform. Push notifications, on the other hand, are sent outside the app to bring users back in.<\/p>\n\n\n\n<p>In-app messages are contextual and immediate. They appear while the user is completing tasks, exploring features, or interacting with your product. That makes them perfect for guiding behavior, nudging conversions, or offering support in real time.<\/p>\n\n\n\n<p>Push notifications are better suited for re-engagement. They\u2019re great for alerts, reminders, and pulling users back after inactivity\u2014but they\u2019re also easier to ignore, especially when users get dozens of them daily.<\/p>\n\n\n\n<p>Use push to drive sessions. Use in-app to enhance them.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Can in-app messages replace email onboarding?<\/h4>\n\n\n\n<p>Not entirely\u2014but they can seriously boost it.<\/p>\n\n\n\n<p>Email onboarding has its place. It\u2019s good for setting expectations, sharing broader context, or providing backup when users drop off. But it relies on someone leaving your app and checking their inbox\u2014something that might not happen as often (or as quickly) as you&#8217;d like.<\/p>\n\n\n\n<p>In-app messages, on the other hand, meet the user <em>in the moment<\/em>. You can guide them through the exact step they\u2019re on, celebrate progress, or resolve confusion before it leads to churn. That level of contextual help is what makes in-app messages more actionable and often more effective.<\/p>\n\n\n\n<p>The best onboarding flows use both: email for high-level nudges, and in-app for step-by-step guidance.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How do I know if my in-app messages are working?<\/h4>\n\n\n\n<p>Measure them like any other part of your product.<\/p>\n\n\n\n<p>Start by tracking basic engagement metrics\u2014views, clicks, dismissals. But don\u2019t stop there. Dig into what happens <em>after<\/em> the message. Did users complete the action? Did they activate a feature? Did NPS or CES scores improve?<\/p>\n\n\n\n<p>A\/B testing is your friend. Try different formats, timing, CTAs, and content. For example, does a tooltip perform better than a banner? Does a softer CTA convert better than a direct ask?<\/p>\n\n\n\n<p>Use those insights to iterate. The best teams treat in-app messages like a product: built, measured, and improved continuously.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How often should I show in-app messages?<\/h4>\n\n\n\n<p>Less than you think. But more strategically.<\/p>\n\n\n\n<p>There\u2019s no magic number\u2014but if your user sees more than one or two messages per session, it\u2019s probably too much. Overexposure leads to message fatigue, banner blindness, and dismissals without engagement.<\/p>\n\n\n\n<p>Instead, focus on relevance and timing. Show messages based on behavior, not the clock. Use segmentation to deliver only what matters. And cap the number of messages a user sees in a day or week.<\/p>\n\n\n\n<p>If your messages are genuinely helpful and well-timed, users won\u2019t mind seeing them. But the second they feel spammy or intrusive, you&#8217;ve lost trust\u2014and maybe the user.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Do in-app messages work for B2B products?<\/h4>\n\n\n\n<p>Absolutely\u2014sometimes even more than in B2C.<\/p>\n\n\n\n<p>B2B users often have more complex workflows, longer onboarding times, and higher stakes when using a product. That makes in-product guidance not just helpful\u2014but critical.<\/p>\n\n\n\n<p>You can use in-app messages to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Walk users through new tools<\/li>\n\n\n\n<li>Introduce role-based functionality<\/li>\n\n\n\n<li>Trigger upgrade nudges based on usage<\/li>\n\n\n\n<li>Collect contextual feedback on features<\/li>\n<\/ul>\n\n\n\n<p>Plus, when multiple users from the same company are onboarded together, in-app messaging keeps the experience consistent and scalable.<\/p>\n\n\n\n<p>If your B2B product relies on user activation, feature adoption, and expansion revenue (and let\u2019s face it\u2014most do), then smart, well-timed in-app messages are a no-brainer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s not beat around the bush here: There really is no better way to engage users as they&#8217;re using your app than dropping an in-app message on them. No, really! Think about it &#8211; In-app message is direct. It\u2019s timely. And let&#8217;s face it, it doesn\u2019t have to compete with 48 unread emails or a [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":3456,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"refiner_sidebar_werbeblock":"1224","footnotes":""},"categories":[6],"tags":[],"class_list":["post-3433","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product-led-growth"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>In-app Messaging Explained<\/title>\n<meta name=\"description\" content=\"In-app messaging: Learn how in-app messaging works, how to use it properly, and how to create successful in-app messages.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"In-app Messaging Explained\" \/>\n<meta property=\"og:description\" content=\"In-app messaging: Learn how in-app messaging works, how to use it properly, and how to create successful in-app messages.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Refiner Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-27T12:37:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-27T10:42:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1450\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Moritz Dausinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mdausinger\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Moritz Dausinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\"},\"author\":{\"name\":\"Moritz Dausinger\",\"@id\":\"https:\/\/refiner.io\/blog\/#\/schema\/person\/55632335b069a1d4a08cfd16de5d4dd2\"},\"headline\":\"In-app Messaging: The Ultimate Guide\",\"datePublished\":\"2023-10-27T12:37:09+00:00\",\"dateModified\":\"2025-05-27T10:42:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\"},\"wordCount\":2689,\"publisher\":{\"@id\":\"https:\/\/refiner.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png\",\"articleSection\":[\"Product-led Growth\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\",\"url\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\",\"name\":\"In-app Messaging Explained\",\"isPartOf\":{\"@id\":\"https:\/\/refiner.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png\",\"datePublished\":\"2023-10-27T12:37:09+00:00\",\"dateModified\":\"2025-05-27T10:42:23+00:00\",\"description\":\"In-app messaging: Learn how in-app messaging works, how to use it properly, and how to create successful in-app messages.\",\"breadcrumb\":{\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage\",\"url\":\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png\",\"contentUrl\":\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png\",\"width\":1450,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/refiner.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"In-app Messaging: The Ultimate Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/refiner.io\/blog\/#website\",\"url\":\"https:\/\/refiner.io\/blog\/\",\"name\":\"Refiner Blog\",\"description\":\"SaaS Growth Tactics &amp; Best Practices in Managing Customer Feedback\",\"publisher\":{\"@id\":\"https:\/\/refiner.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/refiner.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/refiner.io\/blog\/#organization\",\"name\":\"Refiner Blog\",\"url\":\"https:\/\/refiner.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/refiner.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2021\/06\/Refiner-Logo-Blog.png\",\"contentUrl\":\"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2021\/06\/Refiner-Logo-Blog.png\",\"width\":468,\"height\":88,\"caption\":\"Refiner Blog\"},\"image\":{\"@id\":\"https:\/\/refiner.io\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/refiner.io\/blog\/#\/schema\/person\/55632335b069a1d4a08cfd16de5d4dd2\",\"name\":\"Moritz Dausinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/refiner.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ec002e5788821d64a86d8ed49b1d44b9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ec002e5788821d64a86d8ed49b1d44b9?s=96&d=mm&r=g\",\"caption\":\"Moritz Dausinger\"},\"description\":\"CEO of Refiner\",\"sameAs\":[\"https:\/\/x.com\/mdausinger\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"In-app Messaging Explained","description":"In-app messaging: Learn how in-app messaging works, how to use it properly, and how to create successful in-app messages.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/","og_locale":"en_US","og_type":"article","og_title":"In-app Messaging Explained","og_description":"In-app messaging: Learn how in-app messaging works, how to use it properly, and how to create successful in-app messages.","og_url":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/","og_site_name":"Refiner Blog","article_published_time":"2023-10-27T12:37:09+00:00","article_modified_time":"2025-05-27T10:42:23+00:00","og_image":[{"width":1450,"height":1024,"url":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png","type":"image\/png"}],"author":"Moritz Dausinger","twitter_card":"summary_large_image","twitter_creator":"@mdausinger","twitter_misc":{"Written by":"Moritz Dausinger","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#article","isPartOf":{"@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/"},"author":{"name":"Moritz Dausinger","@id":"https:\/\/refiner.io\/blog\/#\/schema\/person\/55632335b069a1d4a08cfd16de5d4dd2"},"headline":"In-app Messaging: The Ultimate Guide","datePublished":"2023-10-27T12:37:09+00:00","dateModified":"2025-05-27T10:42:23+00:00","mainEntityOfPage":{"@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/"},"wordCount":2689,"publisher":{"@id":"https:\/\/refiner.io\/blog\/#organization"},"image":{"@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png","articleSection":["Product-led Growth"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/","url":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/","name":"In-app Messaging Explained","isPartOf":{"@id":"https:\/\/refiner.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage"},"image":{"@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png","datePublished":"2023-10-27T12:37:09+00:00","dateModified":"2025-05-27T10:42:23+00:00","description":"In-app messaging: Learn how in-app messaging works, how to use it properly, and how to create successful in-app messages.","breadcrumb":{"@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/refiner.io\/blog\/in-app-messaging-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#primaryimage","url":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png","contentUrl":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide.png","width":1450,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/refiner.io\/blog\/in-app-messaging-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/refiner.io\/blog\/"},{"@type":"ListItem","position":2,"name":"In-app Messaging: The Ultimate Guide"}]},{"@type":"WebSite","@id":"https:\/\/refiner.io\/blog\/#website","url":"https:\/\/refiner.io\/blog\/","name":"Refiner Blog","description":"SaaS Growth Tactics &amp; Best Practices in Managing Customer Feedback","publisher":{"@id":"https:\/\/refiner.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/refiner.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/refiner.io\/blog\/#organization","name":"Refiner Blog","url":"https:\/\/refiner.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/refiner.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2021\/06\/Refiner-Logo-Blog.png","contentUrl":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2021\/06\/Refiner-Logo-Blog.png","width":468,"height":88,"caption":"Refiner Blog"},"image":{"@id":"https:\/\/refiner.io\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/refiner.io\/blog\/#\/schema\/person\/55632335b069a1d4a08cfd16de5d4dd2","name":"Moritz Dausinger","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/refiner.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ec002e5788821d64a86d8ed49b1d44b9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec002e5788821d64a86d8ed49b1d44b9?s=96&d=mm&r=g","caption":"Moritz Dausinger"},"description":"CEO of Refiner","sameAs":["https:\/\/x.com\/mdausinger"]}]}},"featured_image_src":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide-600x400.png","featured_image_src_square":"https:\/\/refiner.io\/blog\/wp-content\/uploads\/2023\/10\/In-app-Message-Guide-600x600.png","author_info":{"display_name":"Moritz Dausinger","author_link":"https:\/\/refiner.io\/blog\/author\/user\/"},"_links":{"self":[{"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/posts\/3433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/comments?post=3433"}],"version-history":[{"count":12,"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/posts\/3433\/revisions"}],"predecessor-version":[{"id":3989,"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/posts\/3433\/revisions\/3989"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/media\/3456"}],"wp:attachment":[{"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/media?parent=3433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/categories?post=3433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/refiner.io\/blog\/wp-json\/wp\/v2\/tags?post=3433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}