Leads Module
Reference business module for the EloSync platform. Every future module (Tasks, Invoices, Inventory, etc.) must mirror this structure.
Guides
| Audience | Document |
|---|---|
| Operators / workspace users | leads-user.md |
| Engineers | leads-developer.md |
| Production / ops | leads-production.md |
| Meta App + EloSync connect | meta-app-setup.md |
| Module Development Standard | module-development.md |
| Tenant API | ../api/tenant-v1-leads.md |
Capabilities (Sprint 2 CRM UX)
- Pipeline stages (seeded: New → Contacted → Qualified → Proposal → Negotiation → Won / Lost)
- Disposition tags — multi-select catalog (CRUD + sort order); seeded Not Contacted (default), Contacted, No Response (auto follow-up days), Invalid Number, Not Interested, Not Applied, Follow Up Later (requires creating a follow-up). Tags are independent of stage/status; badges on board, table, and detail.
- Independent status —
active,waiting,on_hold,closed,archived(not derived from stage) - Priority —
low,medium,high,urgent - Lead value —
lead_value(renamed fromestimated_value; API still accepts the old key as an alias on write) - Assignment with assignment history table
- Notes, follow-ups (create / update-reschedule / complete), activity timeline
- Kanban board (default) + table view; drag-and-drop auto-saves the stage change
- Hybrid list sheet — New /
Nand board/table peek open a side sheet for fast create and tabbed peek; dedicated record pages remain for convert, AI, deep links, and notifications - KPIs via
GET /leads/stats; board viaGET /leads/board - Export CSV / XLSX of the current filtered set (
leads.export) - Import CSV / XLSX via multi-step wizard (
leads.import) — column mapping (including optional first Note), duplicate modes, preview, queued processing, history + reports - Inbound integrations (
leads.manage_integrations) — Custom webhooks (Zapier-ready) + Meta Lead Ads OAuth / Page subscribe - Convert (
leads.convert) — setsconverted_at, records a converted activity, sets statusclosed; creates/links a real Contact when that module is installed (plus Company when the lead has a company name); optionally creates an Opportunity when the agent opts in; otherwise stays status-only for Contacts - Assignee scoping — without
leads.assign, users only see their own leads - Module licensing (
module:leads) + Spatie permissions - Audit + activity logging; assignment / follow-up notifications (mail + database)
Permissions
leads.view · create · update · delete · assign · export · import · convert · manage_integrations
Explicitly deferred
- Conversion to Companies (organizations)
- Workflow automations (installable Marketplace module — see Automation; not a hard-coded Lead feature)
- Real-time board sync (Reverb / Echo)