Lead management
Leads are top-of-funnel records. People or companies that have shown some interest but are not yet qualified accounts. BottleCRM tracks leads through capture, qualification, and conversion.
Capturing leads
Four intake paths are supported out of the box:
- Manual entry in the web app at
/leads/new. - CSV upload via
POST /api/leads/upload/, the parser de-duplicates on email and reports row-by-row errors instead of failing the whole batch. - A web form embedded on your own site, built in Settings and pasted in as one line of HTML. The visitor needs no account and the snippet carries no credential. See Web forms.
- API ingestion:
POST /api/leads/from a marketing tool or a script.
The list view supports filtering by status, source, assignee, and any filterable custom field.
Lead lifecycle
A lead's status walks through:
new → assigned → contacted → qualified → converted
↘ lost
Status transitions are validated server-side. You cannot mark a lost lead as converted by hacking the UI. When a lead is converted, the system creates a matching Account, Contact, and (optionally) Opportunity in one transaction.
Kanban view
There is a GET /api/leads/kanban/ endpoint and it works, and no client draws it. The web app's
leads route is a list, and the phone's is a list. Vertical packs define named lead pipelines with
stages, those rows are really created, and nothing renders them either. A lead carries a status; it
does not sit in a column you can drag.
Bulk operations
There are none for leads. No bulk assign, no bulk tag, no bulk delete and no export: the endpoints
do not exist and the list view offers no multi-select. Bulk actions in this product are a tickets
feature (bulk/update/ and bulk/delete/ under /api/cases/).
See also
- Custom fields: add organization-specific data to leads.
- Leads API: full endpoint reference with examples.