12 WordPress Plugins → 1 Postgres: How Supabase Helped Me Reach 100 Paid Subscribers

Rasif Ali KhanRasif Ali Khan
4 min read

WordPress data chaos couldn't scale. Supabase Auth, RLS, and Storage became the backbone that held 100 paid subscribers' private transcripts.

On this page

Transcribe faster with File Transcribe

Upload audio or video, get speaker labels, timestamps, and editable text free to try.

Try it free

WordPress taught me: every feature was another plugin, another table in phpMyAdmin, another way billing desyncs from reality.

I'm Rasif Ali Khan, GFX Bracket, Pakistan. File Transcribe v1 used custom post types, ACF, membership plugins, MyCred minute credits. It made $87.57 on Paddle. Real users. Real money. A data model I could not trust with private audio, and definitely not with 100 paying customers.

Supabase, Auth, Postgres, RLS, Storage, is how I rebuilt the backbone and grew to 100 paid subscribers on v2.

The headline: 100 paid subscribers on Supabase

This series is titled around one outcome: how each app helped me reach 100 paid subscribers after WordPress.

Today File Transcribe has 100 paid subscribers. Their transcripts, media, usage, and plan tiers live in one Supabase project, same Postgres that powers my internal Marketing Center (`mkt_` tables), $0 extra database bill*.

You don't get to 100 paid users on transcription without trust. RLS is that trust, enforced in Postgres, not plugin settings I hope are correct.

Timeline: database pain → Supabase → 100 subs

PhaseReality
v1 earlyWP users + post meta + ACF, works until you query
v1 growthAppSumo prep, more plugins, phpMyAdmin surgery
Security wake-upOld `D:\File-transcribe` archive, hardcoded keys, treat as burned
GFX dashboardFirst Postgres + RLS, I learned proper modeling
v2 rebuildSupabase Auth (Google), Storage, migrations in GitHub
BillingPaddle webhooks → `profiles.plan`, server truth
ScaleFolders, library, jobs, usage events
Today100 paid subscribers, sensitive data in RLS-protected tables

WordPress vs Supabase (full comparison)

Accounts

WordPress v1
WP users + plugin meta
Supabase v2
Supabase Auth + `profiles`

Transcripts

WordPress v1
CPT + ACF fields
Supabase v2
`transcripts` + `transcript_segments`

Media

WordPress v1
WP media + S3 experiments
Supabase v2
Storage + signed URLs

Isolation

WordPress v1
Custom PHP hope
Supabase v2
Row Level Security

Schema evolution

WordPress v1
Admin clicks / raw SQL
Supabase v2
Migrations in git

Marketing ops DB

WordPress v1
Would be another plugin
Supabase v2
Same project, `mkt_` prefix

Webhook idempotency

WordPress v1
Didn't exist
Supabase v2
`webhook_events` pattern

100 paid subs confidence

WordPress v1
Wouldn't attempt
Supabase v2
Shipped

RLS, why transcription needs it at scale

At subscriber #1, a data leak is catastrophic. At #100, it's a company-ending event.

Transcripts include:

  • Therapy and medical calls
  • Legal recordings
  • Unreleased podcast episodes
  • Journalist sources

WordPress isolation = custom code nobody audited. Supabase RLS = Postgres refuses cross-tenant reads even if I ship a bad client query.

That's not enterprise luxury. That's why people pay monthly instead of using a sketchy free tool.

What moved off WordPress (field by field)

v1 ACF nightmare:

  • File name, file URL, transcript body, timestamps, summary, translation, captions, job ID, scattered across fields and post types

v2 normalized model:

  • Upload → Storage path linked to transcript
  • `transcription_jobs` state machine (queued → processing → done/failed)
  • Segments for editor, SRT, VTT export
  • `usage_events`, billing limits from server, not DevTools
  • Paddle customer/subscription IDs on `profiles`

Adding subscriber #100 doesn't add a new plugin. It adds rows, the way SaaS should work.

How Supabase unlocked growth to 100 paid subscribers

Growth needSupabase role
Google sign-in frictionlessAuth, one click from try → account
Saved libraryPostgres + RLS, my files, my folders
Plan enforcement`profiles.plan` + server quota checks
Media retentionStorage policies per tier
Admin visibilityService role for jobs/failures, users still isolated
Marketing CenterSame DB, scrape leads without second Supabase bill

The human story (AppSumo, David, $87.57)

  • AppSumo rejected, I couldn't buy growth; I had to build retention
  • Product Hunt v1, traffic on fragile data layer
  • David Mbugua (YouTube), 3 videos on v1 (channel · 1 · 2 · 3), public proof the WordPress build existed; v2 is what I want him to see
  • $87.57, first proof; 100 paid subscribers, proof the rebuild worked

Supabase let me compete on product quality instead of plugin archaeology.

Results

Time to ship "users see only their data"

WordPress
Weeks PHP
Supabase v2
One migration

Confidence at 100 paid users

WordPress
Zero
Supabase v2
High

Auth provider change

WordPress
Plugin hell
Supabase v2
Config + migration

Ops DB for marketing

WordPress
N/A
Supabase v2
Same project

For Supabase DevRel / marketing

  • WordPress escape · RLS · Storage · Auth
  • 100 paid subscribers, outcome metric
  • Solo founder · Pakistan · Paddle
  • Republish this post, written for your customer gallery

Try File Transcribe · Vercel story · Hub

Rasif Ali Khan

Written by

Rasif Ali Khan

Rasif Ali Khan

Founder, File Transcribe

I made File Transcribe to turn recordings into editable text without extra steps. I write these guides from the workflows I use myself, like meetings, podcasts, lectures, and the rest.

All posts →