Kaizen #199: FAQs on Multi-Select Lookup (MxN) Field in Zoho CRM

Kaizen #199: FAQs on Multi-Select Lookup (MxN) Field in Zoho CRM

 Nearing 200th Kaizen Post – We want to hear from you!
Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone. 

Hey everybody!!!
Welcome back to another post in the Kaizen series!
In this post, we will address some of the most frequently asked questions about the Multi-Select Lookup(MxN) field from the Zoho CRM developer community forum.

1. What is a Multi-select lookup field?

A multi-select lookup field in Zoho CRM lets you create a many-to-many relationship between two modules. This means a record in one module can be linked to multiple records in another module and vice versa.
For example, using an multi-select lookup field, you can associate multiple skills with an employee.

2. How does the Mutli-Select Lookup relationship work?

When you create a Multi-Select Lookup between two modules, for example, Employees and Skills, Zoho CRM automatically creates a hidden linking module, which is also known as an MxN module. This module stores the associations between records in the two modules, enabling you to track and manage many-to-many relationships.

For instance, if you link Employees and Skills, a linking module named EmpXSkills will be created.

This linking module is accessible only via API.

Backend Flow of multi-select lookup Relationship



In the linking module, two lookup fields (lookup fields with api names - Employees and Skills) will be created. The lookup fields, one pointing to Employees and the other pointing to Skills from the linking module, establish a connection between the linking module and its associated module.

Why you cannot use a lookup field for this use case? 
In Zoho CRM, a lookup field creates a one-to-many relationship between two modules i.e. one record in the source module can be linked to only one record in the target module.

Example :
If you create a lookup field for Skills in the Employees module, each employee can be linked to only one skill. So, use a multi-select lookup field instead of a lookup field when you need to represent complex relationships like one employee - many skills and one skill - many employees.

3. How to create a multi-select Lookup field using Zoho CRM APIs?

To create a Multi-Select lookup field between two modules using Zoho CRM APIs, follow these steps:

Step 1: Identify the Module API Name
Before creating the field, you should know the API names of the Employees and Skills modules. For that, use the Get Module Metadata API.  

Request URL  : {{api-domain}}/crm/v8/settings/modules
Request method : GET



Now, search for the Employees module in the response and note its API name.

Step 2: Use the Create Custom Fields API

To establish a many-to-many relationship between two modules, in our case, Employees and Skills, you need to create a custom field of type multi-select lookup in the Employees module (parent module).  Here, we will associate multiple skills to an employee.

This custom field requires:
  • The related module you want to link to - Skills.
  • A display field from the related module
  • The linking module (EmpXSkills), which stores the actual associations.
Use the Create Custom Fields API to create custom fields.

Request URL : {{api_domain}}/crm/v8/settings/fields?module=Employees
Request method : POST

Sample input :



{
    "fields": [
        {
            "field_label": "Skills", //Name of the field in your module
            "data_type": "multiselectlookup", //Type of the field
            "multiselectlookup": { //This JSON object contains the multi-select lookup relationship details

                "connected_details": { //Details about the module and field you want to link
                    "module": {
                        "api_name": "Skills" //API name of the related module
                    },
                    "field": {
                        "field_label": "Skills" //The field in the related module to display
                    }
                },
                "linking_details": { //Details about the junction or linking module that manages the many-to-many relationship
                    "module": {
                        "plural_label": "EmpXSkills" //Plural label of the junction module
                    }
                }
            }
        }
    ]
}


4. How Do You Find the Linking Module and Field API Names?

To know the API name of the linking module:
Use the Get Modules API and search for "generated_type" : "linking" in the response to identify MxN modules. In our case, EmpXSkills.

Request URL : {{api_domain}}/crm/v8/settings/modules
Request method : GET



To know the field API names in the linking module:
Use the Get Fields Metadata API to retrieve the API names of lookup fields within the linking module.

Request URL : {{api_domain}}/crm/v8/settings/fields?module=EmpXSkills
Request method : GET

5. How do I associate records via a multi-select lookup field using the Insert Records API in Zoho CRM?

To associate records using a multi-select lookup field, you must provide the record IDs from the related module. The association is made through the linking module.

Example :
Associating multiple skills with an employee using the multi-select lookup field.

Request URL : {{api-domain}}/crm/v8/Employees
Request method : POST

Sample input :


