Map Dependency Fields in Zoho CRM using APIs

Map Dependency Fields in Zoho CRM using APIs




Hi Everyone!!

Welcome back to another week of Kaizen series!

Over the past few weeks, we have been addressing your questions and feedback shared through our Kaizen 200th feedback form. Thank you for your continued engagement and thoughtful queries. We truly enjoy helping users solve real challenges through these Kaizen series.

This week, we will explore the Map Dependency Fields in Zoho CRM, and how you can configure and manage them using Zoho CRM APIs.

Map dependency fields with a use case

In Zoho CRM, dependency fields are also called picklist dependencies. They create a relationship between two picklist fields. A controlling field is the parent field, and a dependent field is the child field. The option chosen in the parent field decides which options should be shown in the child field. Helps you to make easy data entry and maintain cleaner with only relevant options.

In many businesses, one field’s options depend on another. For example, if your support team tracks Issue Type and Sub-Issue, showing all sub-issues at once lets users select incorrect options. A user might accidentally choose Payment Failed under Login Issue. This results in incorrect data selection and makes confusion in records.

Dependency fields solve this problem by creating a parent-child relationship between two picklist fields.

Let us consider the Support Cases module, where two picklist fields are already created:
  1. Parent Field - Issue Type: The value chosen here determines which options appear in the dependent field.
  2. Child Field - Sub-Issue: The available options change dynamically based on the selected value in the parent field.
Below table shows the picklist fields along with their respective options.

                            Issue Type

                                   Sub-Issue 

Login Issue

Forgot Password, Account Locked, 2FA Not Working
Payment Issue

Credit Card Declined, Refund Not Received, Double Charge

Feature Request

New Integration, UI Enhancement, Report Customization

By mapping these fields, CRM users see only the Sub-Issue values relevant to the selected Issue Type.

Without map dependency

Without configuring a map dependency, the Sub-Issue picklist would always display all available options - regardless of the selected Issue Type. For example, users might see options like Forgot Password, Double Charge, and Report Customization all at once. This can easily confuse users and lead to incorrect selections, such as choosing Double Charge under Login Issue.

With map dependency

With mapping dependencies, you can guide users to make correct selections by showing only the relevant options in the child field based on the option selected in the parent field.

Mapping picklist options in UI

You can map picklist field options directly from the Zoho CRM user interface.
Follow these steps:
  1. Go to SetupCustomizationModules and Fields.
  2. Select the desired module. In this case, Support Cases.
  3. Click the (more) icon next to the module name.
  4. Select Map Dependency Fields.
  5. On the Map Dependency Fields page, click the New button to create a new dependency.
  6. Choose the Parent Field and Child Field you want to map.
  7. Click Next button.


      8. Add option mappings to define which child field options should be shown based on the option selected in the parent field, then Save your configuration.

UI options mapping view

Mapping picklist options via API

Before mapping the options, you must need the following APIs :
  1. Modules Metadata API - To know the API name of the module.
    1. Endpoint: GET - /settings/modules
    2. Here, the API name of the Support Cases module is Support_Cases.
  2. Layouts Metadata API - Since dependencies are layout-specific, this API helps you identify the layout ID and all the available picklist fields for mapping. It also provides detailed metadata such as the layout ID, field IDs, and the corresponding picklist value IDs.
    1. Endpoint: GET /settings/layouts?module=Support_Cases

Create Dependency using the POST Map Dependency

Request URL:  {{api-domain}}/crm/v8/settings/layouts/5725767000007972011/map_dependency?module=Support_Cases

Request Method: POST

Input JSON
Each object in the map_dependency array requires a parent field, a child field, and a pick_list_values array that maps each parent option to its relevant child options.


