Bundle SaaS Onboarding: Clerk vs Supabase Auth vs WorkOS
Tiga bundle auth saya jalankan paralel di SaaS B2B Jakarta 20 bulan. Clerk USD 25-180/bulan untuk team kecil-medium. Supabase Auth gratis-USD 25/bulan + self-host option. WorkOS USD 125-500+/bulan untuk enterprise SSO/SAML. Verdict per skala customer.
TL;DR
- Clerk USD 25-180/bulan: best DX, UI komponen jadi (sign-in/up, profile, organization). Recommended untuk SMB-mid market SaaS.
- Supabase Auth gratis-USD 25/bulan: bundled dengan Postgres, self-host option, cost-efficient. Recommended untuk MVP + cost-sensitive.
- WorkOS USD 125-500+/bulan: enterprise SSO/SAML/SCIM, audit log, directory sync. Recommended untuk SaaS sell to enterprise/BUMN.
- Bundle recipe: Clerk untuk SMB tier customer + WorkOS untuk enterprise tier = stack 2-prong cover full ICP B2B Indonesia.
Konteks
Saya operate bundle ini 20 bulan di SaaS B2B fintech-adjacent Jakarta (Oktober 2024 - Mei 2026). Profile produk:
- B2B SaaS untuk treasury management UMKM-mid market
- Pricing Rp 1,5-15 juta/bulan/customer
- Customer base: 380 active (240 SMB + 100 mid market + 40 enterprise)
- MAU: 18.500 (campur user dari banyak organization customer)
- Compliance: ISO 27001 + OJK fintech-adjacent (bukan full fintech license)
Bundle yang berjalan sekarang:
- Clerk Pro untuk SMB + mid tier customer (340 dari 380 customer)
- WorkOS untuk enterprise tier customer yang butuh SAML SSO (40 dari 380)
- Supabase sebagai database primary, Supabase Auth dipakai di MVP awal lalu migrate ke Clerk
Sebelumnya di SaaS klien 2023-2024 saya pakai Auth0. Pengalaman 14 bulan Auth0 menjadi baseline pembanding.
Pricing (Juni 2026)
Clerk
- Free: 10k MAU, 1 organization, social login, basic features
- Pro: USD 25/bulan + USD 0,02/MAU di atas 10k MAU
- Pro + Organization addon: USD 25 + USD 1/active org/bulan
- Saya pakai Pro + Organization, MAU 18.500, 380 active org = USD 25 + USD 380 (org) + USD 170 (extra MAU) = USD 575/bulan = Rp 9,2 juta/bulan
Supabase Auth
- Free: 50k MAU, semua auth feature core, social login, magic link
- Pro: USD 25/bulan + USD 0,00325/MAU di atas 100k
- Team: USD 599/bulan untuk SSO + advanced
- Self-host: gratis (Postgres + GoTrue + own infra)
- Saya pakai untuk MVP awal (0-3 bulan) di tier Free
WorkOS
- Free: 1 juta MAU SSO connection (first year free, lalu USD 125/connection/bulan)
- AuthKit: gratis untuk social login + password
- Enterprise: SAML SSO USD 125/connection, SCIM USD 125/connection, Directory Sync USD 125/connection
- Saya pakai 40 customer enterprise = ~28 SAML connection + 12 SCIM = USD 125 × 40 = USD 5.000/bulan = Rp 80 juta/bulan
Wait — angka ini tinggi. Reality check: WorkOS punya bundle pricing untuk volume. Saya negosiasi enterprise contract: USD 2.400/bulan flat untuk 50 SAML connection + SCIM included = USD 2.400/bulan = Rp 38,4 juta/bulan.
Total bundle cost
| Komponen | Cost/bulan |
|---|---|
| Clerk Pro + Org | Rp 9,2 juta |
| Supabase Pro (database, bukan auth primary) | Rp 400 ribu |
| WorkOS enterprise contract | Rp 38,4 juta |
| Total auth bundle | Rp 48 juta/bulan |
Cost per customer:
- SMB tier customer (340): Rp 9,2 juta / 340 = Rp 27 ribu/customer/bulan
- Enterprise tier customer (40): Rp 38,4 juta / 40 = Rp 960 ribu/customer/bulan
Enterprise tier pricing harus include auth cost ini di pricing produk (saya jual Rp 8-15 juta/bulan untuk enterprise — auth cost 6-12% dari revenue per customer, acceptable).
SLO + performance
| Metrik | Target | Realisasi |
|---|---|---|
| Sign-in latency p99 | < 1,5 detik | 0,9 detik (Clerk), 1,1 detik (WorkOS) |
| MFA challenge latency p99 | < 2 detik | 1,3 detik (Clerk TOTP), 1,8 detik (WorkOS SAML round-trip) |
| Session validation latency p99 | < 50ms | 22ms (Clerk JWT lokal) |
| Auth provider availability | > 99,95% | Clerk 99,98%, WorkOS 99,97% |
| Sign-up conversion rate | > 85% | 91% (Clerk UI komponen) |
Tidak ada P0 incident attributed to auth dalam 20 bulan. 2 P1 incident: Clerk briefly down 4 menit (Februari 2025), WorkOS SAML connection 1 customer enterprise misconfig (Agustus 2025, 18 menit).
Architecture pattern
Bundle pattern: Clerk + WorkOS via fronthaul
Customer SMB sign-in
└── Clerk UI component
└── JWT issued by Clerk
└── Validated by app middleware
└── User session
Customer Enterprise sign-in
└── WorkOS SSO start
└── Redirect to customer IdP (Okta / Azure AD / Google Workspace)
└── SAML assertion back to WorkOS
└── WorkOS issue JWT
└── App middleware accept WorkOS JWT (same format as Clerk via custom claim mapping)
└── User session
Trick: standardize JWT claim structure di app middleware. Whether JWT come from Clerk atau WorkOS, app treat sama. Pisahkan provider concern dari domain concern.
Onboarding flow
Saya design onboarding 5-step untuk SaaS B2B:
- Sign-up (Clerk UI komponen, email/social, MFA prompt opsional)
- Email verify (Clerk handle, 60% complete dalam 2 menit, 35% dalam 24 jam, 5% bounce)
- Organization create (Clerk Organization API, atau enterprise: organization auto-provision via SCIM)
- Team invite (Clerk Invite API, sent via email)
- Onboarding wizard (custom app: pilih industry, region, integrasi)
Conversion funnel actual (20 bulan):
| Step | Conversion |
|---|---|
| Visit signup page | 100% |
| Submit signup form | 78% |
| Verify email | 71% |
| Create organization | 65% |
| Invite team (skip-able) | 41% |
| Complete onboarding wizard | 56% |
| Day-7 retention | 38% |
| Day-30 retention | 24% |
Funnel ini benchmark vs B2B SaaS industry standard:
- Day-7 retention 38% vs industry 30-40% (di rentang average)
- Day-30 retention 24% vs industry 20-30% (di rentang average)
Capability comparison
| Capability | Clerk | Supabase Auth | WorkOS |
|---|---|---|---|
| Email/password | ya | ya | ya (via AuthKit) |
| Social login (Google, GitHub, dll) | ya | ya | ya |
| Magic link | ya | ya | ya |
| MFA TOTP | ya | ya | ya |
| MFA SMS | ya (USD addon) | ya (via Twilio) | ya |
| MFA WebAuthn / Passkey | ya | ya | ya |
| Organization / Team | ya (built-in) | manual (Postgres) | ya |
| Role-based access | ya | manual | ya |
| SAML SSO | enterprise tier | enterprise tier | ya (core feature) |
| SCIM provisioning | enterprise tier | tidak | ya |
| Audit log | Pro tier+ | self-managed | enterprise-grade |
| UI komponen pre-built | ya (best in class) | ada (Auth UI) | terbatas |
| Self-host option | tidak | ya | tidak |
| Data residency Indonesia | tidak (US) | ya (self-host) | tidak (US) |
| Webhook | ya | ya | ya |
| JWT customization | ya | ya | ya |
| Bot detection | ya | terbatas | ya |
Enterprise SSO/SAML
WorkOS adalah specialist di area ini. Setup SAML connection dengan customer Okta:
- Customer admin: provide metadata XML atau SSO URL
- Engineering: configure di WorkOS dashboard, ~15 menit
- Test: SSO flow end-to-end, ~30 menit
- Production: enable, monitor 7 hari
Pengalaman saya: 28 SAML connection di-setup dalam 20 bulan, rata-rata 1,5 jam engineering time per connection. WorkOS dashboard + dokumentasi solid.
Bandingkan Clerk SAML (Pro Plus tier USD 99/bulan extra per app + USD 50/connection): cost similar tapi UX setup lebih kasar untuk enterprise customer. WorkOS specialist di sini.
Trade-off bundling
Bundle pattern A: Clerk only
Cocok untuk SaaS B2B SMB-focused, < 50k MAU, tidak ada customer minta SSO.
- Cost: USD 25-575/bulan
- DX: terbaik
- Trade-off: enterprise feature mahal di Clerk
Bundle pattern B: Supabase Auth only
Cocok untuk MVP / cost-sensitive / self-host preference.
- Cost: gratis-USD 25/bulan
- DX: bagus dengan Supabase ekosistem
- Trade-off: butuh build organization + team logic sendiri, enterprise SSO premium
Bundle pattern C: WorkOS only
Cocok untuk SaaS yang sell ke enterprise dari hari pertama.
- Cost: USD 125-2.500+/bulan
- DX: enterprise-grade
- Trade-off: SMB UX kurang polished dibanding Clerk
Bundle pattern D (yang saya jalankan): Clerk + WorkOS
Cocok untuk SaaS B2B yang segmented SMB + enterprise.
- Cost: USD 575 + USD 2.400 = USD 2.975/bulan
- Cover full ICP
- Trade-off: 2 vendor, integrasi engineering 3-4 minggu one-time
Migration risk
Migrasi Auth0 → Clerk
Saya jalankan di klien 2024:
- Setup Clerk paralel Auth0
- Dual-write user (Auth0 webhook → sync ke Clerk)
- Migrate password hash (Auth0 export → Clerk import, format compatible bcrypt)
- Cutover sign-in flow per-customer (gradual rollout)
- Decommission Auth0 setelah 90 hari stable
Total elapsed: 10 minggu untuk 8.000 user. Pain point: Auth0 Rules custom (JavaScript hook) tidak ada equivalent natif di Clerk — rewrite jadi Clerk Webhook + middleware app. 2-3 minggu engineering.
Migrasi Supabase Auth → Clerk
Lebih simpel karena password hash format compatible. 4-6 minggu elapsed time termasuk dual-run validation.
Add WorkOS ke existing Clerk
Tidak migrate — additive. Bikin route SSO /sso/start dan /sso/callback baru, customer enterprise di-route ke WorkOS, sisanya tetap Clerk. 3-4 minggu engineering.
Common pitfall
- JWT validation di-repeat per request. Cache JWT signature verification result selama lifetime token. Hemat 50-100ms per request. Pakai library seperti
josedengan key caching. - Organization concept blur. B2B SaaS wajib punya org/workspace concept. Implement dari day 1, jangan retrofit setelah customer onboard. Refactor org pasca-launch = pain.
- MFA SMS overuse. SMS MFA bisa $0,01-0,05/SMS. Untuk 18k MAU dengan 10% MFA SMS adoption = USD 90-450/bulan extra cost. Push TOTP (Authenticator app) atau passkey sebagai default, SMS sebagai opsi premium.
- Audit log inadequate untuk compliance. Default audit log Clerk/Supabase tidak cukup detail untuk OJK audit. Tambahkan custom event log di app (action, user, target, timestamp, IP) export ke Splunk/Loki.
- Webhook tidak idempotent. Auth provider webhook bisa delivered multiple times. Implement idempotency check di app dengan event ID. Otherwise duplicate user creation, double invite, dll.
Indonesia specific
MFA SMS untuk Indonesia
Provider SMS untuk Indonesia: Twilio international rate (USD 0,03-0,05/SMS), atau local (Wavecell, Infobip via gateway lokal Rp 80-150/SMS). Untuk 18k MAU 5% SMS MFA monthly = 900 SMS = Rp 72-135 ribu via lokal vs USD 27-45 (Rp 432-720 ribu) via Twilio. Pakai gateway lokal saves 80%.
Clerk SMS provider configurable. WorkOS SMS via Twilio default — saya integrate via webhook bypass untuk customer Indonesia → kirim SMS via gateway lokal.
Bahasa Indonesia di UI komponen
Clerk Localization: ada support Bahasa Indonesia (komunitas contribute). Beberapa string masih English. Saya patch via Clerk Localization API custom override. 2 jam kerja.
WorkOS AuthKit: localization Bahasa Indonesia limited. Saya pakai custom UI untuk SMB flow.
Hiring + compliance
Senior engineer berpengalaman bundle auth multi-vendor di Indonesia masih scarce. Saya invest 1 senior dedicated untuk auth/identity domain. Cost Rp 35-45 juta/bulan tapi worth karena auth = critical path untuk B2B SaaS.
Cost of ownership 36 bulan
Skenario: SaaS B2B Indonesia, target 380 customer di tahun 3 (250 SMB + 100 mid + 30 enterprise).
| Komponen | Bundle Clerk+WorkOS | Auth0 enterprise | Supabase Auth + custom SSO |
|---|---|---|---|
| Subscription 3 tahun | Rp 1,73 miliar | Rp 2,4 miliar | Rp 24 juta |
| Engineering build custom | Rp 280 juta | Rp 220 juta | Rp 1,2 miliar |
| Ops + maintenance | Rp 320 juta | Rp 350 juta | Rp 580 juta |
| Compliance audit cost | Rp 60 juta | Rp 60 juta | Rp 95 juta |
| Total 3 tahun | Rp 2,39 miliar | Rp 3,03 miliar | Rp 1,90 miliar |
Self-host (Supabase + custom) terlihat termurah, tapi engineering cost untuk build org/team/SSO/audit dari scratch besar. Trade-off: control penuh + lower cash outflow, lebih banyak engineer-month.
Clerk + WorkOS bundle: middle ground. Cash outflow moderate, engineering effort minimal. Saya pilih ini karena tim engineering kecil dan ingin fokus ke domain produk, bukan auth platform.
Yang surprising
Setelah 20 bulan: organization concept ternyata jadi pain point lebih besar dari auth itself. Customer B2B punya struktur kompleks (parent company + subsidiary + multi-team). Default Clerk Organization model cukup untuk 80%, sisanya butuh extension. Saya invest 6 minggu engineering untuk custom “workspace” model di atas Clerk Organization. Worth.
Surprise lain: WorkOS adoption oleh customer enterprise lebih cepat dari ekspektasi. 40 customer enterprise, 28 sudah SAML adopt dalam 8 bulan. IT mereka happy dengan SSO Okta-native — close deal lebih cepat (saya tag “SSO available” di pricing page, naikkan win rate enterprise tier 20%).
Verdict
Recommended dengan bundle pattern Clerk + WorkOS untuk SaaS B2B mid market Indonesia.
- Default SaaS B2B Indonesia: Clerk (SMB) + WorkOS (enterprise) bundle. Cost USD 600-3.000/bulan tergantung scale. Cover full ICP.
- MVP / pre-PMF: Supabase Auth gratis, self-host option, evaluate ulang setelah 100 customer.
- Enterprise-only SaaS (sell ke BUMN, bank, korporat besar): WorkOS langsung, skip Clerk.
- Skip Auth0 kalau Anda evaluate di 2026 — Clerk + WorkOS bundle DX + cost lebih bagus untuk SaaS Indonesia modern.
Threshold konkret transisi dari Supabase Auth ke Clerk + WorkOS bundle: customer paying > 100 + ada 3+ customer minta SSO + revenue Rp 5+ miliar/tahun. Di bawah ini, Supabase Auth gratis cukup.
Ditulis oleh Asti Larasati