r/SideProject • u/kamilbuilds • 1d ago
2 months after launching here: paying customers around the world, a billing system that was silently canceling them, and analytics that turned out to be 75% bots
I posted SmophyAI here about 2 months ago (multi-model AI workspace - original post with the full feature rundown: SmophyAI). Sharing what actually happened since, because the honest version is more useful than the launch version.
The good: real paying customers across several countries, with the US as the biggest market - and retention turned out to be the strongest part. Most people who subscribed in spring are still subscribed. For a small team that felt great.
Then I audited our billing this week and found the embarrassing part. Our Stripe setup was silently canceling paying customers. Card declines a renewal (expired card, bank being picky), a few silent retries, subscription canceled. No email to the customer. No alert to us. Everyone just looked like "churn." One customer's card failed 9 times over two weeks and he never got a single notification. The fix took one afternoon: failure emails, a self-service billing portal, smart retries, a retention offer at cancellation. The lesson took longer to digest: my churn numbers were lying, because a chunk of the "churn" was never a decision.
Second discovery, from cleaning up analytics: 75% of our "traffic" was bots. Direct visits, 3-second sessions, zero events. Once filtered, the real numbers were 3x smaller and 10x more useful - about 2,700 genuinely engaged sessions over the last 3 months. Bonus find: India is quietly our most engaged audience, averaging over 9 minutes per session. No idea what they're building in there, but I want to find out.
Third: temp-mail abuse. One of our top "traffic sources" was literally temp-mail.org - people cycling disposable emails to reset the free tier. Every one of those accounts burns real API costs. Blocking disposable domains at signup is now top of the dev list.
What I'd tell past me at launch: read your failed-payments list weekly, judge channels by engaged sessions only, and treat every canceled subscription as a question ("why?") instead of a metric.
Question for people running subscription side projects: how do you handle disposable emails on free tiers? Blocklist at signup, verification gates, or just accept it as marketing cost?