CRM & pipeline
Every lead, contact, and deal — one live system your website feeds directly.
Your front end — hand-built or AI-generated — captures the visitor. The backend does the rest: the form fill becomes a contact, the contact becomes a lead, the lead moves through a pipeline your team actually works, and nothing lives in a spreadsheet.
Because the CRM and your website share one backend, there is no sync, no Zapier, no export. A giveaway entry, a saved game score, a quiz answer, and a booking all land on the same customer record.
How it helps you
No lead falls through
Every public form on your site writes a real contact with source attribution — you can see which page produced which customer.
A pipeline your team works
Stages you rename and reorder to match how you sell; rot warnings when a deal sits too long; win probability per stage.
Follow-up that runs itself
Sequences and workflow triggers fire on stage changes — the follow-up email goes out whether or not anyone remembered.
The walkthrough
A visitor fills any form on your site
Contact form, giveaway entry, quiz, booking — each is already wired to the backend.
A contact record appears
Deduplicated by email/phone, tagged with the source page and campaign.
A lead enters your pipeline
In the stage you chose as the entry point; your team sees it on the board immediately.
Automation takes the busywork
Stage-change triggers send follow-ups, create tasks, and notify the owner.
The deal closes into an order
Won leads convert to quotes and orders — the same record, end to end.
Shipped features behind this
From the same machine-readable catalog we publish at /features.json — what your AI reads to learn the platform.
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.
Global search
One search box over your contact database (GET /crm/search) with keyboard-first UX — type two characters and go. The pattern page partners extend to more domains as cross-domain search lands server-side.
CSV export (contacts + orders)
Get your data out: one-click CSV downloads on the contacts and orders lists, built client-side from the rows the page already holds (RFC 4180 quoting, UTF-8 BOM for Excel, money written as the L-MONEY string — never parsed). The shared helper lib/csv.ts is the pattern for any list page.
Referral & UTM attribution
Captures where a visitor came from — a referral code (/r/CODE or ?ref=) and utm_* campaign params — into a first-touch cookie, and attaches it to leads (the contact form today, flow intake later) so they're credited to their source. GA reads utm_* natively too.
Common questions
Do I need to connect my website forms to the CRM?
No. Sites built on this platform are pre-wired: every public form writes to the backend with source attribution. A front end built elsewhere (Lovable, v0, Bolt) connects through the same public API.
Can I customize the pipeline stages?
Yes — rename, reorder, add, and retire stages from the dashboard, with open deals safely moved when a stage retires. Saved views track stages by ID, so renames never break reports.
See it, then build on it
This whole site runs on the same platform — fork the template, or point a front end you built with Lovable, v0, Bolt, Claude, or Cursor at the backend.