Lead-capture landing page (public marketing front door)
A per-company public landing at /lp/:portalSlug a business links from ads, QR codes, and outbound messages. Pulls the org's branding from the public portal bootstrap and captures first name / email / phone with NO password — the passwordless POST /member/signup find-or-creates the crm_contact behind the scenes, so every capture lands in the CRM. Falls back to a 'get in touch' card when the org has self-signup off. STOPGAP: a lightweight no-account POST /public/leads is a backend ask; when it ships, point the form there.
If you are building a front end
Your front end calls this over the same-origin `/api/v1` proxy — no backend code to write, no schema to design. Endpoints: GET /member/bootstrap/:portalSlug, POST /member/signup (password optional).
Bring any front end — hand-written, or generated with Lovable, v0, Bolt, Claude, or Cursor. You get auth, a multi-tenant database, payments through your own Stripe, and email/SMS without writing or hosting a backend.
- How to turn it on
- Live whenever the org has a portal_member_config row (portal slug); the form requires member_self_signup_enabled.
- Who can use it
- public by design (middleware PUBLIC_PATHS '/lp/'); the API is the wall (bootstrap + signup are the pre-auth surface, rate-limited).
- The API behind it
GET /member/bootstrap/:portalSlug, POST /member/signup (password optional)- Where it lives
- /lp/:portalSlug
See it in context
Marketing & lead capture — the full walkthrough, step by step: Landing pages, giveaways, quizzes, and attribution — clicks become tracked leads.
Machine-readable
This page is generated from our published capability catalog. Point your AI assistant at /features.json (or /llms.txt) and it can read every feature, how to enable it, and the endpoints behind it — then build against them.