Kaizen 137 - Lead Conversion using Zoho CRM APIs

Kaizen 137 - Lead Conversion using Zoho CRM APIs

Leads represent potential sales opportunities sourced from various channels like trade shows, seminars, and marketing campaigns. When a Lead shows promise, you can convert them into Accounts, Contacts, and Deals.

Imagine you have a Lead named Pat Boyle with her email address as pat.boyle@zylker.com. You want to convert her into a Contact, but what if a Contact with the same email already exists? Converting the lead would create a duplicate record, making it harder to track your interactions with the lead.

The Lead Conversion Options API acts as your safety net before Lead Conversion.  This API assists in identifying matching records from the Accounts, and Contacts module, ensuring data integrity and preventing duplication during the conversion process.

Step 1 : Identify matching records using Lead Conversion Options API

Consider the following lead generated through a marketing campaign for a software company. 

Name : Pat Boyle
Company : Zylker Biotech
Phone : 9844444444

As the sales team progresses with Pat Boyle and decides to convert her into an Account or a Contact, they must be cautious about potential duplicates in their CRM. For instance, if there is already an Account named Zylker Biotech or a Contact named Pat Boyle, converting the lead to create a new Contact could create duplicate records. The Lead Conversion Options API response provides details of potential matches, including existing Accounts or Contacts, along with matching field details.

Matching Criteria:

The matching process relies on unique fields in the Contacts and Accounts modules. In cases where there are no unique fields in these modules, or when there are no matches found based on the unique fields, the matching is performed based on the Email field in the Contacts module, the Account_Name field in the Accounts module with the Company field of the fields module, or the Lead name with the Contact name.

Here is the order of preference for finding the matching records:

In the presence of unique fields in Contacts and/or Accounts module:
  • Contacts module  : Unique Field 1 > Unique Field 2 > Email
  • Accounts module : Unique Field 1 > Unique Field 2 > Account name
In the absence of unique fields:
  • Lead Email checked against the Email fields in the Contacts module.
  • Lead Company checked against the account names (Account_Name) in the Accounts module.
  • The lead's name checked against the Contacts' names in the Contacts module.
In our scenario, let us assume that the Phone in Contacts module is a unique field.

Request method : GET
Sample Response :
{
    "__conversion_options": {
        "module_preference": {
            "api_name": "Contacts",
            "id": "4876876000000002179"
        },
        "Cont​acts": [
            {
                "Full_Name": "Boyle",
                "Email": "pat.boyle@zylker.com",
                "Phone": null,
                "Locked__s": false,
                "Account_Name": null,
                "$editable": true,
                "id": "4876876000007437017",
                "$approval_state": "approved",
                "Data_Processing_Basis": "null"
            },
            {
                "Full_Name": "Pat Boyle",
                "Email": null,
                "Phone": "9844444444",
                "Locked__s": false,
                "Account_Name": {
                    "name": "Zylker Biotech",
                    "Locked__s": false,
                    "id": "4876876000007421010"
                },
                "$editable": true,
                "id": "4876876000007421001",
                "$approval_state": "approved",
                "Data_Processing_Basis": "null"
            }
        ],
        "preference_field_matched_value": {
            "Contacts": [
                {
                    "field": {
                        "api_name": "Phone",
                        "id": "4876876000000002503"
                    },
                    "matched_lead_value": "9844444444"
                },
                {
                    "field": {
                        "api_name": "Email",
                        "id": "4876876000000002497"
                    },
                    "matched_lead_value": "pat.boyle@zylker.com"
                }
            ],
            "Accounts": [
                {
                    "field": {
                        "api_name": "Account_Name",
                        "id": "4876876000000002425"
                    },
                    "matched_lead_value": "Zylker Biotech"
                },
                {
                    "field": {
                        "api_name": "Phone",
                        "id": "4876876000000002427"
                    },
                    "matched_lead_value": "9844444444"
                }
            ]
        },
        "Accounts": [
            {
                "Layout": {
                    "name": "Standard",
                    "id": "4876876000000091029"
                },
                "Phone": null,
                "Account_Type": null,
                "Locked__s": false,
                "Website": null,
                "Account_Name": "Zylker Biotech",
                "$editable": true,
                "id": "4876876000007421010",
                "$approval_state": "approved"
            }
        ],
        "modules_with_multiple_layouts": [ //
            {
                "api_name": "Accounts",
                "id": "4876876000000002177"
            }
        ]
    }
}


