Security
What we do, how it works, and what we do not have. Written so a security reviewer can check each line rather than take it on trust.
Controls
- We never see your card
- Payment details are entered on Stripe's own hosted Checkout, not on our site. Our servers store a Stripe price id, a session id and a customer id. Card numbers never reach our infrastructure, so they cannot leak from it.
- Portal sign-in has no password
- The customer portal emails a one-time code. There is no password to reuse, phish or leak. The session token that follows is held in an httpOnly cookie and read server-side only — it is never exposed to JavaScript in the browser.
- Rate limiting on the paths that matter
- Checkout, sign-in and the admin console are rate limited in durable storage rather than in process memory, so the limit holds across instances instead of resetting whenever a serverless function is recycled.
- Admin access is separate and logged
- Staff access runs on its own session with hashed credentials, a login throttle, and an audit log of privileged actions. A customer session cannot reach admin surfaces.
- Errors and failures are monitored
- Failed checkouts, failed billing syncs and rejected requests are recorded rather than swallowed, and hourly canaries check that the booking and qualification paths still accept a submission. A payment problem surfaces as an alert instead of a missing order.
Sub-processors
The third parties that process data on our behalf. This list is what the application actually runs, and it is the list referenced by our data processing agreement.
Stripe
Payments, checkout and billing
Supabase
Application database (Postgres)
Xano
Order and placement records
Vercel
Application hosting
LogRocket
Session replay and diagnostics
Google
Analytics and advertising measurement
Meta
Advertising measurement
What we do not have yet
Listed because a security review finds these anyway, and finding them here first is worth more than the claim we would have made instead.
- Single sign-on. Portal access is a one-time emailed code; we do not support SAML or OIDC.
- SOC 2 and ISO 27001. We hold neither certification and do not describe ourselves as certified.
- A published penetration test report. We have not commissioned one.
Contracts, tax forms and invoicing terms are on the procurement page.
