Retention on autopilot

Catch churn before it happens.

Radiant connects to PostHog + Stripe, watches for the signals that mean someone's about to leave, and reaches out to save them — automatically. Most retention tools tell you who churned. Radiant stops it.

Connects withPostHogStripe

Start recovering revenue now

Launch your first campaign in minutes

Enter your phone number without the country code
The problem

By the time they cancel, it's already too late.

Churn is silent. Usage tapers. They stop logging in. A key action quietly drops off. You don't hear a thing — until the Stripe cancellation email lands in your inbox, weeks after the moment you could've done something about it.

Most tools just confirm the loss after the fact. The window to save someone opens long before they hit "cancel" — and closes just as quietly.

User · last 30 days
Usage ↓
DAY 1Daily active, healthy usage
DAY 9Logins drop off, core feature unused
DAY 21Dormant — hasn't opened the app in a week
DAY 30Stripe cancellation email hits your inbox
How it works

Live in two minutes. Working while you sleep.

STEP 01

Connect

Link PostHog and Stripe with OAuth. No code, no SDK, no engineering ticket. Radiant reads your events and billing so it knows who's who and what healthy looks like.

~2 MIN · OAUTH · READ-ONLY
STEP 02

Detect

Radiant watches for churn signals — engagement drops, dormancy, a key action falling off — and scores who's slipping in real time, before anyone tells you they're unhappy.

ENGAGEMENT · DORMANCY · KEY ACTIONS
STEP 03

Save

When a signal fires, the agent reaches out conversationally to win them back — or pings you to make the call yourself. Either way, you act in time instead of reading about it later.

EMAIL · SMS · OR YOU
AK
Aria Kessler
Pro · $79/mo · dormant 14 days
EMAIL
Hey Aria — noticed you set up two dashboards last month but haven't been back in since. Did the weekly export ever click into place, or did it get in the way?RADIANT · 9:14 AM
honestly the export kept timing out so i gave up on it 😕ARIA · 11:02 AM
Ah — that's on us, and it's fixed now. I can turn on scheduled exports for your account so they just land in your inbox every Monday. Want me to switch it on?RADIANT · 11:05 AM
yes please, that'd actually be perfectARIA · 11:09 AM
The agent

It reaches out like a founder would.

When a signal fires, the agent doesn't blast a templated "we miss you." It works the situation:

Picks the channel
Email by default, SMS if they've opted in. The right surface for the moment.
Drafts from real context
A personalized opener built from what the user actually did — and didn't do — in your product.
Sends via your stack
Delivered through Resend or Twilio, from your domain and number — not a third-party inbox.
Runs a play from your playbook
You set the moves up front. The agent picks the right one for each at-risk user.
pause offerdiscountfounder DMfeature nudgebook a call
You stay in control

Auto-send, or approve every word.

Trust it to run on its own, or keep a hand on the wheel. Flip to manual approval and every message lands in your queue first — read it, edit it, send it, or skip it. Nothing goes out in your name that you didn't want to.

Start in review mode while you learn its voice. Switch to auto-send once you trust it. Change your mind any time.

Outreach queue
MT
Marcus T.EMAIL · feature nudge
Hey Marcus — saw the team added 4 seats but only you've logged in this week. Want me to send the others a quick setup guide so it's not all on you?
JL
Jen L.SMS · pause offer
Hi Jen! Noticed things have been quiet. If you need a breather, I can pause your plan for 2 months instead of cancelling — want me to?
Cancel rescue

Even "cancelled" isn't the end.

The moment someone cancels in Stripe, Radiant triggers a win-back — a real, personal reason to come back, timed for when it still matters. Some of your best saves happen the day after the churn you thought was final.

⚡ STRIPE: SUBSCRIPTION CANCELLED — RESCUE TRIGGERED
Hey Devin — sorry to see you go. Quick one before I close things out: was it the price, or did the API rate limits get in the way? If it's the limits, I just bumped your tier's cap 3× this week.
wait, the limits were the whole reason i left
Then let's not end it here. I'll reactivate you on the new cap and credit you the cancelled month — no charge until you've actually had a fair run at it.
ok yeah, let's do that 🙏
From the founder

I built Radiant because I kept losing customers I never saw leave.

At my last startup, we did everything right on acquisition — and quietly bled it back out the other side. People didn't rage-quit. They just… faded. Logins got sparser, the one feature that had hooked them went untouched, and a few weeks later a Stripe cancellation email would land like a verdict.

The maddening part is that the signal was always there. It was sitting in our PostHog events the whole time — we just had no way to watch for it and act before the moment passed, and no lifecycle team to do it by hand.

So I built the thing I wished I'd had. Radiant watches for the fade, and the second someone starts slipping it reaches out the way a founder would — personal, specific, and in time to matter. If it saves even a fraction of the customers I used to lose silently, it pays for itself many times over. That's the whole idea.

Danny Chmaytelli
Danny Chmaytelli
Founder, Radiant
Catch churn before it happens

Stop reading about churn. Start stopping it.

Connect PostHog + Stripe and let an AI agent save your at-risk users automatically. Book a 30-minute call — I'll show you your own at-risk list live.