The preference_field_matched_value object in the response contains the details such as the field and the value of the Contact and Account that matches with the lead. The Contacts and Accounts JSON objects contain the details of the matching records. As per the response, there are two Contacts and one Account with similar details to our Lead.
  • A Contact (Pat Boyle) has the same Phone 9844444444 (matching field) as the Lead
  • A Contact (Boyle) with the same Email pat.boyle@zylker.com (matching field) as the Lead
  • An Account with the same Account_Name Zylker Biotech as the Company of the Lead.

Step 2 : Perform Lead Conversion using Convert Lead API

You can convert a Lead into a Contact, Account, and a Deal using this API. From the Lead conversion options API, we have the matching Contacts and Accounts for the specific deal. Based on the Lead Conversion Options API's response, you can choose to create a new record in the Contacts or Accounts module, or move the Lead record to existing matching records in these modules during Lead Conversion.
During Lead conversion, the Lead's field values are mapped to the corresponding Accounts, Contacts, and Deals records. By default, Zoho CRM automatically maps standard Lead fields to their corresponding fields in Accounts, Contacts, and Deals. The lead mapping tool allows for customization, enabling you to map any additional fields specific to your sales process. 

Request method: POST
Input JSON keys:

Input JSON key
Description
overwrite
Boolean, optional
Represents whether to overwrite the account name in the contact if the account name and company in the lead mismatch. Ignored when the Lead has no value for the Company field.
true: Overwrites the Contact's Account name with the Lead's company name. false: Leaves the existing Account name unchanged, potentially causing inconsistencies.
Default value : false
notify_lead_owner
Boolean, optional
Specifies whether the lead owner should be notified about the lead conversion via email.
Default value : false
notify_new_entity_owner Boolean, optional
Specifies whether the owner of the newly created Contact or Account receives an email notification
Default value : false
move_attachments_to
JSON object, optional
Specify the module (Contacts, Deals, or Accounts) where you want to move the Lead's attachments after conversion.
Default value : Contacts
Accounts
JSON object, optional
Specify the account with which the lead being converted should be merged. Pass the valid account ID.
Contacts
JSON object, optional
Specify the contact with which the lead being converted should be merged. Pass the valid contact ID.
assign_to
JSON object, optional
The user to which the converted record should be assigned. Pass the valid user ID.
Deals
JSON object, optional
Create a new Deal associated with the converted Lead. Requires details like Deal_Name, Closing_Date, Pipeline, and Stage. You can also assign a Contact_Role by providing the unique contact role ID.
carry_over_tags
JSON object, optional
Carries over tags of the lead to contact, account, and deal. 

Case I : Convert Lead to merge with existing records:

In this case, you can merge the lead record with existing records in the Accounts and/or Contacts module to avoid duplication. You can also create a Deal record providing the necessary details like Deal_Name, Closing_Date, Pipeline, and Stage.

Sample Input: 
{
  "data": [
    {
      "overwrite": true,
      "notify_lead_owner": true,
      "notify_new_entity_owner": true,
      "Accounts": {
        "id": "4876876000007421010"
      },
      "Contacts": {
        "id": "4876876000007421001"
      },
      "Deals": {
        "Deal_Name": "Zylker Deal",
        "Closing_Date": "2024-10-20",
        "Stage": "Negotiation/Review",
        "Amount": 20000000,
        "Pipeline": "Standard (Standard)"
      }
    }
  ]
}

Sample Response:

{
  "data": [
    {
      "code": "SUCCESS",
      "details": {
        "Contacts": {
          "name": "Pat Boyle",
          "id": "4876876000007421001"
        },
        "Deals": {
          "name": "Zylker Deal",
          "id": "4876876000007459060"
        },
        "Accounts": {
          "name": "Zylker Biotech",
          "id": "4876876000007421010"
        }
      },
      "message": "The record has been converted successfully",
      "status": "success"
    }
  ]
}

