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
11 changes: 11 additions & 0 deletions .changeset/2073-conversion-screen-names-the-account.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"hotcrm": patch
---

**The Convert Lead screen now says which account the lead will join, before you submit.** It used to ask only **Create Opportunity?** (是否创建商机? in Simplified Chinese) and then matched an account by the lead's company in silence. Now the screen names the existing account the lead will join, by that account's own name, or says that no account you can see matches and that converting creates a new account named after the lead's company. It reads in every shipped language. If the account is not the one you expected, cancel, correct the lead's **Company**, and convert again.

The match is still the same normalized company-name match, and it still only looks at accounts you can see. An account owned by a colleague and not shared with you is never matched, and the screen now tells you a new account will be created. If that account has exactly the same name, the conversion is refused as a duplicate record and nothing is created, as before. If its name differs only in capitalisation or spacing, a second account is created, as before. Ask the account's owner or an administrator to share it with you before converting.

The match now happens when the screen opens, and the conversion acts on that match. If the named account is deleted while the screen is open, the conversion is refused and nothing is created. Before, a new account the screen had never mentioned was created instead.

**Add to Campaign on a contact is declared on each row's ⋮ menu only.** It also carried a list-header placement. That header button never appeared, because the action is offered only for a contact who has not opted out of email, and a list header has no contact. The placement is gone so that a later change to that rule cannot bring the header button back. On **All Contacts** you still tick rows and run it from the selection toolbar.
10 changes: 7 additions & 3 deletions content/docs/sales/leads.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Deleting a Contact, or the Account above it, is never blocked by a lead that poi

## Converting a qualified lead

A lead whose **Duplicate Status** is **Confirmed** cannot be converted. **Convert**
A lead whose **Duplicate Status** is **Confirmed** cannot be converted. **Convert Lead**
opens a refusal instead of the conversion form: a reviewer has already compared this
lead against an existing record and recorded that it repeats one, so converting it
would create a second account, contact and opportunity for the same buyer. The
Expand All @@ -134,14 +134,18 @@ confirmed duplicate as one instead. A lead flagged only *Suspected* still conver
that flag is a machine's guess, and the conversion screen warns about it rather than
stopping you.

When a lead is qualified, click **Convert**. A small form pops up asking:
When a lead is qualified, click **Convert Lead**. A small form pops up asking:

- Should we also create an Opportunity?
- If yes — what's the opportunity name and amount?

Above those questions, the form tells you which account the lead will join before you submit: the existing account it matched, by that account's name, or a new account named after the lead's company when no account you can see matches. If that is not the account you expected — say the lead reads `Acme Corp` and your customer is `Acme Corporation` — cancel, correct the lead's **Company**, and convert again.

The match only looks at accounts you can see. An account owned by a colleague and not shared with you is never matched, so the form says a new account will be created. If that account has exactly the same name, the conversion is then refused as a duplicate record and nothing is created; if its name differs only in capitalisation or spacing, a second account is created. So when you expect the company to be an existing customer and the form says the account is new, ask the **Account Owner** or an administrator to share the account with you before you convert.

The system then, in a single step:

1. Creates an **Account** from the lead's company information — or reuses the one you already have. The match ignores capitalisation and extra spaces, so a lead for `ACME Corp` lands on your existing `Acme Corp` instead of creating a second account. It is not a fuzzy match: `Acme Corp` and `Acme Corporation` are still two different companies.
1. Creates an **Account** from the lead's company information — or reuses the existing one the form named. The match ignores capitalisation and extra spaces, so a lead for `ACME Corp` lands on your existing `Acme Corp` instead of creating a second account. It is not a fuzzy match: `Acme Corp` and `Acme Corporation` are still two different companies.
2. Creates a **Contact** from the lead's person information, attached to that account. It becomes the account's primary contact only when the account has none yet: converting into an account that already has a primary contact leaves that contact as primary.
3. *(Optional)* Creates an **Opportunity** in the *Prospecting* stage with a 90-day close date.
4. Marks the lead as **Converted** and locks it.
Expand Down
10 changes: 7 additions & 3 deletions content/docs/sales/leads.zh-Hans.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -116,20 +116,24 @@ description: 在入站咨询成为真正交易之前对其进行捕获、评分

