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.