
It was 11:47 on a Tuesday night when my phone decided the day wasn't over. It lurched across the nightstand with the grim determination of something that genuinely believed it was saving my life. Buzz. Somebody liked a comment I'd forgotten writing. Buzz. Weekly recap. Buzz. A reminder to finish setting up a feature I'd already decided I didn't need. Then came a security tip, followed immediately by an email explaining the push notification I'd already ignored. Apparently one interruption required documentation. By the sixth buzz I'd stopped reading them. I wasn't interested in the messages anymore. I was interested in the commitment.
The remarkable thing was that none of it was spam. Spam is easy. Spam knows it's spam. It arrives wearing a fake Rolex and asking for your banking information. Everybody understands the arrangement. These were products I liked. Products I'd chosen. Products I'd recommended to friends with the confidence of somebody who'd never had a reason to regret it. Somewhere inside every one of those companies was a perfectly decent human being saying, "The customer should probably know when this happens."
They were right.
Every single one of them.
That's the whole fucking tragedy.
Nobody has ever opened Linear and created an issue called "Convince Customers to Mute the App Forever." That issue would never survive planning. Somebody would ask for evidence. Somebody else would wonder if it was in scope. Eventually it'd disappear into the backlog where bad ideas are supposed to go. Instead they create issues with names so sensible they practically approve themselves: Send receipt after purchase. Notify user when a friend joins. Weekly recap. Security reminder. Feature announcement. We miss you.
Every issue makes perfect sense.
Which is exactly why nobody stops it.
Your customer never sees those issues. They don't know one notification came from Marketing and another from Product. They don't care whose quarterly goals depended on it.
They don't experience your org chart.
They experience Tuesday.
Every software company eventually catches the same disease. It starts with optimism.
"We should notify the customer when this happens."
Nobody argues because it's obviously true.
Then somebody else says the same thing about another feature.
Then Billing needs one.
Security needs one.
Marketing remembers it's Tuesday.
A few months later you've accidentally built a machine whose primary output is tiny rectangles appearing on someone else's phone.
The funny part is that every notification still looks perfectly reasonable. Review them one at a time and you'll approve every single one. Receipts are useful. Password resets are useful. Weekly summaries are useful. Friend requests are useful. Every interruption has a purpose.
Customers don't experience them one at a time.
They experience all of them before lunch.
Customers don't separate your company into departments. They don't think, "Well, technically that interruption came from Marketing." They think:
These people again.
That's the question almost nobody asks.
Not:
"Should we send this?"
But:
"What else have we already asked this person to care about today?"
Those are very different questions.
The companies with the best messaging don't necessarily write better notifications.
They simply send fewer of them.
Sometimes six things happen.
Your customer needs one interruption.
Sometimes twenty things happen.
Your customer needs tomorrow morning.
Software loves the present tense.
People don't.
Software has a curious obsession with speed. Faster databases. Faster APIs. Faster page loads. Faster notifications. If somebody figured out how to deliver a push notification six seconds before something happened, we'd probably call it predictive engagement and give a conference talk about it.
People are less impressed.
A receipt arriving while you're asleep isn't better because it was technically faster. A feature announcement at 3:12 in the morning doesn't become more valuable because it only took 180 milliseconds to deliver.
Somewhere in California somebody proudly clicks Deploy.
Somewhere in Sydney a phone lights up to announce improvements to emoji reactions.
Neither knows the other exists.
Which is kind of the whole fucking problem.
Timing changes meaning.
A notification at two in the afternoon feels helpful.
The same notification at two in the morning feels like somebody ringing your doorbell because they remembered to tell you blueberries are on sale.
Same message.
Different hour.
If the building isn't on fire, it can probably wait until breakfast.
Most notifications aren't emergencies.
They're updates pretending to be emergencies.
Companies imagine customers carefully managing notification settings. Marketing emails twice a month. Push notifications for comments but not reactions. Weekly digests only.
Maybe one person on Earth does that.
The rest of us don't.
We ignore notification settings for months. Then one day our phone buzzes while we're putting a kid to bed, sitting in a meeting, finally falling asleep, or trying to enjoy dinner.
Something snaps.
Not because of that notification.
Because of all the others.
People don't unsubscribe with surgical precision.
They don't calmly evaluate categories.
They don't conduct a thoughtful audit of communication preferences.
They hit the big red fucking button.
Everything goes.
Including the messages you actually needed them to see.
That's the part companies miss.
Every useless interruption teaches the same lesson:
"This probably isn't worth looking at."
Eventually people believe it.
Even when it isn't true.
Nothing makes software look dumber than arguing with reality.
A customer abandons a cart. A reminder is scheduled. Five minutes later they finish the purchase. Two hours after that your system proudly announces they forgot something.
No.
You forgot something.
Support issue solved? The follow-up asking if they're still having problems goes out anyway.
Document signed? Reminder arrives tomorrow morning.
Reservation confirmed? Here's a helpful reminder to finish booking.
Everything worked.
The email arrived.
The push notification arrived.
The reminder arrived.
The only thing that didn't arrive was common sense.
Truth has a shelf life.
Messages should too.
The hard part isn't deciding what to send.
It's deciding what should quietly die because the world changed while your message was waiting its turn.
Nobody celebrates the notification that never got sent.
They should.
There seems to be an unwritten rule in software that if something is important, it should arrive through every communication channel known to mankind.
Email.
Push.
SMS.
In-app.
If carrier pigeons supported webhooks we'd probably have an SDK for that too.
Imagine inviting somebody to dinner this way. You call them. Then text them. Then email them. Then knock on their front door to make sure they saw the text confirming the email about the phone call.
Congratulations.
Dinner is no longer the story.
You are.
Nobody has ever looked at their phone and thought,
"What an elegant multi-channel communication strategy."
They think,
"Why the fuck are these people telling me this four times?"
One message.
One channel.
If that doesn't work, try another.
Don't panic.
Software teams measure delivery rates, open rates, click-through rates, conversions, retries, and a hundred other things that fit beautifully on dashboards.
They're all useful.
None of them answer the question that actually matters.
If we send one more notification this week, are they going to mute us?
That's the metric.
Everything else is bookkeeping.
The funny thing about great messaging is that nobody notices it. Nobody writes a glowing review because a receipt arrived at exactly the right moment. Nobody tweets about a weekly digest that showed up while they were drinking coffee.
They just keep listening.
That's the prize.
Not another open.
Another chance.
Every notification spends a little of that chance. Spend it on things that matter and people will forgive you. Spend it on bullshit and eventually the account runs dry.
The last notification they'll ever read won't look special. It won't come with dramatic music or flashing lights. It'll probably be another perfectly reasonable reminder. A feature announcement. A weekly recap. They'll sigh, swipe it away, open Settings, and hit Turn Off Notifications.
Somewhere inside your company every dashboard will still be green.
Every delivery metric will look healthy.
Every system will have worked exactly as designed.
Nobody will know that was the last notification they'll ever read.
The night my phone lit up at 11:47, I eventually muted one of those apps.
I don't remember which one.
I don't remember the feature announcement.
I don't remember the reminder.
I don't remember the weekly recap.
That's how this always ends.
Nobody loses a customer because of one terrible notification.
They lose them the same way they built the problem in the first place.
One perfectly reasonable decision at a time.

