ThomasShips
Published on

SaaS Post-Mortem: 411 Signups, 1 Paying Customer

Authors

My last SaaS was a real-time data tool for traders. I built it alone and launched it in February 2026.

By October it had 411 signups and 1 paying customer. It's still online. I'm not working on it anymore.

This is the post-mortem. All the numbers, in the order a visitor would have met them. No product name, because that's not the point. The numbers are.

I built it slowly for myself in the second half of 2025. 10 to 40 hours a week, next to other work. Running costs were small: a domain, hosting, a server. The data APIs were free.

So this wasn't an expensive failure. It was a slow one.

The funnel: from 2,202 visitors to 1 customer

StepCount
Unique visitors since launch2,202
Signups411
Looked at the pricing page146
Started checkout13
Paying customers1

A note on the data. My database counts 411 accounts. PostHog, my analytics tool, tracked 360. I use the database for signups and PostHog for everything else. The visitor count includes some of my own testing, so treat 2,202 as an upper bound.

Where the users came from

PostHog tracked 360 of the 411 signups:

SourceSignups
ChatGPT189
Direct100
Google24
X15
Other (Bing, Yandex, other apps)32

The product ranked #1 in ChatGPT for its niche query. As far as I can tell, that came from solid on-page SEO. I did nothing ChatGPT-specific. More than half of all tracked signups came from there.

It sounds like a dream channel. It wasn't.

ChatGPT described the free plan well. So it sent people who wanted a free tool and people who wanted to learn. Not people with a problem worth paying for.

You can see it in who reached checkout. 7 people from Direct. 6 from ChatGPT, even though ChatGPT sent almost twice as many signups. From X: nobody.

Small numbers. But Direct users also opened the pricing page more often: 55% against 45%.

The traffic source decided the quality of the users more than my landing page did.

They stayed. They didn't pay.

Average session length was 1 to 3 hours. It's a live tool. People kept it open while they traded.

Retention told a different story:

  • Week 1: 10.4% came back
  • Week 2: 3.4%
  • Week 4: 1.4%

Long sessions on a free plan. They were learning. Not buying.

High engagement is not willingness to pay.

The pricing wall

I launched with three plans:

  • Free: 20 rows of live data, the best results blurred
  • Pro, $99 a month: unlimited rows, filters, alerts
  • Platinum, $199 a month: nothing blurred

The prices were high on purpose. I benchmarked one competitor that charged slightly more and started high to see if anything happens at all. Lowering a price is always possible.

For 10 weeks nothing happened.

Then I dropped Pro from $99 to $29. Platinum stayed at $199. In week 11 I got my first paying customer, on the $29 plan.

Then nothing again. He stayed the only one, and by now he has stopped paying too.

So price was a wall. But lowering it didn't open the door. It let exactly one person through.

I don't know where he came from. He never replied to a single email.

Checkout: close, but no payment

13 signed-up users opened checkout. Only 2 submitted the form.

One person filled in the form 11 times in a single day. He picked a payment method. Then he left. I emailed him. No reply. Most of the others went back to the pricing page and left too.

Someone who fills in a form 11 times wants to pay. Something stopped him, and I never found out what. The same goes for everyone else who got that far.

Email: about 2,100 sends, 11 clicks

I sent two kinds of email.

An onboarding sequence of 6 emails over about 12 days: 269 contacts, 1,131 sends, 8 clicks, 9 unsubscribes. Not all 411 signups got it. The sequence went live three weeks after launch, and not everyone agreed to receive emails.

Six campaigns between March and August: 965 sends in total, 3 clicks, 8 unsubscribes.

That is about 2,100 emails and 11 clicks. One person replied. One more talked to me once in the support chat.

The last campaign was the best offer I had: "2 minutes of your time = 7 days of Pro, no card needed." 218 recipients. 0 clicks.

Opens were between 10% and 21%. But Apple Mail inflates opens. Clicks are the honest number.

What I got wrong

I built before I checked anyone would pay. I built it for myself first. That's why it felt right. It's also why I never asked anyone else.

I let the traffic source pick my users. A channel that sends free-seekers gives you a list of free-seekers. That list was a dead channel for email.

The free plan was enough to learn. It showed only a small part of the data. But to understand how the market works, that was enough. And people who are learning don't pay.

More users would have made the product worse. Every trader who acts on the same signal makes it worth less for the next one. That is a bad thing to try to scale.

I had no way to talk to anyone. About 2,100 emails and one reply. That is the biggest mistake, and it gets its own post next.

What I'd do now

  1. Talk to people before writing code. If nobody tells me the problem is worth paying for, I don't build it.
  2. Pick the traffic source for buyer quality, not volume.
  3. Ask for money early, even a small amount. A signup costs the user nothing.
  4. Keep a way to ask "why?" open at all times.

The worst part isn't that nobody paid. It's that I never found out why.

That's why I started a 90-day build-in-public challenge. For the first 60 days I'm not building anything. Instead I write down every time a tool doesn't do what I want. On day 60 I read the list and decide what to build. If you want to follow along, the signup is below.

Get the next post

One email when a new post is published. No spam.

One email to confirm. After that, one email when a new post is published. Unsubscribe anytime. See the privacy policy.