## 转化一条已确认的线索

**重复状态**为**已确认重复**的线索无法转化。点击**转化**后弹出的是一条拒绝说明,而不是转化表单:
**重复状态**为**已确认重复**的线索无法转化。点击**转化线索**后弹出的是一条拒绝说明,而不是转化表单:
已经有人把这条线索与某条既有记录做过比对,并判定它是重复的,此时转化会为同一个买家再造一套客户、
联系人和商机。线索上的**重复线索管理**区块指明了保留下来的那条记录——请把已确认的重复线索按重复
关闭,而不是转化它。仅被标记为*疑似重复*的线索仍然可以转化:那只是系统的猜测,转化界面会提示你,
但不会拦住你。

当一条线索通过资格审核后,点击**转化**。会弹出一个小表单询问:
当一条线索通过资格审核后,点击**转化线索**。会弹出一个小表单询问:

- 我们是否也要创建一个商机?
- 如果是——商机名称和金额是多少?

在这些问题上方,表单会在你提交之前告诉你该线索将加入哪个客户:匹配到的现有客户(显示该客户的名称),或者在没有你能查看的客户与之匹配时,一个以线索公司命名的新客户。如果这不是你预期的客户——比如线索写的是 `Acme Corp`,而你的客户是 `Acme Corporation`——请取消,更正线索的**公司**,然后重新转化。

匹配只查看你能查看的客户。同事拥有、且没有共享给你的客户不会被匹配到,因此表单会显示将新建客户。如果那个客户的名称与之完全相同,转化随后会因重复记录而被拒绝,不会创建任何内容;如果名称只在大小写或空格上不同,则会再创建一个客户。所以,当你认为这家公司已经是现有客户、而表单却显示要新建客户时,请先请**客户负责人**或管理员把该客户共享给你,再进行转化。

然后系统会一步完成:

1. 根据线索的公司信息创建一个**客户**——如果已经有同名客户,则直接复用。匹配时忽略大小写和多余空格,因此公司名为 `ACME Corp` 的线索会落到你已有的 `Acme Corp` 上,而不是再建一个客户。这不是模糊匹配:`Acme Corp` 与 `Acme Corporation` 仍然是两家不同的公司。
1. 根据线索的公司信息创建一个**客户**——或者直接复用表单所列出的现有客户。匹配时忽略大小写和多余空格,因此公司名为 `ACME Corp` 的线索会落到你已有的 `Acme Corp` 上,而不是再建一个客户。这不是模糊匹配:`Acme Corp` 与 `Acme Corporation` 仍然是两家不同的公司。
2. 根据线索的个人信息创建一个**联系人**,附加到该客户上。只有当该客户还没有主要联系人时,它才成为主要联系人:转化到一个已有主要联系人的客户时,原来的主要联系人保持不变。
3. *(可选)* 在*寻找客户*阶段创建一个**商机**,预计成交日期设为 90 天后。
4. 将线索标记为**已转化**并锁定它。
Expand Down
10 changes: 7 additions & 3 deletions content/docs/sales/leads.zh-Hant.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -118,20 +118,24 @@ description: 在入站詢問成為真正交易之前對其進行擷取、評分

## 轉化一筆已確認的潛在客戶

**重複狀態**為**已確認重複**的潛在客戶無法轉化。點擊**轉化**後彈出的是一條拒絕說明,而不是轉化
**重複狀態**為**已確認重複**的潛在客戶無法轉化。點擊**轉化線索**後彈出的是一條拒絕說明,而不是轉化
表單:已經有人把這筆潛在客戶與某筆既有記錄做過比對,並判定它是重複的,此時轉化會為同一個買家再造
一套客戶、聯絡人和商機。記錄上的**重複線索管理**區塊指明了保留下來的那筆記錄——請把已確認的重複
潛在客戶按重複關閉,而不是轉化它。僅被標記為*疑似重複*的潛在客戶仍然可以轉化:那只是系統的猜測,
轉化介面會提示你,但不會攔住你。

