1
1 Comment

Day 6 - Waitlist live, email automation working, and a debugging session I never want to repeat

Here it is:


Day 6 — Waitlist live, email automation working, and a debugging session I never want to repeat

Shipping days are supposed to feel clean. Today did not feel clean.

The goal was simple. Add a waitlist form to the landing page, connect it to Supabase, send a confirmation email when someone signs up. Should have taken two hours.

It took most of the day.

The Supabase connection kept returning null for both data and error on every form submission. No helpful error message. Just silence. I checked the RLS policy, rewrote the insert logic three different ways, disabled row level security entirely, tried a Postgres function with security definer to bypass permissions completely. Still nothing showing in the table.

The maddening part was that the Network tab was showing a 201 status the entire time. The insert was succeeding. The data was just not appearing. Turned out the issue was deeper in how Lovable initialises the Supabase client, the environment variables were being read differently than expected and the response object was never returning data even on a successful insert.

Eventually I stopped trying to fix the client and switched to a simpler approach that just works. Lesson learned, when you're going in circles for more than an hour, change your approach entirely rather than keep debugging the same thing.

But here's what actually shipped today.

Waitlist is live on the landing page. Two forms, one in the hero section, one above the footer. Every email submitted gets saved and triggers an automatic confirmation email from noreply@getconviction.io. The email tells them they're on the list, explains what Conviction does in two sentences, and points them to @HarperHermes on X while they wait.

The app is no longer accessible from the landing page. No launch app button, no try it now section. The only action a visitor can take is join the waitlist. That's intentional, I want to build a list of genuinely interested people before opening access rather than letting anyone in and getting low-quality early users.

Blog post 3 is live. Targeting the keyword "how many crypto positions should you hold." 1,580 words, specific allocation framework with exact percentages tied to conviction scores. All four blog posts are now submitted to Google Search Console. The blog index page is live at getconviction.io/blog.

The meta title and description are updated. Previous title was too generic. New title is "Conviction — Know Exactly Which Crypto to Buy, Hold or Sell" which directly matches search intent and should improve click-through rate from the current 0% on 45 weekly impressions.

Numbers today:

Waitlist signups: building from zero — form went live today

Blog posts live: 3

Google Search Console average position: 9.4

Weekly impressions: 45

X personal account impressions last 7 days: 12.3K

X brand account: still suspended, appeal filed

Paying users: 0 — Stripe not yet set up

The honest reflection from day 6 is that the unglamorous debugging work takes longer than the product work. Half a day on a form submission that should have taken an hour. But the compounding effect of having a proper waitlist pipeline — form, database, automated email, is worth it. Every person who finds the site now gets captured and nurtured rather than bouncing and disappearing.

Tomorrow: AlternativeTo submission, reply strategy on X, and starting the Signal scanner build.

posted toAvatar for product Conviction App
Conviction App
  1. 1

    Hey, saw your waitlist launch — honestly great execution on setting up the pipeline.

    I noticed you're still at 0 users — we actually help early-stage apps get their first real users through creator-driven promotion.

    Instead of random traffic, we focus on bringing targeted users who actually engage and join waitlists.

    If you're open, I can share a simple plan to get your first initial users and traction.