{
  "data": [
    {
      "Name": "Patricia",
      "Email": "patricia@mail.com",
      "Position": "Marketing Specialist",
      "Year_of_Experience": 5,
      "Skills": [   // API name of the multi-select lookup field in the Employees module
        {
          "Skills": { // API name of the lookup field in the linking module pointing to the Skills module
            "name": "Marketing",
            "id": "5725767000002149427"  //ID from the Skills module are mandatory to establish the link
          }
        },
        {
          "Skills": {
            "name": "Social Media Marketing",
            "id": "5725767000002149476"
          }
        }
      ]
    }
  ]
}



6. How do I associate an Employee's skills using the linking module in Zoho CRM?

To establish a relationship between the Employees and Skills modules through the linking module, use the Insert Records API to create a record in the linking module, EmpXSkills.

To do this,
  • Use the appropriate lookup field API names to reference the parent module.
  • You must need the record IDs from both the Employees and Skills modules to create the associations.
Request URL : {{api-domain}}/crm/v8/EmpXSkills
Request method : POST

Sample input :


{
  "data": [
    {
      "Name": "Patricia",
      "Employees": {
        "id": "5725767000002161001"  // Record ID from the Employees module
      },
      "Skills": {
        "id": "5725767000002149476"  // Record ID from the Skills module
      }
    }
  ]
}



7. When should I use create/update operations in the Employees module vs the EmpXSkills module?

                Employees Module

               EmpXSkills (linking) Module

Use when you want to create or update an Employee and associate Skills using the Multi-select Lookup field.

Use when you want to create or remove associations between existing Employee and Skill records without modifying the actual Employee or Skill data.

Creating a new employee and assigning their skills at once.

Managing relationships between existing records i.e., linking and unlinking skills to employees.


8. How to update a record in the linking module?

To update a record in the linking module, use the Update Records API.
Request URL : {{api-domain}}/crm/v8/EmpXSkills/5725767000006269044
Request method : PUT

Sample input :


{
    "data": [
        {
            "Skills": {
                "name": "Marketing",
                "id": "5725767000002170035" //Associating another skill with the employee 
            }
        }
    ]
}

In the above sample, we have replaced an existing skill associated with an employee with another Skill in the linking module.This is done by updating the Skills lookup field in the EmpXSkills record.

Please note that in the linking module, Skills is a lookup field, so you can associate only one skill per linking record. But in the Employees module, Skills is a multi-select lookup field, so an employee can be associated with multiple skills.

9. How to unlink records from the parent module as well as the linking module?

Unlink the associated records from the parent module:

Using the Update records API, you can remove an associated skill from an employee, use the "_delete": null key within the multi-select lookup field in the Employee record update.

Request URL : {{api-domain}}/crm/v8/Employees/5725767000006269044
Request method : PUT

Sample input :

{
"data": [
        {
            "Skills": [
               {
                    "Skills": {
                        "name": "Marketing", 
                        "id": "5725767000002170035" // The Skill record you want to unlink
                    },
                    "id": "5725767000007228047", //record ID - The record created in the linking module for the employee with the Marketing skill
                    "_delete" : null 
                }
            ]
        }
    ]
}



Replace an associated record from the linking module:

Use the Update Records API to replace an existing association in the linking module.

Request URL : {{api-domain}}/crm/v8/EmpXSkills/5725767000007228035
Request method : PUT

Sample input :


{
    "data": [
        {
            "Skills": {
                "name": "Java",
                "id": "5725767000005259075" //replacing a new skill 
            }
        }
    ]
}

In the above sample, we have replaced the existing skill with Java.

10. Why am I seeing the error "DUPLICATE_LINKING_DATA"  in the Update Records API

This error occurs when you try to associate records with the parent record that are already linked with the Multi-select lookup field. To resolve this, check the records you are trying to link and make sure your association is only with records that are not already linked.

Know your existing linked records:

Before the Update Records API, use the Get Related Records Data API and search for the multi-select lookup field. In our case, Skills is the multi-select lookup field created in the Employees module. This will return all records already associated.

Example :


The response returns all Skills already linked with that Employee.

Using this way, compare the IDs from the API response with the new records you are about to link, and only proceed with non-duplicate IDs. This avoids duplicate entries and prevents the "DUPLICATE_LINKING_DATA" error.

11. What happens if I delete a record in the linking module?

When you delete a record in the linking module, it only removes the association between the related records in the Employees and Skills modules.