{

    "map_dependency": [ //Array that contains one or more dependency mappings

        {

            "parent": { // Mandatory - Represents the parent picklist

                "api_name": "Issue_Type", //Mandatory - API name of the parent field

                "id": "5725767000007985243" // Mandatory - Unique ID of the parent picklist

            },

            "pick_list_values": [  //Mandatory - List of parent picklist values and their corresponding child mappings

                {

                    "display_value": "-None-",

                    "maps": [

                        {

                            "display_value": "-None-",

                            "actual_value": "-None-",

                            "id": "5725767000007985204"

                        }

                    ],

                    "actual_value": "-None-",

                    "id": "5725767000007985249"

                },

                {

                    "display_value": "Login Issue",

                    "maps": [

                        {

                            "display_value": "Forgot Password", //Label shown in the UI for the parent value

                            "actual_value": "Forgot Password", //Actual stored value of the parent picklist option

                            "id": "5725767000007985185" //Mandatory - Unique ID of the parent picklist option

                        },

                        {

                            "display_value": "Account Locked",

                            "actual_value": "Account Locked",

                            "id": "5725767000007985187"

                        }

                        

                    ],

                    "actual_value": "Login Issue", //Actual value of the parent field's option

                    "id": "5725767000007985242" //Mandatory - Unique ID of the parent field's option

                },

                {

                    "display_value": "Payment Issue",

                    "maps": [

                        {

                            "display_value": "Credit Card Declined",

                            "actual_value": "Credit Card Declined",

                            "id": "5725767000007985191"

                        },

                        {

                            "display_value": "Refund Not Received",

                            "actual_value": "Refund Not Received",

                            "id": "5725767000007985193"

                        },

                        {

                            "display_value": "Double Charge",

                            "actual_value": "Double Charge",

                            "id": "5725767000007985195"

                        }

                    ],

                    "actual_value": "Payment Issue",

                    "id": "5725767000007985244"

                },

                {

                    "display_value": "Feature Request",

                    "maps": [

                        {

                            "display_value": "New Integration",

                            "actual_value": "New Integration",

                            "id": "5725767000007985197"

                        },

                        {

                            "display_value": "UI Enhancement",

                            "actual_value": "UI Enhancement",

                            "id": "5725767000007985199"

                        },

                        {

                            "display_value": "Report Customization",

                            "actual_value": "Report Customization",

                            "id": "5725767000007985201"

                        }

                    ],

                    "actual_value": "Feature Request",

                    "id": "5725767000007985246"

                }

            ],

            "child": { //Mandatory - Represents the child field

                "api_name": "Sub_Issue", //Mandatory - API name of the child field

                "id": "5725767000007985186" //Mandatory - Child picklist field ID

            }

        }

    ]



Sample Response 

{
    "map_dependency": [
        {
            "code": "SUCCESS",
            "details": {
                "id": "5725767000008174001"
            },
            "message": "map dependency created",
            "status": "success"
        }
    ]
}


Retrieve the configured field mappings using the GET Mapped Dependency Fields API

Request URL:  {{api-domain}}/crm/v8/settings/layouts/5725767000007972011/map_dependency/5725767000008174001?module=Support_Cases

Request Method: GET
Sample Response

{
    "map_dependency": [
        {
            "parent": {
                "api_name": "Issue_Type",
                "id": "5725767000007985243"
            },
            "internal": false,
            "active": true,
            "id": "5725767000008180001",
            "source": 1,
            "category": 0,
            "pick_list_values": [
                {
                    "display_value": "-None-",
                    "maps": [
                        {
                            "display_value": "-None-",
                            "actual_value": "-None-",
                            "id": "5725767000007985204"
                        }
                    ],
                    "actual_value": "-None-",
                    "id": "5725767000007985249"
                },
                {
                    "display_value": "Login Issue",
                    "maps": [
                        {
                            "display_value": "Forgot Password",
                            "actual_value": "Forgot Password",
                            "id": "5725767000007985185"
                        },
                        {
                            "display_value": "Account Locked",
                            "actual_value": "Account Locked",
                            "id": "5725767000007985187"
                        },
                        {
                            "display_value": "2FA Not Working",
                            "actual_value": "2FA Not Working",
                            "id": "5725767000007985189"
                        }
                    ],
                    "actual_value": "Login Issue",
                    "id": "5725767000007985242"
                },
              .
              .
              .
            ],
            "child": {
                "api_name": "Sub_Issue",
                "id": "5725767000007985186"
            }
        }
    ]
}
You will get a JSON structure containing all dependency mappings. Check if your parent and child fields appear as configured.

Update the existing mapped options using the PUT Mapped Dependency Fields API

Request URL:  {{api-domain}}/crm/v8/settings/layouts/5725767000007972011/map_dependency/5725767000008174001?module=Support_Cases

Request Method: PUT

Input JSON

{

    "map_dependency": [

        {

            "parent": {

                "api_name": "Issue_Type",

                "id": "5725767000007985243"

            },

            "pick_list_values": [

                {

                    "display_value": "-None-",

                    "maps": [

                {

                    "display_value": "Login Issue",

                    "maps": [

                        {

                            "display_value": "Forgot Password",

                            "actual_value": "Forgot Password",

                            "id": "5725767000007985185"

                        },

                        {

                            "display_value": "Account Locked",

                            "actual_value": "Account Locked",

                            "id": "5725767000007985187"

                        },

                        { // mapped a new option to the existing mapping

                            "display_value": "2FA Not Working",

                            "actual_value": "2FA Not Working",

                            "id": "5725767000007985189"

                        }

                    ],

                    "actual_value": "Login Issue",

                    "id": "5725767000007985242"

                }

            ],

            "child": {

                "api_name": "Sub_Issue",

                "id": "5725767000007985186"

            }

        }

    ]

}





Delete existing dependency using the DELETE Mapped Dependency Fields API

Request URL:  {{api-domain}}/crm/v8/settings/layouts/5725767000007972011/map_dependency/5725767000008174001?module=Support_Cases

Request Method: DELETE

Sample Response


{
    "map_dependency": [
        {
            "code": "SUCCESS",
            "details": {
                "id": "5725767000008174001"
            },
            "message": "map dependency deleted",
            "status": "success"
        }
    ]
}



Assigning picklist values using the Insert Records API

When you insert a record, you can directly pass the picklist option’s display value (not the ID) in the request body.

Request URL: {api-domain}/crm/v8/{module_api_name}
Request Method: POST

Sample Input 

{

    "data" : [

        {

            "Name" : "Support Case 1",

            "Support_Case" : "Login Issue",

            "Issue_Type" : "Login Issue",

            "Sub_Issue":"Forgot Password"

        }

    ]

}


Note: When creating or updating records via API, CRM does not validate the dependency relationship between parent and child picklist values.
To ensure data consistency and prevent data loss, always use the Get Map Dependency API before creating or updating records and to know correct mappings as well. This helps you retrieve the correct parent–child mappings and pass only valid picklist values in your API requests.

FAQs

Q1. Is the Map Dependency field supported in subforms?

Yes. You can configure dependency mappings for picklist fields within subforms as well. The Map Dependency Fields API supports creating parent–child picklist relationships directly inside a subform. To do this via API, use the subform’s API name as the module name when making the dependency mapping call.
This ensures that the dependency is created specifically for the picklist fields inside that subform, not the main module.

Q2. Can I keep the parent field in the main form and the child field in the subform?

Not currently. As of Zoho CRM API Version 8, cross-level mapping where the parent field is in the main form and the child field is in a subform, or vice versa is not supported neither via the UI nor through the API.

You can only:
  1. Map picklists within the main form, or
  2. Map picklists within the same subform.

Q3. What happens if I delete a picklist value that is part of a dependency?

If you delete a picklist option, the corresponding mapping will be automatically removed from the dependency.


Q4. What happens if I rename a picklist value that is part of a dependency?

If you rename a picklist option, the dependency will be automatically updated with the new option label.



We hope this post helps you learn more on mapping dependency fields in CRM using Zoho CRM APIs. Try it out, and let us know your experience in the comment section or reach out to us at support@zohocrm.com 

Stay tuned for more insights in our upcoming Kaizen posts!



    • Sticky Posts

    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! 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.
    • Kaizen #226: Using ZRC in Client Script

      Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
    • Kaizen #222 - Client Script Support for Notes Related List

      Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
    • Kaizen #217 - Actions APIs : Tasks

      Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
    • Kaizen #216 - Actions APIs : Email Notifications

      Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
    • Recent Topics

    • Orphan email alias blocking user creation – backend cleanup required

      Hello Zoho Mail Support, I´m unable to assign or create the address xx@iezzimatica.ar in my organization. Current situation: Alias cannot be assigned to any user (system says it is already in use) New user with this address cannot be created Address does
    • email address autocomplete

      Is there a way to eliminate certain addresses from showing up in auto complete when entering an address? Many old and unused addresses currently show up, many of which I would like to get rid of. Thanks
    • How to use MAIL without Dashboard?

      Whenever I open Mail, it opens Dashboard. This makes Mail area very small and also I cannot manage Folders (like delete/rename) etc. I want to know if there is any way to open only Mail apps and not the Dashboard.
    • Introducing Radio Buttons and Numeric Range Sliders in Zoho CRM

      Release update: Currently out for CN, JP, AU and CA DCs (Free and standard editions). For other DCs, this will be released by mid-March. Hello everyone, We are pleased to share with you that Zoho CRM's Layout Editor now includes two new field formats—
    • How can i download and secure all my mails from the archive folders?

      Hi, i would like to download all my mails from my archive folders and secure it on my external HDD. Is this possible? Thx. amir
    • How to open filtered report in popup using Zoho Creator Deluge?

      First report: There is so many records in Report, If I click one record, pop up is occur. Second report (Pop up): there is also so many record data, and this pop up is also Report, not Form. First report: It has got "Sales Order" field. when I click any
    • Make panel configuration interface wider

      Hi there, The same way you changed the custom function editor's interface wider, it would be nice to be able to edit panels in pages using the full width of the screen rather than the currently max-width: 1368px. Is there a reason for having the configuration panel not taking the full width? Its impossible at this width to edit panels that have a lot of elements. Please change it to 100% so we can better edit the layouts. Thanks! B.
    • Can you default reports/charts to report the current week?

      Our data table maintains two years of data. Management wants certain report to automatically filter the report to the latest calendar week. I know I can do this manually with filters but I want the report to automatically default to the latest calendar
    • Rendering PDF to view on page

      My company upload lots of PDF files onto Zoho. But every time we open it, it downloads the file instead of viewing it on the web page. Does Zoho allow uploaded PDF files to be rendered to view on web page yet? I've been trying to use <embed> or <object> but it cannot be loaded.  (similar thread: https://help.zoho.com/portal/community/topic/how-to-open-a-pdf-file-of-a-view-in-preview-mode)
    • Overlapping Reports in Dashboards

      It's rare, but occasionally it would be a good feature if I were able to overlap reports, either fully or partially in the Dashboards. Also, then having the ability to move objects to the front or rear, or make them transparent/translucent would be good
    • Feature request - pin or flag note

      Hi, It would be great if you could either pin or flag one or more notes so that they remain visible when there are a bunch of notes and some get hidden in the list. Sometimes you are looking for a particular name that gets lost in a bunch of less important
    • Admin guide: Handling Mailbox Settings for better user management

      Managing day-to-day email scenarios, such as supporting users with multiple email addresses, ensuring uninterrupted email access during employee absences, enabling secure mailbox sharing, and enforcing organizational security and compliance, can be challenging
    • Cisco Webex Calling Intergration

      Hi Guys, Our organisation is looking at a move from Salesforce to Zoho. We have found there is no support for Cisco Webex Calling however? Is there a way to enable this or are there any apps which can provide this? Thanks!
    • Designing a practical Zoho setup for a small business: lessons from a real implementation

      I recently finished setting up a Zoho-based operating system for a small but growing consumer beauty business (GlowAtHomeBeauty), and I wanted to share a practical takeaway for other founders and implementers. The business wasn’t failing because of lack
    • DKIM (Marketing emails) UNVERIFIED (Zoho One)

      I'm having a problem with Zoho One verifying my Marketing Email DKIM Record for MYFINISHERPHOTOS.COM. I have removed and re-entered the ownership, DKIM (Transactional emails), SPF and Marketing DKIM and all of them come back verified except the DKIM (Marketing
    • Zoho Recruit Community Meet-up - India

      Namaste, India. 🙏🏼 The Zoho Recruit team is hitting the road—and we 're absolutely excited behind the scenes. Join us for the Zoho Recruit India Meet-up 2026, a morning designed to make your recruiting life easier (and a lot more effective). Date City
    • Generate a Zoho Sign link

      From time to time I get a response "I never received your you e-document for electronic signature" is there a way to generate a Zoho Sign link to share.
    • Zoho Social - Cliq Integration / Bot

      Dear community / zoho, I am looking for a way to create a bot within Zoho Cliq to update my colleagues about our Zoho Social activities. For example, if a new post is published, it would be great if this post automatically would be shared in our social
    • CRM gets location smart with the all new Map View: visualize records, locate records within any radius, and more

      Hello all, We've introduced a new way to work with location data in Zoho CRM: the Map View. Instead of scrolling through endless lists, your records now appear as pins on a map. Built on top of the all-new address field and powered by Mappls (MapMyIndia),
    • Is it possible to create a word cloud chart in ZoHo Analystics?

      Hi there, I have a volume of transaction text that I would like to analyse using word cloud (or other approcah to detect and present word frequency in a dataset). For example, I have 50,000 records describing menu items in restaurants. I want to be able
    • How to Fix the Corrupted Outlook 2019 .pst file on Windows safely?

      There are multiple reasons to get corrupted PST files (due to a power failure, system crash, or forced shutdown) and several other reasons. If You are using this ScanePST.EXE Microsoft inbuilt recovery tool, it only supports the minor corruption issue
    • [Webinar] A recap of Zoho Writer in 2025

      Hi Zoho Writer users, We're excited to announce Zoho Writer's webinar for January 2026: A recap of Zoho Writer in 2025. This webinar will provide a recap of the features and enhancements we added in 2025 to enhance your productivity. Choose your preferred
    • How to drag row(s) or column(s)?

      Hi. Selecting a row or column and then dragging it to a new position does not seem to work. Am i missing something or this is just not possible in Zoho Sheet? Cheers, Jay
    • Building Toppings #5 - Creating and configuring custom service connections in Bigin Toppings

      Hello Biginners, Integrating Bigin with external applications extends its capabilities and enables customized functionalities. In our last post, we saw how to create a default service connection. Today, we'll see how to create a custom service connection
    • Admin asked me for Backend Details when I wanted to verify my ZeptoMail Account

      Please provide the backend details where you will be adding the SMTP/API information of ZeptoMail Who knows what this means?
    • Optimising CRM-Projects workflows to manage requests, using Forms as an intermediary

      Is it possible to create a workflow between three apps with traceability between them all? We send information from Zoho CRM Deals over to Zoho Projects for project management and execution. We have used a lookup of sorts to create tasks in the past,
    • Conditional fields when converting a Lead and creating a Deal

      Hi, On my Deal page I have a field which has a rule against it. Depending on the value entered, depends on which further fields are displayed. When I convert a Lead and select for a Deal to be created as well, all fields are shown, regardless of the value
    • ATE Session on Payment Gateways: Our experts are live now. Post your questions now!

      Hello everyone, Our experts are all excited to answer all your questions related to payment workflows. Please feel free to join this session and learn more about this topic. If you have a query at anytime, please post them here.
    • Upload data deleted all Zoho form data that we manage

      Good morning. Let me introduce myself, I'm Iky from Indonesia. I'm experiencing an error or problem using Zoho Forms. I manage Zoho Forms, but I previously encountered an error when I misclicked the delete button in the upload format. It apparently deleted
    • ZOHO FORMにURL表示ができない

      初心者です。 ZOHO FORM で宿泊者名簿を作っています。 ゲストが、URLをクリックするとStripeで支払いができるようにURLを表示をしたいのですが、 上手くできません。 やり方が分かる方、ぜひ教えてください。
    • Custom module - change from autonumber to name

      I fear I know the answer to this already, but thought I'd ask the question. I created a custom module and instead of having a name as being the primary field, I changed it to an auto-number. I didn't realise that all searches would only show this reference.
    • No Automatic Spacing on the Notebook App?

      When I'm adding to notes on the app, I have to add spaces between words myself, rather than it automatically doing it. All my other apps add spacing, so it must be something with Zoho. Is there a setting I need to change, or something else I can do so
    • Holidays - Cannot Enter Two Holidays on Same Day

      I have a fairly common setup, where part-time employees receive 1/2 day's pay on a holiday and full-time employees receive a full day's pay. Historically, I've been able to accommodate this by entering two separate holidays, one that covers full-time
    • Zoho Bookings and Survey Integration through Flow

      I am trying to set up flows where once an appointment is marked as completed in Zoho Bookings, the applicable survey form would be sent to the customer. Problem is, I cannot customise flows wherein if Consultation A is completed, Survey Form A would be
    • Campaigns set up and execution assistance

      Hello Community, Can someone recommend a professional who can assist with the completion of my set up and deployment of Campaigns? Looking for a person or company that is not going to ask for big dollars up-front without a guarantee of performance to
    • Card Location in Zobot

      Hello, when using the “Location” card in a codeless builder Zobot, the behavior in WhatsApp is inconsistent. When asking the user to share their location, they can type a message, which will return the message “Sorry, the entered location is invalid.
    • Zobot with Plugs

      Hello, I am having a problem with Zobot using Plugs. Here is my current flow: When I run the flow, I should immediately see the messages from the initial cards (Send Message cards), then after running the plug, and finally, see the messages after the
    • Kaizen #223 - File Manager in CRM Widget Using ZRC Methods

      Hello, CRM Wizards! Here is what we are improving this week with Kaizen. we will explore the new ZRC (Zoho Request Client) introduced in Widget SDK v1.5, and learn how to use it to build a Related List Widget that integrates with Zoho WorkDrive. It helps
    • Remove Powered by Zoho at the footer

      Hi, I've read two past tickets regarding this but it seems that the instructions given are outdated. I assume the layout keeps on changing, which makes it frustrating for me to search high and low. Please let me know how exactly do I do this now? Th
    • Error AS101 when adding new email alias

      Hi, I am trying to add apple@(mydomain).com The error AS101 is shown while I try to add the alias.
    • Next Page