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 past few weeks. One of the feedbacks asked us to cover "more on ZDK CLI". In this post, we will discuss building an Event Management System in Zoho CRM Using
ZDK CLI.
Consider the case of Zenith, a Zoho CRM partner who is also partner for Zoho's competing products. Zenith is hosting a conference in which their representatives are inviting speakers from Zoho and also other competing products. The attendees of the conference will be either external attendees or leads or contacts of Zenith. For this purpose existing meetings module of Zoho CRM (previously called Events) can not be used as it is not a good fit for this case. Custom modules and fields are required for this. In this post, we’ll discuss how to create a Event Management System that is complimentary to Zoho CRM using ZDK CLI.
Why Use ZDK CLI?
ZDK CLI allows developers to:
- Create and edit CRM metadata (modules, fields, roles, profiles, and widgets)
- Define relationships between modules (lookups, multi-select lookups)
- Push and sync metadata changes to sandbox.
- Resolve conflicts when multiple users work on the same metadata.
This makes it ideal for building reusable CRM systems such as event management.
Initial Setup
As the initial setup, initialize the ZDK CLI project directory using zdk init command and create a new ZDK Project folder "Zenith".
Then, login to the sandbox environment for Zenith using zdk auth:login command.
When you execute zdk auth:login, you can either select any org that is already signed in or select NEW LOGIN to visit the login page and select the sandbox org you will be working on.
After logging in to Zoho select the sandbox environment and give required permissions.

