Kaizen #64 - External Fields and Records APIs

Kaizen #64 - External Fields and Records APIs

Hello everyone!
Welcome back to another exciting post in the Kaizen series!
In this post, we will talk about external fields in Zoho CRM and how they are used in Records APIs.

What is an external field?

While you integrate a third-party application, you may want to associate your own primary key in your DB(or an external system) to Zoho CRM's records, and use them in create/update API rather than CRM's "record ID". To meet this requirement, we have introduced external fields.

An external field is a custom single-line field in a module in Zoho CRM that can hold a record's unique ID available in an external system.

This is useful when you want to upsert records to maintain data sync between Zoho CRM and the external system, and also search for records using their external IDs instead of Zoho CRM's record IDs.
External fields negate the need to maintain two unique IDs in your external system.

Types of External Fields

  1. User-based external fields
    User-based external fields allow values to be stored with respect to each user. So, each user can make use of their corresponding external values(say contact1 and contact2) to manipulate CRM records.
    When data sync happens between the external system and Zoho CRM, these users can update the corresponding record with their respective external values(contact1 and contact2). For example, consider that two users have saved the same contact with different IDs c1 and c2, respectively in their external systems. When data sync happens with Zoho CRM from these systems, there will be one contact in CRM. But, the users can use their external contact IDs c1 and c2 to update the record in CRM.
    Note that the external value for this type is unique to each user.
  2. Org-based external fields
    In contrast to user-based external field, for org-based external fields, there is no association between the external ID stored and the user who configured it. Instead, all users can manipulate the CRM records with that same external ID. Consider that you have a native ERP system to manage finances for your org. The employees(users) will deal with the same clients(leads or contacts). When you integrate this external system with Zoho CRM, the lead/contact ID in the external system becomes the external field value in CRM. Now this integration can use this external ID for any data sync and other actions with Zoho CRM.

How to create an external field in CRM?

  1. Go to Setup > Customization > Modules and Fields > Choose a module.
  2. Create a single line field and provide a name.
  3. Click the more options icon and select Edit Properties.
  4. In the Single Line Properties pop up, specify the field label, and check the Set External Field box.
  5. Choose the field's visibility and the type of the external field.


  6. Click Done. Click Save and Close in the module builder.

Note
  • The external ID feature is available only from the Enterprise edition and up.
  • You can create a single line field of the type "external" only through the UI.
  • A module can have a maximum of 10 external fields for the Enterprise edition and 15 for the Ultimate edition.

In this post, we will discuss using external ID fields in create, update, upsert, delete, and search records APIs.

Mandatory Header in the API Requests

X-EXTERNAL: {module_API_name}.{external_field_API_name}

Note that this header is required only when there are references like lookup fields, line items in the inventory modules, subforms, but not when inserting records directly. 

Here is an example of creating a contact while adding a value to the external field.

Module: Contacts
External field's API name: External_Contact_ID, Value: externalcontact1
Input body:

{
    "data": [
        {
            "Last_Name": "ext contact 1",
            "External_Contact_ID":"externalcontact1"
        }
    ]
}

Creating records using external values

Associating a lookup record through an external field

Base Module: Contacts
Lookup Module: Accounts
Lookup field's API name in base module: Account_Name
External field's API name in the lookup module: External_Account_ID; Value: externalaccount1 
Header: X-EXTERNAL: Contacts.Account_Name.External_Account_ID 
Input body:

{
    "data": [
        {
            "Last_Name": "ext contact 2",
            "Account_Name": {
                "External_Account_ID": "externalaccount1"
            }
        }
    ]
}


Inserting a subform lookup record through an external field in the associated module

Base Module: Contacts
API name of the subform in the base module: ExternalSubform
API name of the lookup field in the subform: Deal_Lookup
API name of the external field in the lookup module: External_Deal_ID
Header: X-EXTERNAL: Contacts.ExternalSubform.Deal_Lookup.External_Deal_ID
Input body:


{
    "data": [
        {
            "Last_Name": "Contact with a Subform and external Deal lookup",
            "ExternalSubform": [
                {
                    "Deal_Lookup": {
                        "External_Deal_ID": "extDeal1"
                    }
                }
            ]
        }
    ]
}


Creating an inventory module's record with external fields in the line items

You can create a record in the inventory module by using the external fields and their values in the line items. For example, creating a quote using the external values of the product and the price book in the Quoted_Items line item.