Points to Note:
  • If the record data doesn't match perfectly with the Lead data, an INVALID_DATA error will be thrown. For example,If you try to merge the Lead with a Contact or Account not found in the Lead Conversion Options API response, you will encounter this error if the data doesn't match.
  • During lead conversion, you can transfer the lead to a contact, an account, or both. If you transfer to a contact that is already linked to an account, the lead will automatically be converted and associated with that account as well.
  • To successfully merge a Lead record with an existing Contact and Account record, the Contact should be associated with the specified Account. If not, you will get an INVALID_DATA error.
  • If the Lead record's Company field is empty, and no account is specified in the JSON input, an account will not be automatically created. However, even if you omit the account in the input JSON, a new account will be created if there is Company name associated with the Lead.
  • Unless specified, a deal record will not be created.

Case II : Convert Lead and create new records:

If the Accounts and Contacts records are not specified during the Lead conversion, new Contact and Account records will be created from the converted Lead, mapping the field values according to the field mapping

Points to Note :
  • If there already exists a record in the Accounts or Contacts module with the same value for a unique field as the lead being converted, a DUPLICATE_DATA error will be thrown, with details about the existing record found in the Accounts or Contacts module.
  • Unless specified, a deal record will not be created.
Sample Input:

{
  "data": [
    {
      "overwrite": true,
      "notify_lead_owner": true,
      "notify_new_entity_owner": true
    }
  ]
}

Sample Response:
{
  "data": [
    {
      "code": "SUCCESS",
      "details": {
        "Contacts": {
          "name": "Pat Boyle",
          "id": "4876876000007482059"
        },
        "Deals": null,
        "Accounts": {
          "name": "Zylker Biotech",
          "id": "4876876000007482056"
        }
      },
      "message": "The record has been converted successfully",
      "status": "success"
    }
  ]
}

Important Points : 

  • If the Contacts module is removed from organize modules, lead conversion is not allowed. In such cases, the Lead Conversion Options API will return a 204 response.
  • If the Accounts module is removed from organize modules, the Lead Conversion Options API will not consider Accounts for matching. Only Contacts-related matching options will be listed.
  • If the Company field is removed from the Leads module, Account-related matching will be skipped, and only contact-related options will be listed.
  • You cannot convert Leads that are locked or have not been approved yet.
  • Associating Leads with locked Contacts or Accounts is not possible.
  • If the Lead you are trying to convert has already been converted, the ID_ALREADY_CONVERTED error will be thrown.
  • To convert leads in bulk, use the Mass Convert Lead API, using which you can convert up to 50 leads in a single API call. The Mass Convert Lead API schedules a conversion job for the specified leads. You can then retrieve the details of the conversion job using the Mass Convert Lead Status API.
We hope that you found this post on Lead Conversion useful. If you have any queries or need further assistance, please feel free to comment below or email us at support@zohocrm.com. We are here to help!




Recommended Reads:



Previous Post : Zoho CRM Widgets using ReactJS | Kaizen Collection : Home
Join us for our upcoming Zoho CRM Developer Series: Zoho CRM APIs, where you can explore more about Zoho CRM APIs. Register Now!  

    Access your files securely from anywhere

          Zoho Developer Community




                                    Zoho Desk Resources

                                    • Desk Community Learning Series


                                    • Digest


                                    • Functions


                                    • Meetups


                                    • Kbase


                                    • Resources


                                    • Glossary


                                    • Desk Marketplace


                                    • MVP Corner


                                    • Word of the Day



                                        Zoho Marketing Automation


                                                Manage your brands on social media



                                                      Zoho TeamInbox Resources

                                                        Zoho DataPrep Resources



                                                          Zoho CRM Plus Resources

                                                            Zoho Books Resources


                                                              Zoho Subscriptions Resources

                                                                Zoho Projects Resources


                                                                  Zoho Sprints Resources


                                                                    Qntrl Resources


                                                                      Zoho Creator Resources



                                                                          Zoho Campaigns Resources


                                                                            Zoho CRM Resources

                                                                            • CRM Community Learning Series

                                                                              CRM Community Learning Series


                                                                            • Kaizen

                                                                              Kaizen

                                                                            • Functions

                                                                              Functions

                                                                            • Meetups

                                                                              Meetups

                                                                            • Kbase

                                                                              Kbase

                                                                            • Resources

                                                                              Resources

                                                                            • Digest

                                                                              Digest

                                                                            • CRM Marketplace

                                                                              CRM Marketplace

                                                                            • MVP Corner

                                                                              MVP Corner





                                                                                Design. Discuss. Deliver.

                                                                                Create visually engaging stories with Zoho Show.

                                                                                Get Started Now


                                                                                  Zoho Show Resources


                                                                                    Zoho Writer Writer

                                                                                    Get Started. Write Away!

                                                                                    Writer is a powerful online word processor, designed for collaborative work.

                                                                                      Zoho CRM コンテンツ






                                                                                        Nederlandse Hulpbronnen


                                                                                            ご検討中の方





                                                                                                  • Recent Topics

                                                                                                  • Apply Credit Note Automatically

                                                                                                    We need the ability to apply open Credit Notes toward invoices generated by recurring invoice as the first, priority payment. This should be an option that we can enable/disable in the recurring profile and/or the Credit Note. Other invoicing systems can do this. I'm not sure why Zoho Invoice doesn't have it. Here's an example for a Recurring Invoice... If a customer has open Credit Notes, and a saved credit card set for auto-pay, once an invoice goes out, the credit balance gets automatically applied
                                                                                                  • Workflow for "Expenses" module?

                                                                                                    Hi there, over the last 2 years, Zoho Expense has seen tremendous growth and we are happy with it. But, sometimes it is frustrating to see things are being implemented halfheartedly, or so it seems. For example, There is the possibility to create workflows
                                                                                                  • Record Template - Conditionally printing sections

                                                                                                    Is there a way to conditionally print a section of a Record Template? More specifically I am printing records from a Form "Invoice". That Form has 3 SubForms. I'd like to print the content of those SubForms using a Record Template but only if they have at least one line item. If they have no line items, I'd like to hide the headers for that section on the printout.
                                                                                                  • User can choose the PDF report

                                                                                                    Hi. I would like to find out if a user (Creator or customer portal) to choose from the different PDF customised reports that have been built?
                                                                                                  • Query table pull last 12 months

                                                                                                    I am tying to pull the following criteria and the date is always what causes me the issue. I want to pull people (pco_id) who have entries of "event_id" being these 2 events and whos "kind" is Regular or Guest and where the event_starts_at (date column)
                                                                                                  • PLEASE FIX Search options and consider a Global seach option

                                                                                                    A recent update has removed the ability to search for addresses and phone numbers under contacts. We cannot find where this moved to (If it is still available). Please put these options back as we cannot locate specific projects anymore. Also please consider allowing for a Global search. This would really improve the search engine. For example: If I search for "Sally Jones" then all invoices , estimates, vendors etc.. would populate.. Please let me know if you need any more information. Thank You....
                                                                                                  • Customize your calendar based on personal preferences

                                                                                                    Greetings, We're happy to introduce a few new capabilities to the Activities module's Calendar View! Now you can tailor your calendar's appearance and notification settings to suit your needs. In the past, the Calendar View lacked customization options
                                                                                                  • BUG ALERT: Client Script + Commands -> $Page contextual data is not updated

                                                                                                    When using the new Client Script Commands feature, there is an issue with the Client Script $Page contextual data not accurately being updated each time a Command is run. Assuming a Client Script Command called "Client Script Command Bug" with the following
                                                                                                  • Show iFrame of related List inside of Blueprint Transition

                                                                                                    Hey, is it possible to show an iFrame of a related list like this inside of a Blueprint transition?
                                                                                                  • Lookup Fields not Converting

                                                                                                    I manage holiday properties. I have a lookup to the Accounts (Properties) in the Leads module. The lookup is connected to the property address field. When I convert it the lookup field does not update in Deals, although the property address does. There
                                                                                                  • 2024: A Year of Transformation with Zoho Forms

                                                                                                    As we close the curtain on another exciting year, it’s time to reflect on the strides Zoho Forms has taken in 2024. From empowering businesses with advanced tools to simplifying workflows and enhancing user experiences, our updates this year were all
                                                                                                  • Stop selling out of stock Items.

                                                                                                    Hi I have been using Zohobooks for a around 8 month now. I am not involved in selling process but my staff cant stop selling product which they do not hold in stock, this is a big headache for me as physical count never matches what is shown on the books. 
                                                                                                  • Bigin API Token Request ("invalid_client")

                                                                                                    Hi people, I tried to connect to the API without success, I've read all of the documentation multiple time and tried just about everything. I tried to do it with Python Request module and with Postman, passing the information through both the URL parameter
                                                                                                  • Customer Happiness not clickable when using API

                                                                                                    Is there a way to automatically add the Customer Feedback links when generating email drafts via the API? Currently, the feedback links are only added when generating an email draft using the UI. I tried using the endpoint described in https://desk.zoho.com/DeskAPIDocument#CustomerFeedback#CustomerFeedback_Getthecustomerfeedbackplaceholderlink
                                                                                                  • Send To Zoho Sign not Showing

                                                                                                    The button send to Zoho sign is not showing on my Zoho CRM . Is there additional steps I need to take after installing Zoho Sign to CRM ?
                                                                                                  • How to Get An Image's URL once it's uploaded to library?

                                                                                                    I manage to find URLs to the images I uploaded to my library, but after a day, it seems the links stop working like its only temporary. Where can I find the ACTUAL solid URL for my images that I upload to my Library so I can use them for my custom template / HTML coded template? Thanks, Mac
                                                                                                  • 【Zoho CRM】インポート機能のアップデート:既存データへのタグ追加が可能に!

                                                                                                    ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中のインポート機能のアップデートをご紹介します。 Zoho CRMのタグは、データを効率的に分類、認識するためのラベルです。 タグ付けは次の3つの方法で行えます: 個別タグ付け:少数のデータを手動でタグ付け 自動化:特定のタイミングで繰り返しタグ付け 一括更新:インポート機能でタグを追加または更新 今回のアップデートでは、インポート時に既存のタグを残したまま、新しいタグの追加、既存タグを置き換えできるようになりました。
                                                                                                  • Link to Desk tickets

                                                                                                    Hello, We are using Analytics to analyze data in Desk. Is there a way to embed a link to a ticket in reports?  We'd love to be able to see the drill down data, and click a value in a result row that would launch the Desk Ticket in another window/tab. Thanks in advance for any ideas!
                                                                                                  • Bluerprints: How to connect the created record back?

                                                                                                    I've a blueprint which creates another record as part of an 'After' transition. But the two records don't seem to be linked together. If it's not automatic - how do I get the created record ID to link it to the original record? Thanks!
                                                                                                  • Populate a Related List Item based on a Stage

                                                                                                    I would like to know if I can populate a CLOSED DEAL section in a contact that populates only when a Deal (something in the Deal Module) is listed as Closed - Won. I'd like another section that is just called deals, which shows me all other deals that
                                                                                                  • Being able to draw inside a module ?

                                                                                                    I was wondering if anyone know of a solution for this request. We would like to be able to draw directly from one module in the CRM and have it attached to that record. Here is an example. Paul would go to the customer once he as done the measuring, he
                                                                                                  • 2 serial numbers for 1 item (Mac address and Serial number)

                                                                                                    There is a way to track 2 serial number type for 1 Item. Ex: Some electronic devices have a MAC address and a serial number. I need to track those 2 numbers
                                                                                                  • Holidays

                                                                                                    Hi; For defining Holidays, you need to add logic to handle the year as well as the month & day. We need to be able to enter Holidays for the next year. I need to add a holiday for January 2, 2017, but I can't until January 1st, which is a Sunday and we
                                                                                                  • Delete a department or category

                                                                                                    How do I delete a Department?  Also, how do I delete a Category? This is pretty basic stuff here and it's impossible to find.
                                                                                                  • Remove or hide default views

                                                                                                    I'm looking to only have the views pertinent to my organization.  Is there a way to show only my custom views (or separate them to a different area or something)? If not, this should be a feature as switching from Zendesk we had this option...
                                                                                                  • Analytics Module: Can you move items from one dashboard to another?

                                                                                                    Is there a way to move items from one dashboard to another? I want to rearrange my dashboard now that I know what i'm doing but i don't want to remake my various widgets? Edit: Hey Zoho, This would be a good feature: to be able to move/copy widgets to
                                                                                                  • Copy Widget to another Dashboard

                                                                                                    I can see the option to clone a widget to the same dashboard but is it possible to copy it to another dashboard?
                                                                                                  • Is there a way to print the dashboard?

                                                                                                    I would like the capability of printing the dashboard - is that possible?
                                                                                                  • Custom Deal Name in Lead Conversion Mapping

                                                                                                    I know there are ways to change the name of a Deal after conversion using a custom function, so no need to repost that information. I would like to see the CRM Improved with Deal Name Customisation and I think the Lead Conversion Mapping page would be
                                                                                                  • Introducing Record Summary: smarter insights at your fingertips

                                                                                                    Hello everyone, Building on the recent launch of Zoho's in-house Zia Large Language Model (Zia LLM)—a major milestone in Zoho CRM’s AI capabilities—we’re excited to introduce the Record Summary feature. This powerful addition makes use of Zia LLM to simplify
                                                                                                  • Suppress "spreadsheet will not be saved" message on published sheet

                                                                                                    I have published a sheet and have one column on that sheet that the user can edit (a dropdown picklist where the user can select the status for each line). Is there a way to suppress the Zoho Sheet message "Any changes made to this published spreadsheet
                                                                                                  • Missing "Email Authentication" tab

                                                                                                    Backstage is alerting users about "Unauthenticated Domains" with a large prompt in the backend. It adds a link to learn more. On this tutorial page, it shows where to find the "Email Authentication" tab in this screenshot. However, in our Backstage, that
                                                                                                  • Show item Cost value on Item screen

                                                                                                    The Item screen shows Accounting Stock and Physical Stock. It would be very helpful if value information could be displayed here as well, for instance Cost Price. Currently, to find the Cost Price (as used for inventory valuations) from inside the item
                                                                                                  • Zoho Analytics to Zoho Sheets - automatic update?

                                                                                                    Hi all, If I create a zoho sheet from an Analytics Report or Analytics Data, is there a way for the zoho sheet to automatically update as the Report / Data in analytics updates?
                                                                                                  • Integration with Moodle

                                                                                                    Greetings, I hope find all doing well and safe. I've recently returned to using Zoho Flow after a break and was hoping to connect my WooCommerce store with Moodle, the world's most widely used learning management system. My goal was to automatically enroll
                                                                                                  • How to Record Loan with interest

                                                                                                    I have received loans from friend he give me like 2 loans so far one is one year repayment and one short, how to properly record his payment, and repayment and give him statement  for each loan he give me 
                                                                                                  • Task status - completed - other options

                                                                                                    I have a dumb question I know i can make custom statuses for the tasks - but is there anyway to make additional "completed" statuses like for instance if i have a task "call back customer" and i leave a vm for them to call back marking it "completed -
                                                                                                  • Task module and related-to field

                                                                                                    In modules other than the Task Module I can add several lookup fields to provide a variety of relationships. In the Task module lookup fields are not available. There is only one "related to" field which I want to use for Company. But I want to relate
                                                                                                  • Add Lookup Field in Tasks Module

                                                                                                    Hello, I have a need to add a Lookup field in addition to the ones that are already there in the Tasks module. I've seen this thread and so understand that the reason lookup fields may not be part of it is that there are already links to the tables (https://help.zoho.com/portal/en/community/topic/custom-fields-on-task-module).
                                                                                                  • migrating from Zoho Invoices (CRM) to Zoho Books

                                                                                                    Good day, I was wondering if there was a easy way to migrate all the quotes and invoices from Zoho Invoices CRM to Zoho Books. We plan to move to using Zoho Books in a few weeks and would like to have all the quotes and invoices from the past 3 years
                                                                                                  • Next Page