There’s a part of shipping an app I really like: it can start having a life outside my editor. Someone can find it, use it, and decide whether it’s useful without me being there.
Then I open the next project.
I run multiple products on my own, and AI has made that next project easier to start. I can try an idea while I’m still excited about it. Meanwhile, everything I’ve already shipped keeps going: people sign up, payments happen, APIs fail, and hosting bills grow.
I want to know how those apps are doing. I also want to finish the thing in front of me. There’s an awkward bit in between, where I’m working on one product but keeping half an eye on the others.
That’s where Appkeepr came from. I’m the developer behind it. A webhook handler that sends a message to my phone is well within reach. I could ask AI to help write one, or use something like ntfy or Pushover. Plenty of developers are happy with that setup.
My hesitation is the work around the message. Which events should I forward? Which app did this come from? Where will I find it again? When I add another product, how much of that wiring am I taking on again?
If I write the glue myself, its deployment and credentials become mine to look after too. Apparently even the thing watching my apps needs looking after. I wanted the connection to be a small decision I could finish: choose a source, choose what I care about, and give the updates somewhere to go.
For an app using RevenueCat, that means choosing a channel in Appkeepr, copying its webhook URL into RevenueCat, and selecting the updates I want.<sup>1</sup> The connection needs no custom handler. That gets the news into an Inbox. The more interesting part is what I can do with it.
Say someone finishes a trial and becomes a paying customer. I’d like to hear about that. There’s a person on the other side of the work who decided to keep using what I made.
Now put that next to feedback from someone who can’t finish checkout. Here are two example updates from the demo:
The checkout message doesn’t diagnose the bug. It does give me a place to start, with the product name attached.
The channels I follow come together in my Inbox. With push notifications enabled, new messages can reach my phone too. If I want a closer look, I can return to the same message on the web; its read state stays in sync.
Cloud spending is the one I particularly dislike leaving to chance. I can be pleased with how much I’m getting done while the infrastructure is having a productive day of its own.
If I choose $50 as a budget alert threshold, I want to notice the provider’s warning and look at what’s driving the spend. An example threshold. A warning doesn’t cap spending. Appkeepr can receive supported webhook alerts from the provider. The provider still determines when it measures usage and sends the warning.
For uptime monitoring, I add a URL. For domain and certificate expiry reminders, I add a domain. Those checks are built in. Ideally, a domain reminder becomes a boring task I can deal with before it becomes a much less boring problem.
Of course, I can ruin this whole arrangement by forwarding everything.
For a subscription app, I might want to hear about purchases and payment problems while leaving trial starts off. Here’s what that selection looks like: An example selection in Appkeepr’s RevenueCat connection. This connection won’t send messages for the events I leave off. I can change the selection as the app changes.
There’s a useful question to ask before enabling something:
Would knowing this change what I do, or be news I actually care about?
I’d start with one app and the few updates I’d otherwise go looking for. If I keep dismissing one, that’s a reason to revisit the choice.
I still want to open my dashboards when I have something to investigate. I’d just like to spend less time visiting them to find out whether there’s anything to investigate at all.
Which update do you still check a dashboard for, even though you’d rather it came to you?
The connection guide covers setup and event selection. ↩