Inventory Module: Quotes
External field's API name in Products: External_Product_ID; Value: extprod1
External field's API name in Price_Books: External_Price_Book_ID; Value: extpricebook1
Header: X-EXTERNAL: Quotes.Quoted_Items.Product_Name.External_Product_ID,Quotes.Quoted_Items.Price_Book_Name.External_Price_Book_ID

Input body:


{
    "data": [
        {
            "Subject": "Quote 1",
            "Quoted_Items": [
                {
                    "Product_Name": {
                        "External_Product_ID": "extprod1"
                    },
                    "Price_Book": {
                        "External_Price_book_ID": "extpricebook1"
                    },
                    "quantity": 100
                }
            ]
        }
    ]
}


Inserting an Event and associating the What_Id through an external field

When you insert an event related to an account, the What_Id takes the name of the account(Account_Name). We can use the external field's value in the Accounts module, instead of the account name while inserting an event.

Base Module: Events
External field's API name in Accounts: External_Account_ID; Value: extAccount1
Header: X-EXTERNAL: Events.What_Id->Accounts.External_Account_ID
Input body:

{
    "data": [
        {
            "se_module": "Accounts",
            "What_Id": {
                "External_Account_ID": "externalaccount1"
            },
            "Event_Title": "Event Kaizen",
            "Start_DateTime": "2023-01-01T10:10:10+05:30",
            "End_DateTime": "2023-01-01T11:10:10+05:30"
        }
    ]
}

You can also add participants(Leads or Contacts) to an event through their external IDs. Here is an example.
Header: X-EXTERNAL : Events.What_Id->Accounts.External_Account_ID,Events.Participants.participant->Contacts.External_Contact_ID


{
    "data": [
        {
            "Participants": [
                {
                    "type": "contact",
                    "participant": {
                        "External_Contact_ID": "extenalcontact3"
                    }
                }
            ],
            "What_Id": {
                "External_Account_ID": "externalaccount1"
            },
            "$se_module": "Accounts",
            "Event_Title": "Kaizen 1",
            "Start_DateTime": "2023-05-10T10:10:10+05:30",
            "End_DateTime": "2023-05-10T11:10:10+05:30"
        }
    ]
}


Note
You can use the same logic for updating records in Zoho CRM through external fields.

Upserting records using external values

Normally, in an upsert API call, the system checks for duplicates based on the system-defined duplicate check fields and user-defined duplicate check fields.

While upserting through external fields, the system considers the external field as a system-defined unique field, checks for the following:
  • If the external value is unique and the other duplicate checks are done, the system inserts the record if no matching record is found.
  • If the external value already exists in a record, the system updates the other fields given in the input to the matching record.
  • If the external value does not exist, the system checks for the system-defined and user-defined duplicate check fields. If a match is found, the system updates the record with the new external value along with other fields in the input.

How upsert works for org-based and user-based external fields?
  • Org-based external fields
    Consider that a user inserts a record using the external value. Now, when another user tries to create a record with the same external value as the previous user's, the system throws the DUPLICATE_DATA error.
  • User-based external fields
    Consider that a user creates a record with an external value. When the same user upserts using the same external value, the system updates the record.

Note that you need not pass the X-EXTERNAL header for upsert operation as the system considers external field to be unique, anyway, and performs duplicate check.

Deleting records using external fields

You can use the external field's value in the request URL and in the "ids" parameter, instead of CRM's record ID.

Here are the sample requests:

Header: X-EXTERNAL: Contacts.External_Contact_ID

Header: X-EXTERNAL: Contacts.External_Contact_ID
  1. https://www.zohoapis.com/crm/v3/Contacts?ids=extcontact3,extcontact4

Searching for records in a module using external values

You can use the external field's API name and its value in the "criteria" parameter of the search Records API.
The supported operators are "equals" and "in".
Here are the sample requests:

Header: X-EXTERNAL: Contacts.External_Contact_ID
  1. https://www.zohoapis.com/crm/v3/Contacts/search?criteria=(External_Contact_ID:in:usercontact2,usercontact123)&fields=External_Contact_ID,Email

Header: X-EXTERNAL: Contacts.External_Contact_ID
  1. https://www.zohoapis.com/crm/v3/Contacts/search?criteria=(External_Contact_ID:equals:usercontact2)&fields=External_Contact_ID,Email


We hope you found this post useful. Let us know your questions in the comment section or write to us at support@zohocrm.com.