For the current beta release, ZDK CLI is exclusively available for Sandbox environment and is not operational in Production environments.
You will be redirected to the terminal after successful login and you can start working on ZDK CLI.
Change the api_version to 8 in zdk-project.json file.
Step 1: Define the Modules
For an event management use case, we will need the following custom modules:
- Conference – Stores details of each event.
- Attendees – Tracks participants, whether leads, contacts, or external.
- ConferenceAttendees (Linking Module, not created) – Connects conferences and attendees with registration status.
- Venues – Captures details of event locations.
- Speakers – Stores details of invited speakers.
This has been visualized in the data model below.
To create a module, use the command
This creates the json file for module metadata : Conference.modules-meta.json in the path Zenith/crm/meta/modules/Conference
Conference.modules-meta.json content
{ "singular_label": "Conference", "plural_label": "Conferences", "api_name": "Conference", "profiles": [ { "api_name": "Administrator" } ], "display_field": { "api_name": "Conferences" }, "show_as_tab": true } |
Similarly create modules Attendees , Venues, and Speakers modules
Step 2: Customize Fields
To create a field, use the command
Conference module:
Conference modules's fields are:
- Attendees (multiselectlookup to Attendee module)
- Speakers (multiselectlookup to Speakers module)
- Venue (lookup to Venue module)
- Date (datetime)
- Duration(double)
- Description (textarea)
- Status (picklist: Planned, Ongoing, Completed)
Attendees field
Let us check how to create the field attendees of type multi-select lookup (to Attendee module)
The json file Attendees.fields-meta.json created in the path Zenith/crm/meta/modules/Conference/fields will look like this
To provide dependent details for the multi select lookup, add the multiselectlookup json object to the Attendees.fields-meta.json file as below:
{ "field_label": "Attendees", "display_name": "Attendees", "api_name": "Attendees", "type": "used", "data_type": "multiselectlookup", "multiselectlookup": { "connected_details": { "module": { "api_name": "Attendee" }, "field": { "field_label": "AttendingConference" } }, "linking_details": { "module": { "plural_label": "Conferences_X_attendees" } } } } |
Speakers (multi-select lookup to Speakers module)
Similar to Attendees field, create Speakers field and modify the json file Speaker.fields-meta.json created in the path Zenith/crm/meta/modules/Conference/fields:
{ "field_label": "Speaker", "display_name": "Speakers", "api_name": "Speakers", "type": "used", "data_type": "multiselectlookup", "multiselectlookup": { "connected_details": { "module": { "api_name": "Speaker" }, "field": { "field_label": "AttendingConference" } }, "linking_details": { "module": { "plural_label": "Speakers_X_attendees" } } } } |
Venue (lookup field to Venue module)
Similarly, create the Venue field with type as "lookup" The json file Venue.fields-meta.json created in the path Zenith/crm/meta/modules/Conference/fields will look like this
To provide dependent details for the lookup, add the lookup json object to the json as below.
{ "field_label": "Venue", "display_name": "Venue", "api_name": "Venue", "type": "used", "data_type": "lookup" "lookup": { "display_label": "Venue", "api_name": "Venue", "module": { "api_name": "Venue" } } }
|
Description (textarea)
After create a textarea field Description using zdk meta:create fields command, add textarea json object to the field meta json file as below :
{ "field_label": "Description", "display_name": "Description", "api_name": "Description", "type": "used", "data_type": "textarea", "textarea": { "type": "rich_text" } }
|
The possible values for text area are small, large and rich_text.
Status (picklist)
After create a picklist field Status using zdk meta:create fields command, add pick_list_values json array to the field meta json file as below:
{ "field_label": "Status", "display_name": "Status", "api_name": "Status", "type": "used", "data_type": "picklist", "pick_list_values": [ { "display_value": "Planned", "actual_value": "Planned" }, { "display_value": "Ongoing", "actual_value": "Ongoing" }, { "display_value": "Completed", "actual_value": "Completed" } ] } |
Date and duration fields of type datetime and double does not require any edits to the created meta.json file.
Attendees Module
Similarly, add fields for attendees modules
- Phone (phone)
- Company (text)
- EventsAttended (multi-select lookup to Conference module)
- Attendee Type (picklist with options Lead, Contact, External)
- Leads (lookup to Lead module)
- Contacts (lookup to Contact module
Venue Module
- Location (text)
- Capacity (integer)
- Contact erson (text)
- ContactNumber(phone)
- Description(textarea)
Speakers Module
- Phone (phone)
- Company (text)
- SpeakerStatus (picklist with options Confirmed, Pending, Canceled)
Step 3: Create a Custom Role
To create a field, use the command
This ensures event managers have the right access without interfering with other CRM operations.
Pushing changes to the sandbox environment
Once all changes are done execute
zdk org:push and zdk org:push result --{jobId} command to deploy the changes to the sandbox environment. Once the changes are verified in your sandbox environment you can deploy it to the production environment.

You can extract this
metadata zip file, that is created using
zdk org:export command to your own ZDK project directory and try pushing the changes to your sandbox environment.
Building the Event Management System for "Zenith" illustrates the core strength of ZDK CLI. It brings software engineering best practices to Zoho CRM customization. By defining modules/fields/roles as json files directly or creating them using the command, the source truth of the metadata is available in local system. The same can be tracked via version control systems like GIT for better collaboration among the team.
Recent Topics
Marketer's Space: Why mobile optimization deserves a place in your email strategy
Hello Marketers, Welcome back to Marketer's Space! Today, we'll talk about the importance of creating mobile-friendly email designs. While mobile phones were once used only to make phone calls, today they're used for almost everything, including texting,
Enhancements in Canvas
Dear All, Greetings! Canvas lets you design the record details page to suit your brand or business preferences. We are glad to introduce the following enhancements to uplift your design experience. Reusable Components Style Presets Let's go! Reusable
Introducing Dark Mode / Light Mode : A New Look For Your CRM
Hello Users, We are excited to announce a highly anticipated feature - the launch of Day, Night and Auto Mode implementation in Zoho CRM's NextGen user interface! This feature is designed to provide a visually appealing and comfortable experience for
ABN with Legal Entity Name
Hi, How can I execute this? The ABN number is entered in Accounts Module and ideally, it should display or suggest the correct Legal Entity Name based on the ABN lookup. ex. Account Name: JPG Resources ABN Number: 65 067 761 871 Legal Entity Name: (auto
Zoho Cliq not working on airplanes
Hi, My team and I have been having this constant issue of cliq not working when connected to an airplane's wifi. Is there a reason for this? We have tried on different Airlines and it doesn't work on any of them. We need assistance here since we are constantly
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
Unify Overlapping Functionalities Across Zoho Products
Hi Zoho One Team, We would like to raise a concern about the current overlap of core functionalities across various Zoho applications. While Zoho offers a rich suite of tools, many applications include similar or identical features—such as shift management,
Detailed Account Reports - Add Running Balance
When one clicks into an account from a report (say P/L or Balance Sheet), the default reports have the Debit, Credit, and then the Amount. The Amount column (last one) is duplicate information. It would be far better and fit more peoples' use cases if
Start Workflow from Deluge Script
I have developed a customized process from our CRM that leverages a deluge script to create a statement of work document. Once the document has been created via the merge and store function, I would like the ability to start a workdrive review & approve
Issue: Ticket Export Does Not Include Ticket Threads
Dear Zoho Desk Support Team, I hope you’re doing well. I wanted to bring to your attention that the current ticket export feature in Zoho Desk does not seem to include the ticket threads or conversation history. When exporting tickets, only the summary
Pushover Notification Module
Hello, it would be good if there would be a "Pushover" (https://pushover.net/) module besides the standard SMS module. Pushover is now very well known, especially in IT, and is becoming more and more popular. The biggest advantage are the customizable
Forward - no Ticket Number
Hello, when I send an email to Zoho Desk via Reply or Reply All, the ticket number is in the subject line. But if I use forward then not. Is there an option to change this? We often forward e-mails and a reply to this will of course create a new ticket
Checkout: Adding Images
Hello everyone, I’m trying to add a small GoGreen logo in the shipping section of the checkout to promote our sustainable shipping. While I can insert text without any issues, it seems that adding images is not supported in this area. Is there currently
Sortie de Zoho TABLE ??
Bonjour, Depuis bientôt 2 ans l'application zoho table est sortie en dehors de l'UE ? Depuis un an elle est annoncée en Europe Mais en vrai, c'est pour quand exactement ??
[solved] #original_sender trick not working for us
Hello community ! We really like DESK.. it's working like a charm for us but I have a request. Some users are sending emails personnaly to me (instead of using the support adress).. and I saw there was a possibilty to use : #original_sender {mail@mail.com}
SalesIQ Chat Notifications
I am the admin of our salesIQ implementation. About two weeks ago, I started hearing/seeing notification for ALL chats messages from monitored agents/chat participants. I don't need to see these, we have a manager who deals with this. I can't stop the
Correlated subqueries not supported in Zoho Analytics. This creates huge limitations
Running into a major limitation in Zoho Analytics: correlated subqueries simply don’t work, even in completely standard SQL patterns inside a JOIN. Example: LEFT JOIN "Bills" b
ON d."Id" = b."Deal ID"
AND EXISTS (
SELECT 1
FROM "Bill
Unknown table or alias 'A1'
I would like to create a subquery but i am getting the following error: Unknown table or alias 'A1' used in select query. This is the sql statement: SELECT A1.active_paying_customers, A1.active_trial_customers, A1.new_paying_signup, date(A1.date_active_customers),
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
Batch Emails in CRM Plus without using a template?
Hi guys. Is it possible to send the same email to multiple people at the same time within CRM Plus without using an email template? At the moment we create a custom view in Contacts to display the people that we need. We then click the boxes on the left, and click 'Send Mail', but always need to select a template. Sometimes its better to write a quick one off message, without needing to set up a template first. Thanks.
bank charge
a charge to my account was made that I did not authorize, of $16.46, for something that looks like "computer maintenance or something to that matter". please refund.
[Free Webinar] Product Updates: Quick Catch-Up Session - Part II - Creator Tech Connect
Hello Everyone! We welcome you all to the upcoming free webinar on the Creator Tech Connect Series. The Creator Tech Connect series is a free monthly webinar featuring deep-dive technical sessions designed for developers, administrators, and app builders.
Introducing Liquid Glass UI on the Zoho Mail iOS app
Hello everyone! We're excited to announce that the Zoho Mail app is now fully optimised for iOS 26's Liquid Glass design on both iPhone and iPad! The updated interface features transparent layers, smooth animations, and refined visual elements that enhance
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
Plan change from Zoho One to Zoho Workplace
Hello Zoho, Following the recent pricing update for Zoho One, we are interested in transitioning to Zoho Workplace products. Please inform us about the necessary steps for this process so we can proceed promptly. Kind regards,
Partner with HDFC And Sbi Bank.
Hdfc and sbi both are very popular bank if zoho books become partner with this banks then many of the zoho books users will benefit premium features of partnered banks.
Links in Instagram
Hi there, I have been using Later for a while now but keen to come back to Zoho Social as Later doesn't offer tagging of pages on Facebook but they offer something Zoho doesn't. You can add a link to your bio which opens up your profile feed where images
Spotlight #7 - Automatic Transitions in Blueprint
Previously, records could not be moved from one state to another without user intervention. With automatic transitions, move records from one state to another automatically, when it elapses its pre-defined time. This Spotlight discusses how automatic
Sub Folders
It would be great if there could be sub-folders in reports. We have a ton of individual reports and folders that would be easier to navigate this way
Zoho CRM Community Digest - November 2025 | Part 2
Hello Everyone! Second half of November brought several exciting updates, especially around Zia, making AI assistance smarter, faster, and more context-aware. We also feature engaging community snippets highlighting members who went the extra mile to
Zoho CRM - Writing Assistant Tone
Hi Zoho CRM Team, Text in my emails often gets underlined in yellow because I tend to use a more informal tone with my client's, like using "I'm" instead of "I am". Is there some way for me to tell the system that this is my preferred writing tone, so
Hide Contact Number for Field Users & Agents
Is it possible to hide the contact number in both the Service Appointment and Work Order modules for field users and agents? The agents are using the Zoho FSM mobile app, and we want to restrict them from viewing the contact number.
Zoho Flow Credits
Hi , I would like to ask the reason why every time I added plus credit but few days later I will return back to default? (as below I add credit to 3000 but today It change back to 1000) Most important is, when the credit fully used, not any reminder to
Form Submission Emails
Is there a current delay with submission emails being sent? We've had 10-20 forms completed today but only a handful of emails.
How to update Multi File upload field
Assume that i have a multi file upload field,how can i update the same field again?
What is the simplest way to import PST to Yahoo Mail?
The simplest way to import PST file into Yahoo Mail is to use a third-party tool that supports direct PST-to-Yahoo migration. Software like Aryson PST Converter lets you upload emails, contacts, attachments, and folders from a PST file straight into your
Subform edits don't appear in parent record timeline?
Is it possible to have subform edits (like add row/delete row) appear in the Timeline for parent records? A user can edit a record, only edit the subform, and it doesn't appear in the timeline. Is there a workaround or way that we can show when a user
【Zoho CRM for Everyone】設定画面のアップデート
ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中から、Zoho CRM for Everyone の設定画面のアップデート情報をご紹介します。 目次 設定ホーム画面の追加 設定画面での検索結果の表示形式の変更 設定画面でのよく使用する機能の表示 設定メニューの展開/折りたたみ状態の保持 1. 設定ホーム画面の追加 ホーム画面の設定項目は、直感的に分類できるように"カテゴリごと"で分けられています。 このような一元化された表示により、各ツールが1つの画面に集約され、必要な機能をより簡単に見つけられるようになりました。
What's New - November 2025 | Zoho Backstage
A new month, a new set of updates. With a mix of new features and thoughtful improvements, you get smoother workflows and better control across registrations, exhibitors, and communications. Let's take a look at what's new and enhanced in Zoho Backstage
Zoho Checkout - Duplicate Customer record created for each payment received
Hi All. We are using Zoho Checkout to capture online payments for a club membership form (in Zoho Forms). We've noticed that each new payment seems to create a new customer record, regardless of whether the customer already exists in the Zoho Finance
Next Page