當一筆潛在客戶通過資格審核後,點擊**轉化**。會彈出一個小表單詢問:
當一筆潛在客戶通過資格審核後,點擊**轉化線索**。會彈出一個小表單詢問:

- 我們是否也要建立一個商機?
- 如果是——商機名稱和金額是多少?

在這些問題上方,表單會在你提交之前告訴你該潛在客戶將加入哪個客戶:比對到的既有客戶(顯示該客戶的名稱),或者在沒有你能查看的客戶與之相符時,一個以潛在客戶公司命名的新客戶。如果這不是你預期的客戶——比如潛在客戶寫的是 `Acme Corp`,而你的客戶是 `Acme Corporation`——請取消,更正潛在客戶的**公司**,然後重新轉化。

比對只查看你能查看的客戶。同事擁有、且沒有共享給你的客戶不會被比對到,因此表單會顯示將新建客戶。如果那個客戶的名稱與之完全相同,轉化隨後會因重複記錄而被拒絕,不會建立任何內容;如果名稱只在大小寫或空格上不同,則會再建立一個客戶。所以,當你認為這家公司已經是既有客戶、而表單卻顯示要新建客戶時,請先請**客戶負責人**或管理員把該客戶共享給你,再進行轉化。

然後系統會一步完成:

1. 根據潛在客戶的公司資訊建立一個**客戶**——若已有同名客戶,則直接重用。比對時忽略大小寫與多餘空格,因此公司名為 `ACME Corp` 的潛在客戶會落到你既有的 `Acme Corp` 上,而不是再建一個客戶。這不是模糊比對:`Acme Corp` 與 `Acme Corporation` 仍然是兩家不同的公司。
1. 根據潛在客戶的公司資訊建立一個**客戶**——或者直接重用表單所列出的既有客戶。比對時忽略大小寫與多餘空格,因此公司名為 `ACME Corp` 的潛在客戶會落到你既有的 `Acme Corp` 上,而不是再建一個客戶。這不是模糊比對:`Acme Corp` 與 `Acme Corporation` 仍然是兩家不同的公司。
2. 根據潛在客戶的個人資訊建立一個**聯絡人**,附加到該客戶上。只有當該客戶還沒有主要聯絡人時,它才成為主要聯絡人:轉化到一個已有主要聯絡人的客戶時,原本的主要聯絡人保持不變。
3. *(可選)* 在*尋找客戶*階段建立一個**商機**,預計成交日期設為 90 天後。
4. 將潛在客戶標記為**已轉化**並鎖定它。
Expand Down
15 changes: 14 additions & 1 deletion src/sales/actions/contact.actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,20 @@ export const AddContactToCampaignAction: Action = {
type: 'flow',
target: 'campaign_contact_member_enroll',
recordIdParam: 'contactId',
locations: ['list_toolbar', 'list_item'],
// The same two doors as `create_campaign` on `crm_lead` (#2073 items 5 and
// 5b): `list_item`, every row's menu, and the SELECTION BAR a view opens by
// naming the action in its `bulkActions` (All Contacts does), which takes no
// location here.
// ⛔ Do not add `list_toolbar` back. A header button is drawn with nothing
// selected, and this action runs on exactly one contact: launched from the
// header, the lead side's twin opened the whole Campaign dialog, then refused
// in English ("This action runs on a single record — select a row first.")
// and sent nothing. Here the header button happens to draw nowhere, only
// because `visible` below reads `record.email_opt_out` and a list header
// binds no record (measured on the three contact views, as marketing and
// as the admin, on 18.0.0-next.5). Relaxing that predicate would bring the
// defect back on contacts, so the placement is not left to depend on it.
locations: ['list_item'],
params: [
{
name: 'campaignId',
Expand Down
Loading
Loading