Cheers!
Shylaja


    Access your files securely from anywhere







                            Zoho Developer Community




                                                  • Desk Community Learning Series


                                                  • Digest


                                                  • Functions


                                                  • Meetups


                                                  • Kbase


                                                  • Resources


                                                  • Glossary


                                                  • Desk Marketplace


                                                  • MVP Corner


                                                  • Word of the Day


                                                  • Ask the Experts



                                                            • Sticky Posts

                                                            • 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
                                                            • Kaizen #152 - Client Script Support for the new Canvas Record Forms

                                                              Hello everyone! Have you ever wanted to trigger actions on click of a canvas button, icon, or text mandatory forms in Create/Edit and Clone Pages? Have you ever wanted to control how elements behave on the new Canvas Record Forms? This can be achieved
                                                            • Kaizen #142: How to Navigate to Another Page in Zoho CRM using Client Script

                                                              Hello everyone! Welcome back to another exciting Kaizen post. In this post, let us see how you can you navigate to different Pages using Client Script. In this Kaizen post, Need to Navigate to different Pages Client Script ZDKs related to navigation A.
                                                            • Kaizen #210 - Answering your Questions | Event Management System using ZDK CLI

                                                              Hello Everyone, Welcome back to yet another post in the Kaizen Series! As you already may know, for the Kaizen #200 milestone, we asked for your feedback and many of you suggested topics for us to discuss. We have been writing on these topics over the


                                                            Manage your brands on social media



                                                                  Zoho TeamInbox Resources



                                                                      Zoho CRM Plus Resources

                                                                        Zoho Books Resources


                                                                          Zoho Subscriptions Resources

                                                                            Zoho Projects Resources


                                                                              Zoho Sprints Resources


                                                                                Qntrl Resources


                                                                                  Zoho Creator 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

                                                                                              Get Started. Write Away!

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

                                                                                                Zoho CRM コンテンツ



                                                                                                  Nederlandse Hulpbronnen


                                                                                                      ご検討中の方




                                                                                                              • Recent Topics

                                                                                                              • Export your notes from Notebook!

                                                                                                                Dear users, The long awaited feature is now live. Yes, you can now export your notes from Notebook app in bulk. But the feature has just started with web app alone for now. You can try the export feature as mentioned below: Go to our web app, https://notebook.zoho.com Go to 'Settings' > 'Export' Now, select the format: You can select either ZNote or HTML Once done, you can use the same to import or can have this a local backup of your notes. Note: Export for other platforms are in development and
                                                                                                              • Prepopulating Fields

                                                                                                                Hello, I have a form (Assets) with 2 lookup fields: Client (from Clients) Site (from Client Sites) I modified the code (highlighted in red below), so the Site dropdown shows the list of sites related to the Client. must have Client_Site ( type = picklist
                                                                                                              • Unable to sort as Descending order

                                                                                                                Trying to change the sort order for a lookup field (checkboxes) from Ascending to Descending and keep getting an error in Deluge that the order must be Ascending Did anyone ran into this? Thanks Eyal
                                                                                                              • Export Invoices to XML file

                                                                                                                Namaste! ZOHO suite of Apps is awesome and we as Partner, would like to use and implement the app´s from the Financial suite like ZOHO Invoice, but, in Portugal, we can only use certified Invoice Software and for this reason, we need to develop/customize on top of ZOHO Invoice to create an XML file with specific information and after this, go to the government and certified the software. As soon as we have for example, ZOHO CRM integrated with ZOHO Invoice up and running, our business opportunities
                                                                                                              • Can I change the format of the buttons in the email templates?

                                                                                                                Hi all! We have been working hard trying to brand our email templates, and have some way to go yet. One of the things we can't seem to edit is the green ${Cases.CUSTOMER_PORTAL_BUTTON} button and the font of the View Ticket text. Is there any way of doing
                                                                                                              • issue with deluge script

                                                                                                                i used chat gpt to build this script and I am getting 2 errors which I cannot figure out how to fix: void monthly_sales_order_generation() { try { // ---------------- CONFIG ------------------- analytics_url_1 = "https://analytics.zoho.com/api/<workspaceID>/report/<reportID1>/data";
                                                                                                              • Introducing LinkedIn Apply Connect for Zoho Recruit

                                                                                                                Attract up to 3x more qualified candidates and hire more efficiently with LinkedIn Apply Connect. Let candidates fill-in job applications without any redirections, gain deeper insights with applicant highlights within Zoho Recruit, and keep candidates
                                                                                                              • Recruit paid support?

                                                                                                                Hi all, Could anyone who has paid support package advise if it provides value for money with regards to support response times? Exploring the idea as unfortunately when we have faced issues with Recruit it has been a 7+ day timescale from reporting to
                                                                                                              • Introducing Dedicated Modules for Plans, Addons, and Coupons in Zoho Billing

                                                                                                                We’ve enhanced the way you manage Plans, Addons, and Coupons in Zoho Billing. Previously, all three grouped together under Subscription Items. Now, each one has its own dedicated module, giving you a cleaner and more intuitive experience. This update
                                                                                                              • Ticket Status email

                                                                                                                Good day, This was discussed in the past, but it would be helpful if we could have the system assign a custom response to a status. We have various statuses for tickets, e.g. "closed due to no response", or "Pending Status", it would be helpful for the
                                                                                                              • Customer ticket creation via Microsoft Teams

                                                                                                                Hi all, I'm looking to see if someone could point me in the right direction. I'd love to make it so my customers/ end users can make tickets, see responses and respond within microsoft teams. As Admin and an Agent i've installed the zoho assist app within
                                                                                                              • 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
                                                                                                              • Can I use a Standalone CRM Function as the Callback URL For Async Export Data API?

                                                                                                                I am creating an export job using this API https://www.zoho.com/analytics/api/v2/bulk-api/export-data-async/create-export/view-id.html There is a "callbackUrl" key in the CONFIG object. I tried copying the URL for a standalone function in CRM which can
                                                                                                              • Future Orders - Due Date

                                                                                                                Hi In my role, I can receive tickets where the work required is requested months in advance. Using a Future Orders option, which I believe was setup under the On Hold status type, hides the Due Date, in all views/ticket etc. Whilst I understand the reasoning
                                                                                                              • Introducing Withdrawal Reasons for Offers

                                                                                                                We’re excited to introduce a new enhancement to the Offer module that brings more clarity and accountability to every withdrawn offer. The Withdrawal Reason update ensures that each withdrawal — manual or automatic — is backed by a clear explanation,
                                                                                                              • Zoho Creator customer portal users

                                                                                                                Hi, I'm in a Zoho One subscription with our company. I'm running a project now that involves creating a Zoho Creater application and using the Zoho Creator Customer Portal.  At most we need 25 customer portal users. In our Zoho One plan we only get 3
                                                                                                              • GPS tracking only or Check out facility

                                                                                                                Dear Team, Zoho CRM is quite robust CRM but till date i was waiting for the feature of having GPS tracking of Sales employees which is a common demand by all customers for thier field sales executives. We cover them by saying that CRM provides Checkin
                                                                                                              • HTML Tags added to Reports with Notes

                                                                                                                Recently Zoho added the ability to markup text within notes. That way, users can change font size, colors, etc. It's a great change. However, since the change, reports that include a column for "Note Content" are printing HTML tags within the report.
                                                                                                              • In App Auto Refresh/Update Features

                                                                                                                Hi,    I am trying to use Zoho Creator for Restaurant management. While using the android apps, I reliased the apps would not auto refresh if there is new entries i.e new kitchen order ticket (KOT) from other users.   The apps does received notification but would not auto refresh, users required to refresh the apps manually in order to see the new KOT in the apps.    I am wondering why this features is not implemented? Or is this feature being considered to be implemented in the future? With the
                                                                                                              • Appraisals on Employee Information Profile

                                                                                                                Is it possible to show completed appraisals on each employee's "Employee Information" page? I would presume at the bottom - similar to the "Related Lists" concept in Zoho CRM. Obviously view access would be limited to employee and appropriate other roles
                                                                                                              • AI Interview Insights: Turn Recorded Interviews into Quick Transcripts & Summaries

                                                                                                                Evaluating interviews shouldn’t require replaying long recordings or taking manual notes. With AI Interview Insights, you can now review complete transcripts and AI-generated summaries of your One-way (Recorded) interviews right inside Zoho Recruit. This
                                                                                                              • Kaizen #220: Actions API - Webhooks APIs - Part 2

                                                                                                                Hello all!! Welcome back to the follow-up Kaizen post of Kaizen #219: Actions API - Webhooks APIs - Part 1. In the previous week, we covered how to configure a basic Webhook and how to include Headers, Body, and URL Parameters using both the POST Webhook
                                                                                                              • Standard Payment Term is not pulled from account to quotation

                                                                                                                Hey Team There seems to be something off. I do have "Net 30" as my default payment term in Zoho Books for my customers. If, from the customer overview or quote section, I create a new Quotation, the payment terms field stays blank and doesn't get the
                                                                                                              • Request for Auto PO - Min–Max based Automated Purchase Feature

                                                                                                                Dear Zoho POS Team, I’m writing to request a feature enhancement that would significantly streamline inventory management for businesses using Zoho POS — particularly supermarkets, FMCG retail, and multi-store operations like ours. Feature Requested:
                                                                                                              • Canva Integration

                                                                                                                Hello! As many marketing departments are streamlining their teams, many have begun utilizing Canva for all design mockups and approvals prior to its integration into Marketing automation software. While Zoho Social has this integration already accomplished,
                                                                                                              • Manage your invoices from Bigin's mobile app (iOS)

                                                                                                                Hello everyone! We're happy to announce that users can now integrate Zoho Books with the latest version of Bigin's iOS app. Zoho Books can be integrated with Bigin only via the web application. Users can view the Zoho Books tab in the detail pages of
                                                                                                              • HubSpot CRM to Zoho Creator Integration

                                                                                                                I'm trying to create an integration between HubSpot CRM and Zoho Creator with HubSpot being the push source (if a contact is created or updated in HubSpot, it pushes the information to Zoho Creator). I have two questions: 1- Is it best to use Zoho Flow
                                                                                                              • Systematic SPF alignment issues with Zoho subdomains

                                                                                                                Analysis Period: August 19 - September 1, 2025 PROBLEM SUMMARY Multiple Zoho services are causing systematic SPF authentication failures in DMARC reports from major email providers (Google, Microsoft, Zoho). While emails are successfully delivered due
                                                                                                              • Accessibility controls and multilingual captcha authorization for Help Center users ​

                                                                                                                Hello everyone, As part of our ongoing effort to improve user experience, we are excited about the accessibility controls and predefined accessibility personas added in the Help Center, similar to what is already available in Zoho Desk. Help Center users
                                                                                                              • Gain control over record sharing with portal users through our new enhancement: criteria-based data exposure

                                                                                                                Dear Customers, We hope you're well! Portals is a self-service avenue through which your clients can access and manage their direct and related data in Zoho CRM. This empowers them to be more independent and enables them to experience a sense of transparency
                                                                                                              • Zoho Sign + Zoho CRM : la solution pour simplifier vos accords de vente

                                                                                                                La conclusion d’un contrat de vente nécessite de nombreuses étapes : préparation de documents, validations successives et collecte des signatures. Les équipes commerciales passent souvent par plusieurs cycles de collaboration et de révision, tout en assurant
                                                                                                              • Zoho Desk Limitations

                                                                                                                Good day, all, I would like to know whether others share my frustration with some of Zoho's limitations. Don't get me wrong, I like Desk (and I also have a subscription for Analytics), I have been with them for close to 10 years, and unfortunately, I
                                                                                                              • Item/service subtotal

                                                                                                                Just discovered & really pleased that we can drag to re-order the line items in Sales orders & Invoices, a very nice feature which doesn't seem to be documented? It would be nice to be able to insert a subtotal as a line item to complete this great feature
                                                                                                              • Converting Sales Order to Purchase Order

                                                                                                                Hi All, Firstly, this code works to convert a sales order(SO) to a purchase order (PO) via a button, however I am running into an issue when I convert the SO where the values from the line items are not pulled across from the SO to the PO. The ones in
                                                                                                              • how to Solve Conflict Invoices in Zoho POS

                                                                                                                Hello Team, I am facing a repeated issue in Zoho POS while saving a sale that contains service-based items. My products are intentionally created as Service (Non-Inventory) items because I do not want to track stock for them. However, every time I try
                                                                                                              • All new Address Field in Zoho CRM: maintain structured and accurate address inputs

                                                                                                                The address field will be available exclusively for IN DC users. We'll keep you updated on the DC-specific rollout soon. It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition. Latest update
                                                                                                              • Copy, Paste, Highlighted text

                                                                                                                when i copy paste text it gets highlighted. Fix this.  WTF is with this black highlight ? Fix copy pasting. Some people pay for using this mail service. 
                                                                                                              • Pricing Strategies: #6 Common Mistakes while Configuring Pricing

                                                                                                                "Why does this month's billing feel messy again?" That was the exact line Priya muttered while staring at the spreadsheet full of edited pricing, one-off discounts and mismatched subscription details. Her business was growing, but the pricing machine
                                                                                                              • Publish to LinkedIn via API

                                                                                                                Hi, Is it possible to publish a job opening to LinkedIn (paid job slots) if creating a job opening via api / deluge function? Or is the user required to manually publish via the job boards process? Many Thanks Adrian
                                                                                                              • FSM - Associating and selecting Contacts based on Service Addresses

                                                                                                                Hi FSM team, I've come across an FSM limitation I wanted to share for improvement. I'm currently configuring FSM for a client who provides heating system install and maintenance services. The are often sub contracted by building management companies to
                                                                                                              • Next Page