OneSignal

Win-Back Campaigns with OneSignal

How to win back users using OneSignal. Step-by-step implementation guide with real examples.

RD
Ronald Davenport
March 29, 2026
Table of Contents

What Win-Back Campaigns Actually Require

Re-engaging churned users is a targeting and timing problem. You need to identify the right segment of lapsed users, deliver a message that acknowledges the gap, and follow up systematically without spamming people who have already moved on.

OneSignal gives you the core infrastructure to do this without enterprise pricing. The free tier supports up to 10,000 subscribers, and the platform's Segments, Automated Messages, and Journey Builder features cover most win-back scenarios. Here is how to build a working campaign from scratch.

---

Define Your Lapsed User Segments First

Before you send a single notification, you need a clear definition of "lapsed." Most teams use one of three thresholds:

  • Soft lapse: 7–14 days without app open
  • Hard lapse: 30–60 days without app open
  • Churned: 90+ days, or users who have explicitly opted out of communications

OneSignal uses Data Filters inside its Segments tool to build these groups dynamically. The segment updates automatically as users move in and out of your defined criteria — you do not need to export a CSV or run a manual query.

Building a Lapsed Segment in OneSignal

  1. Navigate to Audience → Segments in your OneSignal dashboard
  2. Click New Segment
  3. Add a filter: Last Sessiongreater than → set your threshold (e.g., 14 days)
  4. Optionally layer a second filter: First Sessiongreater than → 30 days (to exclude brand-new users who simply haven't returned yet)
  5. Name the segment clearly — something like `Lapsed 14-30 Days`
  6. Save and repeat for each tier

You can also filter by Subscription Status, Country, Language, and custom Tags if you have behavioral data piped into OneSignal from your backend. Tags are the highest-value filter for win-back because they let you target based on what a user actually did — purchased, completed onboarding, used a specific feature — rather than just time-based signals.

---

Structure Your Win-Back Message Sequence

A single push notification rarely wins anyone back. The pattern that works is a short sequence with escalating value offers and a clear stopping condition.

A practical three-message structure:

| Message | Timing | Angle |

|---|---|---|

| Message 1 | Day 1 of lapse threshold | Reminder — "We noticed you've been away" |

| Message 2 | Day 3 after Message 1 | Value — surface a feature or benefit they haven't tried |

| Message 3 | Day 7 after Message 2 | Incentive — discount, free content, or exclusive access |

If the user re-engages at any point (opens the app, logs in), they should exit the sequence immediately. OneSignal's Journey Builder — available on paid plans — handles this branching logic natively. On the free tier, you will need to manage exit conditions manually using segment updates or by removing tags via the OneSignal API.

---

Building the Campaign in OneSignal

Option 1: Automated Messages (Free Tier)

Automated Messages in OneSignal let you send a triggered notification based on a segment membership. This is the free-tier path.

  1. Go to Messages → Automated
  2. Click New Automated Message
  3. Select your lapsed segment as the audience
  4. Set the delivery trigger — typically immediately when a user enters the segment
  5. Write your message. Keep the title under 50 characters and the body under 100. Include a call-to-action URL that deep-links directly into the relevant section of your app
  6. Set a delivery window to avoid sending notifications at 2am in the user's timezone — OneSignal's Intelligent Delivery feature handles timezone-aware sending automatically

The limitation here is sequencing. Automated Messages in the free tier support one message per trigger condition. To build a true multi-step sequence, you either pay for Journey Builder or you create separate Automated Messages tied to separate segments (e.g., `Lapsed 14 Days`, `Lapsed 17 Days`, `Lapsed 24 Days`) and manage the logic externally.

Option 2: Journey Builder (Paid Plans)

Journey Builder is OneSignal's visual workflow tool. It is the right choice if you need branching logic, multi-step sequences, or cross-channel coordination between push, email, and in-app messages.

To build a win-back journey:

  1. Go to Messages → Journeys
  2. Click New Journey and select your entry segment (e.g., `Lapsed 14-30 Days`)
  3. Set the entry trigger: user enters the segment
  4. Add your first push notification node with a 0-day delay
  5. Add a Wait node (3 days)
  6. Add a Branch node: did the user open the app since Message 1? Use the Last Session filter to check
  7. Route engaged users to an Exit node — do not continue messaging them
  8. Route non-engaged users to Message 2
  9. Repeat the wait-branch-message pattern for Message 3
  10. After Message 3, route all remaining users to Exit regardless of behavior

Getting the most out of OneSignal?

I'll audit your OneSignal setup and show you where revenue is hiding.

This structure prevents over-messaging and keeps your opt-out rates from damaging your sender reputation.

---

Personalization and Messaging Tactics

Generic "we miss you" messages underperform. Use Message Personalization in OneSignal to pull in user-specific data via Tags.

If your backend sends a tag like `last_product_viewed = running shoes`, your notification can read: *"Your running shoes are still waiting — and now 15% off."* That requires you to instrument tag writes via the OneSignal SDK or REST API when users take actions in your app.

OneSignal also supports A/B Testing on paid plans. For win-back specifically, test:

  • Emotional framing ("We miss you") vs. value framing ("Here's what's new")
  • Notifications with images vs. text-only
  • CTA copy: "Come back" vs. "See what's changed"

---

Limitations to Know Before You Build

OneSignal is a solid starting point for win-back, but it has real constraints:

  • No native suppression lists: If a user converts via another channel (email, SMS), OneSignal will not automatically remove them from your push sequence unless you update their tags or segment membership via the API
  • Limited behavioral data: OneSignal tracks session data and custom tags, but it does not ingest event streams natively. You will need a CDP or your own backend to push behavioral tags for anything beyond basic session tracking
  • Journey Builder is paywalled: Multi-step branching is not available on the free tier. Budget for the Growth plan ($9/month as of publication) if sequencing matters to your use case
  • Push opt-in rates: Win-back only works for users who still have push enabled. Users who revoked permissions are invisible to OneSignal — plan a parallel email or SMS channel for that segment

---

Measuring Campaign Effectiveness

Track these metrics specifically for win-back:

  • Re-engagement rate: percentage of targeted lapsed users who open the app within 7 days of campaign entry
  • Sequence completion rate: how many users received all three messages without re-engaging (this tells you whether your incentive is compelling enough)
  • Opt-out rate per message: if Message 3 drives significant unsubscribes, your incentive may feel too aggressive or too late

OneSignal's Delivery Statistics dashboard shows open rates and click-through rates per message. For re-engagement rate, you will need to cross-reference with your app's session analytics.

---

Frequently Asked Questions

Does OneSignal support time zone-aware delivery for win-back sequences?

Yes. OneSignal's Intelligent Delivery feature detects each subscriber's local time zone and sends notifications at the most optimal time within your specified delivery window. You enable this per message in the delivery settings. It works on both automated messages and Journey Builder nodes.

Can I use OneSignal's free tier for a complete win-back campaign?

Partially. The free tier supports segmentation and single-trigger automated messages, which covers the basics. You can simulate a sequence by creating multiple segments at different lapse thresholds. However, true multi-step branching with exit conditions requires Journey Builder, which is a paid feature.

How do I prevent re-engaged users from receiving the rest of the sequence?

In Journey Builder, add a Branch node after each message that checks whether the user has had a session since the campaign started. Route re-engaged users to an exit node. On the free tier, handle this via the API — when your backend detects a session from a lapsed user, call the OneSignal API to update a tag (e.g., `winback_status = re-engaged`) and adjust their segment membership to exclude them from further messages.

What opt-out rates should I expect from win-back campaigns?

Win-back campaigns to lapsed users typically see higher opt-out rates than standard engagement campaigns — 3–8% per message is common, compared to 0.5–1% for regular campaigns. This is expected because you are targeting users who have already disengaged. Set your stopping condition at three messages maximum and monitor opt-out rates closely. If any single message exceeds 10% opt-outs, pause and revise the copy before continuing.

Related resources

Get the Lifecycle Playbook

One framework per week. No fluff. Unsubscribe anytime.