If you’ve got a mobile app and want to actually talk to your users — not just toss push notifications into the void — in-app messaging is your tool. Done right, it’s a way to nudge, inform, or even save users from bouncing. If you’re using OneSignal, it’s pretty straightforward, but there are pitfalls and a fair bit of hype to ignore. This guide is for developers, product folks, or marketers who want to send targeted in-app messages without getting lost in theory or vendor fluff.
What Is In-App Messaging, Really?
Let’s be clear: in-app messaging isn’t push notifications. These messages show up only when someone is actually using your app — think onboarding tips, feature announcements, or gentle nudges to complete a profile. They don’t go through the OS notification tray and they won’t wake up dormant users. If you expect to re-engage churned users with in-app messaging, it won’t happen. But for guiding active users or running promos, they work.
Step 1: Get Your App Ready
You can’t run in-app campaigns until your app is hooked up to OneSignal. If you’ve only set up push notifications, you’ll need to do a bit more.
- SDK Version: You need OneSignal's mobile SDK integrated—version 4.0.0 or newer for most platforms. If you’re way behind, update now. Old SDKs won’t support in-app messaging.
- Platform Support: This works for iOS, Android, and most cross-platform frameworks (React Native, Flutter, etc.). Check the official docs for any edge cases.
- Permissions: No special user permissions are needed for in-app messaging (unlike push), but double-check your privacy policy if you’re collecting data for targeting.
Pro tip: If you’re also using push, double-check your initialization code. Some devs accidentally disable in-app messaging by misconfiguring the SDK.
Step 2: Enable In-App Messaging in Your OneSignal Dashboard
Don’t assume it’s on by default. Here’s what to do:
- Log into your OneSignal dashboard.
- Select your mobile app project.
- Go to “Settings” → “In-App Messages.”
- Make sure in-app messaging is enabled.
If you don’t see these options, you might be on a legacy plan or your role doesn’t have permissions. Talk to whoever set up your account.
Things to ignore: Don’t waste time fiddling with “Journeys” if you just want to send a simple message. Journeys are OneSignal’s name for multi-step automations — great if you want to build a whole onboarding flow, but overkill for a one-off campaign.
Step 3: Create Your First In-App Message
This is where most of the magic (and most of the confusion) happens.
- Go to the “In-App Messages” section.
- Click “New In-App Message” or similar.
- Draft your message:
- Message Type: You can do banners, modals, full-screen takeovers, or simple alerts. If you’re not sure, start with a modal—it’s hard to miss but not as annoying as full-screen.
- Content: Keep it short. You’re interrupting users, so be respectful.
- Buttons: Add one or two, max. “Dismiss” and “Learn More” is plenty.
-
Images: Only use them if they actually help. Stock photos rarely add value.
-
Targeting:
- Everyone: Good for app-wide announcements, but don’t overuse it.
- Segments: This is where OneSignal shines. You can target based on tags (properties you set, like “has_completed_onboarding”), device type, language, or even custom events.
-
Frequency Capping: Set limits — users should not see your message every time they open the app.
-
Triggers (Optional but Powerful):
-
Trigger messages after a specific event, like “user signed up” or “added item to cart.” You’ll need to track these events in your app code and send them to OneSignal as custom events.
-
Preview and Test:
- Use the preview to see how your message will look on different devices.
- Send it to a test user or device first. Don’t skip this — layouts can break or messages can show up at the wrong time.
What to skip: Don’t try to get fancy with A/B testing on your first campaign. Get the basics working, then experiment.
Step 4: Set Up Triggers and Tags in Your App Code
If you want your in-app messages to show up based on real user activity (not just “app opened”), you’ll need to add some code.
- Tags: These are key-value pairs you send to OneSignal. Example:
{"subscription_status": "trial"}
. You can use these to target messages. - Custom Events: Fire an event when a user does something important, like finishing onboarding or making a purchase.
Sample (pseudo)code:
javascript
// Example using OneSignal's JS SDK
OneSignal.sendTag("completed_onboarding", "true");
OneSignal.sendOutcome("purchase_completed");
Check your platform’s OneSignal SDK docs for the right syntax.
Pitfall: Don’t go overboard tagging every little action. Focus on the 2-3 moments that matter (onboarding complete, purchase, hit a paywall, etc.). Noise will just make your targeting messy.
Step 5: Launch and Monitor
Once your message is live, keep an eye on it.
- Metrics to watch: Impressions (how many times it was shown), clicks (button taps), conversions (if you set up a goal, like “clicked Learn More”).
- Message fatigue: If users keep seeing messages and ignoring them, dial it back. In-app messaging is not a substitute for good UX.
- Bugs: Sometimes messages don’t render as expected on every device. If users complain, pause the campaign and fix ASAP.
Reality check: You probably won’t get amazing engagement on every message. That’s normal. Don’t chase vanity metrics — focus on what actually moves your business.
Step 6: Iterate, But Don’t Overcomplicate
Here’s where most teams make it messy. You don’t need to run 10 experiments at once. Start simple:
- Run one campaign, see what happens.
- Tweak your message or targeting if it flops.
- Try a different trigger or segment if you’re not reaching the right users.
Ignore: “Best practices” lists that say you need multi-step journeys, emojis everywhere, or daily nudges. Most users want less interruption, not more.
Pro Tips and Honest Warnings
- Don’t spam: If you send too many in-app messages, people will tune them out — or worse, uninstall.
- Keep copy tight: If you need more than two short lines and a single button, maybe you need a different channel.
- Test on real devices: Emulators can lie. Test on both iOS and Android hardware.
- Don’t treat in-app like email: No one wants a newsletter as a popup.
- Privacy: If you’re using custom tags for targeting, make sure you’re not tracking anything you wouldn’t want to explain to a regulator.
Common Headaches (and How to Dodge Them)
- SDK not up to date: Half of “it doesn’t work” issues come from using an ancient SDK.
- Message shows too often: Always set frequency caps. Annoying users isn’t growth.
- Targeting too broad: If you’re showing the same message to everyone, you’re missing the point.
- Design breaks on small screens: If your designer’s only looking at a Pixel 7, you’re in for a surprise when users fire up your app on an iPhone SE.
Wrapping Up
In-app messaging in OneSignal is powerful, but don’t let the feature list tempt you into overengineering. Start with a single, well-timed message. Focus on value, not volume. If users respond, build from there. If not, tweak and try again. The best results come from simple, targeted, respectful nudges — not from bombarding users with every trick in the book. Keep it simple, test, and iterate. That’s really all there is to it.