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 Setup → Customization → Modules 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

    • Announcing the new SKILL.md for Zoho CRM and the updated OAS repository!

      We are introducing a new zoho-crm skill to make working with Zoho CRM Developer tools (like APIs, functions, widgets, client scripts, queries etc) easier and faster, with the help of AI in your preferred AI harness like Claude Code, Codex, Cursor, VSCode
    • Kaizen #261 : Using Zoho CRM Skill to generate complex COQL queries

      Hello everyone, In the previous Kaizen posts, we introduced the zoho-crm SKILL.md and discussed how it can help you when you are working with Zoho CRM APIs and Client Script. In this Kaizen, we will focus on using the Zoho CRM `SKILL.md` with GitHub Copilot
    • Kaizen #256 - Build an Arrival Readiness Web Tab in Zoho CRM

      Hi everyone! Welcome back to the Kaizen series! In the post, we discuss a use case in hospitality industry: how an Arrival Readiness web tab widget can be used to let reception staff identify and resolve issues before arrival of guests. Use case In the
    • 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
      • Recent Topics

      • Convert MBOX to PDF Free on Mac and Windows

        MBOX files are widely used for storing email messages in email clients such as Thunderbird, Apple Mail, and other programs that support the MBOX format. Although this format is useful for handling emails, it can at times be inconvenient to access the
      • Notes - Reaction Buttons

        Using the native notes option within CRM is fine, it works and the RTF features are great, however, would it be possible - if there isnt already something in place, where we can add a reactions button, similar to teams/whatsapp to show that its been read
      • ZohoBooks - "Account transactions" report doesn't have any "Desciptions"

        Hi, I'd like to push for this to be included in ZohoBooks: In a "account transactions" report all the numbers are right, but I'd really like to see the "Description" as part of this report, i.e. the line-item-description as I would see it in the bank statement. Essentially all you see is a list of numbers adding up to the total. It is very difficult to see if things are right without being able to see what exactly each transaction refers to. Going into each transaction one-by-one is not a workable
      • Address limits per customer by edition

        I’m on the Standard edition and have reached a limit of 30 addresses under a single customer. Before I move to an annual Professional subscription, I need to confirm the following: What is the maximum number of addresses allowed under one contact, and
      • Cannot apply tags to multiple items at once

        It is very frustrating needing to apply tags to notes individually. Even worse that it takes multiple clicks to do it. Can there please be an update to: 1.) Allow us to apply tags to batches of notes in one go. 2.) Make it less clicks to add a tag 3.)
      • Get all hiring updates via Zoho Cliq bot notifications

        We’re introducing a new way to stay updated on recruitment activities: Cliq Bot notifications. Now you can receive Zoho Recruit notifications directly in Zoho Cliq—alongside your existing in-app alerts and emails. Whether it’s a candidate status change,
      • Notes Acknowledgement

        It would be great to have emojis that can be used for Notes. Emojis such as Thumbs Up to let someone know you agree with them or a emoji for thanks. It's a simple way to acknowledge that you read someone's note. Moderation update: Emoji reactions for
      • Is it possible to log text messages from iphone into Zoho CRM

        My team is more and more utilizing text messaging to communicate with clients. Does Zoho have a solution for logging these text messages when clicking "Send Text Message" from the Zoho app. Much like when you call, you get prompted to log a call, can
      • Project Finances: Fully Accessible within Projects

        Project finances and work items are now on the same screen and it transforms the way you run your project. Managing your project finances is now much easier and in the same screen as your work items. Access quotes, invoices, bills, sales orders, and purchase
      • zoho stream web notifications

        since im locked out of IMAP and cant use my mail app that lets my team collaborate and chat below emails, im trying out the zoho version of this... zoho streams. On the bottom of an email in the zoho mail web app, i "comment" and mention another user.
      • UI / UX Improvements

        Please consider changing the Dependency Details window from a column-based layout to a list-based layout, or allowing users to choose their preferred layout. The current column-based view uses screen space inefficiently and makes navigation difficult,
      • Zoho CRM and Desk sandboxes for testing native integration

        Hello team, We are evaluating the native integration between Zoho CRM and Zoho Desk, We have sandbox instances of both products and want to test the integration there, without any effect on our production CRM or production Desk data. While setting up
      • Function #24: Automatically display deal name from Zoho CRM on quotes in Zoho Books

        Deals allow businesses to organize and visualize their sales pipeline. This provides a clear overview of all potential opportunities and helps in making informed decisions. Zoho CRM empowers you to create deals or potentials for your clients and monitor
      • Introducing Zoho Key Service, a simpler way to access LLMs without API keys

        Available in the Professional, Enterprise, and Ultimate editions in the US, IN, AU, JP, and CA DCs. Hello everyone, We are excited to bring Zoho Key Service (ZKS) in Zoho CRM, a simpler way for organizations to access and use third party LLMs. You can
      • Zoho Books | Product updates | August 2026

        Hello users, July has been an exciting month for Zoho Books! This month, we're excited to introduce HTML PDF Templates, Placeholders as Pills, expanded approval workflows for Sales Returns and Journals, and significant compliance updates across the India,
      • Auto-Sync Field of Lookup Values When Parent Record Changes

        Hi Zoho Team, Currently, when you use a "Field of Lookup" in Zoho CRM, the value is captured as a snapshot at the time the lookup is set. If the parent record is later updated, the Field of Lookup value on the child record does NOT update and stays stale.
      • How to Repair Corrupted Video Files?

        Repairing corrupted video files can be done using free media players, command-line utilities, or specialized video repair software depending on the severity of the corruption. Here are the most effective methods to fix unplayable videos: Method 1: Use
      • [Request] Pivot filter date option : from set date to relative value ie from 01Jan to LastMonth

        I don't think I can currently do this... but it's worth asking if it's possible. My use case is concerning annual leave which is calculated from the beginning of the calendar year (01Jan) then each month I want to have details of leave taken etc... In
      • Customer Statement Showing Incorrect Negative Balance Due to Unused Advance

        Dear Zoho Support Team, We are facing an issue with the Customer Statement in Zoho Invoice related to customer advances/mobilization advances. The issue is that when a customer has made an advance payment that has not yet been fully utilized against invoices,
      • Mois de la sensibilisation à la cybersécurité 2026 : faites de la sécurité un réflexe avec Zoho

        Imaginez : vos systèmes informatiques répondent aux normes de sécurité en vigueur et votre entreprise est assurée contre les cyberattaques. Pourtant, un matin, tout bascule. Vos données sont chiffrées et un message glaçant s’affiche à l’écran : « Si vous
      • Specifying time increments on a Date/Time field

        Hi all, Im using a Date/Time field in my CRM module. At the moment the increments are 30 minutes. How can I change these to be 15 minutes? Thanks
      • Read, View, Access, or Open an OST File Without Outlook

        Have you at any time needed to open an old OST file only to find that Microsoft Outlook is not installed on your computer? It is very annoying, particularly in the case where the file includes important emails, attachments, contacts, or calendar items.
      • What's new in Zoho Workplace | August 2026

        Hello Zoho Workplace community! Here's a roundup of all the new features and announcements that went live across Zoho Workplace applications in August. Zoho Mail Zoho Mail is now available in AWS Marketplace! AWS Marketplace users can access and subscribe
      • Read, View or Open MBOX File without Any Email Clients

        Since email messages are stored in a single file by MBOX files, they are useful for keeping email data in one location. Many email programmes, such as Thunderbird and other mail clients, support this format. However, if you have an old MBOX file and the
      • What's new in Zoho Social - Q3 recap

        Hello everyone, We've rolled out a bunch of exciting updates in Q3, and we're thrilled to walk you through them. Here's a quick look at everything we released in July, August, and September to help you experiment with content, automate engagement workflows,
      • The Social Wall: September 2026

        Hello everyone! This month, we’re bringing Snapchat to Zoho Social. You can now connect your Snapchat account and manage your content alongside your other social channels. Whether you want to reach a wider audience through Spotlights or share quick updates
      • How to Convert Apple Mac Mail to PST for Outlook for Free?

        Apple Mail is a widely used email program among Mac users, but what do you do if you want to transfer your emails to Microsoft Outlook? In such a situation—for example, when you are moving from a Mac to a Windows computer or when you need to use Outlook
      • Turning off the recorded welcome in Zoho Webinar

        Is there a way to turn off the recorded voice that comes up at the beginning of every webinar session? It devalues the experience for attendees from feedback, interrupting their connection with our brand and delaying webinar start unnecessarily.
      • Option to Disable Knowledge Base Section in Feedback Widget Popup Hello Zoho Desk Team

        Hello Zoho Desk Team, How are you? We are actively using Zoho Desk and would like to make more use of the Feedback Widget. One of the ways we implement it is through the popup option. At the moment, the popup always displays the Knowledge Base section,
      • Losing description after merging tickets

        Hello, We merge tickets when they are about the same topic from the same client. It happens sometimes. We recently noticed that after the merger only the description from the master ticket is left in a thread. And the slave-ticket description is erased.
      • Outgoing Mail Blocked – Suspicious Login Activity (Need Clarification and Solution)

        Hello, I’m currently facing an issue where my Zoho Mail account has been blocked due to “suspicious login activity,” and outgoing emails are restricted. Here are the details shown: Block type: Outgoing mail blocked Reason: Suspicious login activity A
      • Account Blocked due to Suspicious Activity.

        Hello, Trying to get access to my account, I have found this message above in the subject of this message. I am unable to log back to my account (see err. mess. below.) and thus cannot get rif of this following the Zoho procedure : I followed the step
      • Zoho Recruit mailserver get blocked by Microsoft!

        Hi, We have experienced this issue twice now, where Zoho Recruit outbound IP addresses are being blocked by Microsoft. We are confident that Microsoft is the blocking party, as all outbound emails to candidates with @hotmail.com, @live.com, and @outlook.com
      • Months of WooCommerce–Zoho Inventory sync failures and repeated support requests – has anyone experienced this?

        Months of WooCommerce–Zoho Inventory sync failures and repeated support requests – has anyone experienced this? I run a small retail business using WooCommerce and Zoho One. For months, I have been trying to resolve recurring synchronisation failures
      • Name autocomplete

        Hi, During searching emails the web tool does not always propose the auto-completion of the saved emails. As a result I either have to go to contacts and look up the exact email, or the exact full name including the middle name and any dots, which is
      • How to Manage Two GST Numbers / Two Companies in a Single Zoho Inventory Organization?

        Hi Team, We currently have two separate legal entities: A Proprietorship Firm with its own GSTIN A Private Limited Company with a different GSTIN However, operationally, both companies deal with the same products, and we would like to manage the physical
      • View Cannot Use UPC as Criteria

        When creating a new custom view, the UPC field is not available as a criterion for the view. This seems strange, because both ISBN and EAN are available in the dropdown. Because of this, I feel like the situation is possibly an oversight rather than by
      • How To Implement an Auto-Check-out Feature for Attendance?

        If an employee forgets to check out, the system should automatically check out the employee at 6:30 PM
      • Enhanced Zoho CRM and Office 365 calendar synchronization features!

        Dear customers, We're excited to share some significant improvements to our Office 365 calendar synchronization features, aimed at providing you with more control and a more personalized experience. What’s new Choose your Office 365 calendar: During the
      • What are the best practices for managing tax records and financial information for a small business?

        I’m interested in learning how other small business owners and accounting professionals organize their financial records and prepare for tax filing. With bookkeeping, expense tracking, income records, and tax documents all needing to stay accurate, having
      • Next Page