Note :
  • Deleting a linking module record removes only the relationship between two records from the Employees and Skills modules.
  • Deleting an Employee or Skill record deletes all corresponding entries in the linking module as well.

12. How do I query linked records?

Use the COQL API to query multi-select lookup data by specifying the corresponding linking module's API name directly in your query. The linking module is treated as a separate module in Zoho CRM, so you can retrieve associated records by querying it like any other module.

Sample query :


{
  "select_query": "select Skills.Name as skill, Employees.Name as employee from EmpXSkills where Skills.Name like '%Marketing%'"
}


Use the Get Module Metadata API to know the linking module's API name.

13. How do I export multi-select lookup records using the Bulk Read API?

To export multi-select lookup data, linking module records efficiently, use the Bulk Read API with the linking module’s API name.

Request method : POST

Sample Request :


{
    "callback": {
        "method": "post"
    },
    "query": {
        "module": {
            "api_name": "EmpXSkills" //API name of the linking module
        },
        "fields": [
            "Employees.Name",
            "Employees.Year_of_Experience",
            "Skills.Name"
        ],
        "criteria": {
            "group": [
                {
                    "field": {
                        "api_name": "Employees.Year_of_Experience" 
                    },
                    "comparator": "greater_than",
                    "value": "4"
                },
                {
                    "field": {
                        "api_name": "Skills.Name"
                    },
                    "comparator": "contains",
                    "value": "Social"
                }
            ],
            "group_operator": "AND"
        }
    }
}


14. Can I import my linking module's data using the Bulk Write API?

Yes. Like the Leads and Contacts modules, you can also import linking module's data into Zoho CRM using the Bulk Write API by directly specifying the linking module’s API name.

If you are importing data that involves both a parent module, Employees and its associated MxN linking module, follow these steps:

1. Create separate CSV files:
  • One for the parent module - Employees
  • One for the linking module - EmpXSkills
2. Zip the files into a single ZIP file.
3. Upload the ZIP in a single Bulk Write API request.
4. Ensure accurate field mappings are provided in the API request body.

Refer to Kaizen #131 - Bulk Write for parent-child records using Scala SDK for more details on handling parent-child records.


15. Can I receive notifications if a multi-select lookup field in a module is modified or updated?

Yes, you can receive notifications when a MxN field is updated using the Notification API. To enable instant notifications for actions performed in a module, use the respective API names of the linking module in the input body.

Request method : POST

Sample input :


{
    "watch": [
        {
            "channel_id": "10000",
            "events": [
                "EmpXSkills.all"  //EmpXSkills represents the API name of the linking module
            ],
            "return_affected_field_values": true  
        }
    ]
}


16. Can I use criteria-based filtering when accessing multi-select lookup data using the Search API?

Yes, you can filter multi-select lookup data using the criteria parameter in the Search API's URL.

Here is an example that fetches records from the EmpXSkills linking module.

Request URL : {{api-name}}/crm/v8/EmpXSkills/search?criteria=((Secondary_Email:equals:patricia@mail.com)and(Skills:equals:Content_Marketing))
Request method : GET

Sample response :



                                                                                                                               x-----------------------------x


We trust that this post meets your needs and is helpful. Let us know your thoughts in the comment section or reach out to us at support@zohocrm.com 

Stay tuned for more insights in our upcoming Kaizen posts!


