How to implement in app messaging campaigns in OneSignal for mobile apps

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:

  1. Log into your OneSignal dashboard.
  2. Select your mobile app project.
  3. Go to “Settings” → “In-App Messages.”
  4. 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.

  1. Go to the “In-App Messages” section.
  2. Click “New In-App Message” or similar.
  3. Draft your message:
  4. 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.
  5. Content: Keep it short. You’re interrupting users, so be respectful.
  6. Buttons: Add one or two, max. “Dismiss” and “Learn More” is plenty.
  7. Images: Only use them if they actually help. Stock photos rarely add value.

  8. Targeting:

  9. Everyone: Good for app-wide announcements, but don’t overuse it.
  10. 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.
  11. Frequency Capping: Set limits — users should not see your message every time they open the app.

  12. Triggers (Optional but Powerful):

  13. 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.

  14. Preview and Test:

  15. Use the preview to see how your message will look on different devices.
  16. 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.