Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/leads-help-import-owner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"hotcrm": patch
---

Clause-②: no
Metadata-protocol: none

**The Leads help page no longer says imported leads are spread across the sales reps (#2360).** It listed CSV import and API capture among the ways a lead arrives without an owner and is round-robined to the least-loaded rep. Measured on ObjectStack 18.2.0, only a web-to-lead form submission arrives ownerless and reaches the round-robin. A lead created in the UI, sent through the API under a sign-in or API key, or imported from a file is owned by the person who put it in. For an import that is the person who ran it. The English and Chinese pages now say so, and they link the Admin Manual's *Importing Data* page, which already described this. Lead assignment itself is unchanged.
16 changes: 11 additions & 5 deletions src/docs/crm_sales_leads.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,17 @@ automatically:
**Lead Score** is the 1–5 star field on each lead (shown as *Lead Score* in the
UI). A score of 4★ or more marks the lead "hot" and triggers the 1-day SLA.

A lead created without an owner (web-to-lead, CSV import, API capture) is
**auto-assigned to the sales rep with the fewest open leads** — a self-balancing
round-robin over everyone holding the *Sales Rep* position. Leads created in the
UI keep their creator as owner. Only when no rep pool exists yet does a lead
stay ownerless for a manager to claim.
A lead submitted through a web-to-lead form arrives with nobody behind it, so
it is **auto-assigned to the sales rep with the fewest open leads** — a
self-balancing round-robin over everyone holding the *Sales Rep* position. Only
when no rep pool exists yet does such a lead stay ownerless for a manager to
claim.

A lead that a person puts in keeps that person as owner: one created in the UI,
one sent through the API under their sign-in or API key, and one imported from
a file. A file import never goes to the round-robin — a row with a blank owner
is owned by whoever ran the import, and the leads can be reassigned afterwards
(see the administrator's [Importing Data](./crm_admin_data_import.md) page).

## Lead status

Expand Down
4 changes: 3 additions & 1 deletion src/docs/crm_sales_leads.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ description: 新线索如何获得跟进期限和负责人,以及转化一条

**线索评分**是每条线索上的 1–5 星字段(界面上显示为*线索评分*)。4★ 或以上即视为"热线索",触发 1 天的 SLA。

没有负责人的线索(网页转线索、CSV 导入、API 采集)会**自动分配给名下未结线索最少的销售代表**——在所有持有*销售代表*岗位的人之间自我均衡地轮询。在界面里创建的线索保留创建人为负责人。只有在还没有任何销售代表时,线索才会暂时无人负责,等待经理认领。
通过网页表单提交的线索(网页转线索)背后没有具体的人,所以会**自动分配给名下未结线索最少的销售代表**——在所有持有*销售代表*岗位的人之间自我均衡地轮询。只有在还没有任何销售代表时,这类线索才会暂时无人负责,等待经理认领。

由某个人录入的线索以这个人为负责人:在界面里创建的、用本人登录或 API 密钥通过 API 提交的、以及从文件导入的都是如此。文件导入从不进入轮询——负责人留空的行归执行导入的人所有,之后可以再重新分配(见管理员的[导入数据](./crm_admin_data_import.md)页面)。

## 线索状态

Expand Down
2 changes: 1 addition & 1 deletion src/sales/objects/task.hook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import type { HookApi } from './_hook-api';
* Task lifecycle hook.
*
* - On `completed` transition, stamps `completed_date` and `progress_percent=100`.
* - Warns when `reminder_date` is after `due_date`.
* - Refuses (`VALIDATION_FAILED` / 400) when `reminder_date` is after `due_date`.
* - Bubbles activity to the polymorphic parent (account `last_activity_date`,
* lead `last_contacted_date`).
* - Refuses to SCHEDULE a phone touch against a person flagged `do_not_call`
Expand Down
Loading