Other FAQs in the Kaizen series :


      • Recent Topics

      • Power of Automation :: Quick way to associate your Projects with Zoho CRM

        A custom function is a software code that can be used to automate a process and this allows you to automate a notification, call a webhook, or perform logic immediately after a workflow rule is triggered. This feature helps to automate complex tasks and
      • Create an Eye-Catching Announcement Widget for Your Help Center

        Hello Everyone! In this week’s edition, let’s explore how to keep your customers updated with exciting news in the Help Center. See how ZylkerMobile wowed their customers by bringing updates right to their portal. ZylkerMobile, the renowned brand for
      • I want to add my other zoho account in same pc

        why does zoho restrict me doing many things as i also want to add my second mail account bit its not allowing me to do that
      • Search in Zoho Community Not Working

        I realize this is a bit of a meta topic, but the search for the various Zoho Communities appears to not be working. I'm under the impression that they run on some version of the Zoho Desk platform, so I'm posting this here.
      • Capture Stripe’s Customer ID

        Does anyone know of a way to capture Stripe’s customer ID that is created when the form/payment is processed? I would like to have the customer ID stored in our CRM so we could utilize in some custom functions down the road.
      • Custom Modules - Where are Comments??

        In the standard ticket module and in the tasks module, we have an interactive comment box that we can post important details/notes and can tag others if needed. Where is this functionality for Custom Modules? Ideally, custom modules would have very similar,
      • Dynamic Signature - Record owner

        Hi everyone, I’m using Zoho Writer merge templates from Zoho CRM and have two questions: Owner signature: How can I automatically insert the CRM record owner’s signature in the merged document? I’m not sure where this signature is stored or how to reference
      • PUNJAB NATIONAL BANK (CORPORATE) INDIA - NOT AVAILABLE IN BANKING

        Dear sir, Kindly fix it. PUNJAB NATIONAL BANK (INDIA) is available but PUNJAB NATIONAL BANK (CORPORATE) is not available. Kindly enable this banking since we need to categorize the entries. Regards, Sanjay Jena email id/ user id : travewithmerchant@
      • Amazon invoice in Zoho Books

        I have just made my first few sales on Amazon India. Amazon Seller account generates invoices for the sales made on Amazon. These invoices are sent to customers also. Now when I was only making offline sales, I used to create Invoices in Zoho Book. Now
      • CUSTOM FUNCTION GIVE ERROR #EVAL!

        CUSTEM FUNCTION CREATE KYA ZOHOSHEET ME US FUNCTION KO USE KIYA LEKIN DATA TO SAHI HAI LAKIN DATA SHEET ME NAHI LAG LAHA HAI KRUPYA SOLVE KARE MY CODE IS float ADDTWO_TWO(float NO1, float NO2) { ADD = NO1 + NO2; return ADD; }
      • Zoho ShowTime: Certificates of Completion - Award your learners with a sense of achievement

        In our increasingly competitive market, professional trainers need to differentiate themselves if they are to survive. One way to do this is to focus on innovation and deliver an ideal learning experience. By developing a renowned certificate program that provides learners with a specialized skill set for a particular industry, both trainees and future prospects will recognize the trainer's leadership in that field. This can help with long-term growth, revenue generation, and even marketing and branding.
      • IMAP Migration from Gmail

        I have been trying to import my email from a Gmail server and keep receiving the following error. I have reduced the security, activated imap and no improvement. The link to the Google support item has not helped. Unable to connect to your account. Please
      • Your Incoming has been blocked and the emails will not be fetched in your Zoho account and POP Accounts Click here to get unblocked.

        When entering my account, this error is thrown at me, and I deleted a good part of my deleted messages, but I still can not unblock it, I would appreciate your help. reservas@lineasperutravel.com
      • Request for Creating Multiple Email Accounts on One Mobile Number

        Dear Zoho Team, I am planning to shift all my work-related communication to Zoho Mail because of its reliability and features. For my work, I need to create 3–4 separate email accounts for different purposes. Could you please confirm if it is possible
      • Signature issue

        Problem: The signature does not appear when replying or forwarding an email. solve issue: settintgs/Signature Check option place a signature above the content with quotation marks
      • mail admin not loading

        i am trying to login to mailadmin ... gears keeps rotating forever... its not a password issue whats so ever ... not cookies issues whatsoever from android app i can login but there so few things to do from there .. i changed ip address the same... i
      • Unify All Zoho Video Meeting Experiences into One Standardized Platform

        Hi Zoho Team, We would like to share an important user experience concern regarding the current state of video meeting functionality across the Zoho ecosystem. The Problem Within Zoho, there are multiple ways to initiate or schedule a video meeting: Zoho
      • Changing Account in Quote form does not update address information.

        I am trying to update the address information in a quote I've created. I corrected the address in the "Account" but that did not change in the quote. If I re-enter the Account Name in the Quote form, nothing updates. How do I fix this?
      • Zoho One Backup of entire account

        Hello, When using Zoho one is there a way to backup your entire account of all apps that you are using \ activively using in a single step or do you have to backup each applications data individually? Thanks,
      • ZIA in Zoho Cliq

        Is It possible to use the ZIA feature from Zoho Analytics in the Zoho Cliq?
      • Issue with “CC” and “Subject Details” of the initial mail when reply / replied all / forward using Zoho Mail Client (Desktop / Web Mail / Mobile App)

        It is observed that when I reply / reply all / forward a mail using Zoho Mail Client (Desktop / Web Mail / Mobile App), the “CC” and “Subject Details” are omitted from the mail which was replied/forwarded. However this is not the case with outlook mail
      • Unable to send Emails - 452 4.3.1 Temporary System Error

        Whene ever i request smtp server to send the email (without attachment). i recieve error "452 4.3.1 Temporary System Error"
      • I can't receive email

        I cannot receive any email sent to my Zoho email after the free upgrade plan trial is finished.
      • Help for the alisa adding

        Sorry, I would like to add a paypal alias on my domain email address. However, the system blocked it. How can I do it?
      • Problem with Writer and Workdrive

        Hi team, I’m the super admin for our Zoho One org. WorkDrive is active, and Zoho Docs is deprecated for our org. However, Zoho Writer cannot connect to WorkDrive at all — we’ve cleared cache, tried incognito, and restarted several times. I was able to
      • Lite plan attachment said 250mb but actually 25mb ?

        Lite plan attachment said 250mb but actually 25mb ? I can't attach over 25mb files, and can't receive mails has attached files over 25mb too
      • Zoho Books | Product updates | August 2025

        Hello users, We’ve rolled out new features and enhancements in Zoho Books. From the right sidebar where you can manage all your widgets, to integrating Zoho Payments feeds in Zoho Books, explore the updates designed to enhance your bookkeeping experience.
      • Constant color of a legend value

        It would be nice if we can set a constant color/pattern to a value when creating a chart. We would often use the same value in different graph options and I always have to copy the color that we've set to a certain value from a previous graph to make
      • Can no longer export as pdf

        In NOTEBOOK I am no longer able to export notes to pdfs as I used to be able to. When I hit that command it asks where I want to send it, but no matter what I chose there is no pdf attachment that shows up in order to send. Nothing happens.
      • Option to Customize Career Site URL Without “/jobs/Careers”

        Dear Zoho Recruit Team, I hope you are doing well. We would like to request an enhancement to the Career Site URL structure in Zoho Recruit. In the old version of the career site, our URL was simply: 👉 https://jobs.domain.com However, after moving to
      • Old vs New Value for Deleted Lookup Values

        Suppose the following scenario, where a value in a lookup is deleted: 1. User has countries form 2. Form A has a lookup to countries form 3. User selects Italy in Form A and saves it with the Italy ID 4. Form A report shows Italy 5. Italy is inadvertently
      • Desktop app doesn't support notecards created on Android

        Hi, Does anybody have same problem? Some of last notecards created on Android app (v. 6.6) doesn't show in desktop app (v. 3.5.5). I see these note cards but whith they appear with exclamation mark in yellow triangle (see screenshot) and when I try to
      • customize payment page

        Is there a way to customize, other than the theme colour, the payment page that customers are taken to from invoices? I can't seem to find a way. I just don't like the formatting of the current page and would like to make it look better. I've looked at
      • Are Environments Worth It?

        In concept, Environments in ZC is a great idea. I think the flow is pretty smart when you compare it to GitHub, especially for a low code audience. However, in practice, I've found it to be unpredictable, and I've only used it a few times. Aside from
      • Enhanced duplicate check for Leads in CRM

        Hello Everyone, We are excited to announce that you can now check for duplicate entries in leads by comparing them with similar records in the Contacts Module. Previously, when you added a lead, only the converted leads were checked for duplicates. This
      • Pause(1);

        I'm using scheduler to invoke an interaction via http post with an external service. The schedule code uses a for-each loop that runs so fast my external application's log files get messed-up (they are named by date-time stamp). What I'm suggesting is
      • Integration Request: Elementor

        Integrating Zoho CRM forms with Elementor, the most popular page builder on Wordpress, would be great. I use it for our site, goenergylink.com, and I have had to use Zapier webhooks to be able to connect it with Elementor. The one issue I have run into
      • Vertical images displayed as horizontal

        Some pictures that originally are in vertical position are displayed in horizontal after the upload. It seems that system rotates them by 90 degrees. How can I fix this issue?
      • Ability to Change Visibility of Published YouTube Videos

        Hi Zoho Social Team, How are you? We would like to request an enhancement in Zoho Social regarding the management of already published youtube videos. Currently, after publishing a youtube video through Zoho Social, there is no option to change its visibility
      • Adding anchor links in Zoho CRM email templates

        I know you can add anchor link in Campaigns, but I dont see the option to that in the CRM email template. Am I missing something?
      • Next Page