Embed a notification preferences center with one web component
Courier's new @trycourier/courier-ui-preferences package ships a <courier-preferences> Web Component that drops a complete notification preferences center into any web app, framework or not. Users opt in and out of topics, choose which channels deliver each one (email, push, SMS, and more), and set per-topic digest schedules. It supports light and dark theming, custom channel labels, and reuses your existing Courier Inbox auth. React developers get the same UI bundled in @trycourier/courier-react v9.2.0 as the CourierPreferences component, no extra install needed.

5 Best Platforms for Product Messages in 2026
Product messages are a requirement for every SaaS product, but most teams outgrow their initial setup fast. You start with one email provider, add push, then SMS, and suddenly you're maintaining multiple integrations with no shared routing, no preference management, and every copy change requires a deploy. This guide compares five platforms that solve different versions of this problem: Courier for cross-channel messaging with AI tooling, Resend for developer-friendly transactional email, Customer.io for marketing-adjacent journeys, Supabase for built-in auth emails, and Novu for open-source self-hosted infrastructure.

What's the Difference Between Omnichannel & Multichannel
Most teams say "omnichannel" when they mean "multichannel," and in most cases the distinction doesn't matter much. But if you truly want to provide an exceptional customer engagement experience you should know the difference. Both involve sending messages across email, push, SMS, Slack, and in-app. They terms diverge when those channels know about each other. Multichannel means you can reach users on multiple channels. Omnichannel means those channels share state, so a user who reads a push notification won't get the same message via email an hour later. This guide breaks down the real distinctions, when the difference actually matters, and which messaging platforms deliver true omnichannel coordination.
© 2026 Courier. All rights reserved.