Keeping records on your customers and business prospects is essential for tracking data, conducting follow-ups, and running a business smoothly. When you use two separate applications, and store relevant data in each, checking and tracking data becomes more difficult.
Integrating applications that contain customer data is an effective solution for easily synchronizing and managing data across both applications. In this post, we'll look at how to integrate Zoho CRM with Zoho Workdrive in order to synchronize and manage Workdrive files and folders associated with a CRM contact across both applications.
Consider the following scenario: You've converted a lead to a contact in Zoho CRM. Now, you must associate files with that contact, such as legal documents or proofs. To do this, you can create a team folder where every team member can access and manage the contact's folders and files.
In order to store contact-specific files, you can create a new folder (within the team folder) for each WorkDrive contact by clicking a button within their CRM record. You can even create a widget for uploading files to the contact's Workdrive folder from within CRM.
Create a connector for Zoho Workdrive and add connector APIs
- Create a new connector in your Zoho Workdrive extension using the Connectors feature under Utilities in the left-side panel of the Zoho Developer console.
The connector details for the above example are as follows:
Request Token URL | https://accounts.zoho.com/oauth/v2/auth?scope=,WorkDrive.users.READ,WorkDrive.files.CREATE,
WorkDrive.teamfolders.CREATE&access_type=offline
|
Access Token URL | https://accounts.zoho.com/oauth/v2/token |
Refresh Token URL | https://accounts.zoho.com/oauth/v2/token |
Scopes | WorkDrive.users.READ,WorkDrive.files.CREATE,
WorkDrive.teamfolders.CREATE
|
The Zoho Workdrive REST APIs we added for our example are as follows:
Connector API Name | Method type | URL |
Get ZUID | GET | https://www.zohoapis.com/workdrive/api/v1/users/me |
Get all teams of a user | GET | https://www.zohoapis.com/workdrive/api/v1/users/${zuid}/teams |
Create team folder | POST | https://www.zohoapis.com/workdrive/api/v1/teamfolders |
Create new folder | POST | https://www.zohoapis.com/workdrive/api/v1/files |
File upload | POST | https://www.zohoapis.com/workdrive/api/v1/upload?filename=${file_name}&parent_id=${file_parent_id}&override-name-exist=true |
Create a settings widget to build team folder and assign them to Workdrive teams
- Create a settings widget to select a team to manage a contact's folders and files.
- We'll also create a CRM variable called "Team Folder ID" to store the assigned team's ID information for future operations.
Settings widget.js code snippet
Util={};
var teamidvalue;
//Subscribe to the EmbeddedApp onPageLoad event before initializing the widget
ZOHO.embeddedApp.on("PageLoad",function(data)
{
var data = {
}
//Invoking the 'Get ZUID' API to retrieve the user's ZUID
ZOHO.CRM.CONNECTOR.invokeAPI("xxx.workdrive.getzuid",data)
.then(function(dataa){
console.log(dataa);
response = dataa.response
responsejson=JSON.parse(response);
zuiddata=responsejson.data;
zuid=zuiddata.id;
var data = {
"zuid" : zuid
}
//Invoking the 'Get all teams of a user' API to fetch all the teams of a user
ZOHO.CRM.CONNECTOR.invokeAPI("xxx.workdrive.getallteamsofauser",data)
.then(function(dataa){
console.log(dataa);
response = dataa.response;
responsejson=JSON.parse(response);
teamdata=responsejson.data;
for (i = 0; i < teamdata.length; i++)
{
teamid=teamdata[i].id;
attributes=teamdata[i].attributes;
teamname=attributes.name;
var teamlist = document.getElementById("teamlist");
var option = document.createElement("OPTION");
option.innerHTML = teamname;
option.value = teamid;
teamlist.appendChild(option);
}
})
})
})
Util.getvalues=function()
{
//Retrieving the value chosen in the teamlist
teamidvalue=document.getElementById("teamlist").value;
/*Constructing data and passing to 'Create team folder' API to create a team folder called "CRM Contacts test"*/
var data = {
"extension_team_folder_name" : "CRM Contacts test",
"parent_id":teamidvalue
}
ZOHO.CRM.CONNECTOR.invokeAPI("xxx.workdrive.createteamfolder",data)
.then(function(dataa){
console.log(dataa);
response = dataa.response;
responsejson=JSON.parse(response);
teamfolderdata=responsejson.data;
teamfolderid=teamfolderdata.id;
//Set the ID of the team selected in the teamlist to the "Team Folder ID" CRM variable
var variableMap = { "apiname": "xxx__Team_Folder_ID", "value": teamfolderid};
ZOHO.CRM.CONNECTOR.invokeAPI("crm.set", variableMap);
ZOHO.CRM.API.getOrgVariable("xxx__Team_Folder_ID").then(function(data){
console.log(data);
});
});
}
|
Create a button in the Contacts module to make a new Workdrive folder for a contact
- Create a button called "Create a new workdrive Folder" using the Links & Buttons feature available in the Components section of the Zoho Developer console. Then, write a function to perform the desired action.
- For our use case, since we're creating a new folder specific to a contact inside a WorkDrive team folder, we'll create the folder with the Full Name of the Zoho CRM contact.
- We'll also create a custom field in the Contacts module called "Folder ID" to store the ID of the new Workdrive folder to perform future operations.
Create a new Workdrive folder: Function code snippet
//Fetching the current contact details and retrieving the Full Name and custom field folder ID of the contact
response = zoho.crm.getRecordById("Contacts",contact.get("Contacts.ID").toLong());
Fullname = response.get("Full_Name");
contactfolderid = response.get("xxx__Folder_ID");
if(contactfolderid == null)
{
/*Invoking the 'Create new folder' API to get create a folder in Workdrive for the Zoho CRM contact with the name as their Full Name*/
parentfolderid = zoho.crm.getOrgVariable("xxx__Team_Folder_ID");
dynamic_map = Map();
dynamic_map.put("name",Fullname);
dynamic_map.put("folder_parent_id",parentfolderid);
newfolderresp = zoho.crm.invokeConnector("xxx.workdrive.createnewfolder",dynamic_map);
newfolderresponse = newfolderresp.get("response");
newfolderdata = newfolderresponse.get("data");
newfolderid = newfolderdata.get("id");
contactinfo = {"xxx__Folder_ID":newfolderid};
/* Updating the 'Folder ID' custom field in contact's record with the new folder ID obtained from the response*/
folderresponse=zoho.crm.updateRecord("Contacts",contact.get("Contacts.ID").toLong(),contactinfo);
return "A new workdrive folder has been created with the ID - " + newfolderid;
}
else
{
return "Folder already present for contact in Workdrive";
}
|
- The above code snippet fetches the record details for the current contact to retrieve the customer's Full Name.
- The Workdrive parent folder ID (set using the settings widget), where the new folder for the contact will be created, is then retrieved using the getOrgVariable deluge task .
- The parent folder ID and the contact's Full Name are delivered to the Create new workdrive folder API to create a new folder for the contact in Workdrive.
- The ID of the new folder is then updated in the "Folder ID" custom field using updateRecord task.
Create a button in the Contacts module to upload files to a contact's Workdrive folder and associate it with a widget
- Create a button called "Upload file to Workdrive" using the Links & Buttons feature available in the Components section of the Zoho Developer console, then associate a widget to perform the desired action.
Upload file to workdrive - widget.html - Please find the attachment for the widget html code.
- The code snippet fetches the record details of the current contact, from which the custom field 'Folder ID' value is retrieved.
- The input file selected is also checked for its file type and name.
- The Folder ID and the file name are then constructed and passed as parameters to invoke the 'Upload File to Workdrive' API.
Sample output
- After installing the extension, authorize the Zoho Workdrive connector.
- Go to Settings on the extension configuration page.
- Choose a team to manage the contact's folders and files. Click Save.
- A new team folder, CRM Contacts test, is created in Zoho Workdrive for the chosen team.

- Go to the Contacts module. Click on the Create a new workdrive folder button on the record's view page.

- A new folder is created in workdrive with the name of your contact.
- Once the folder is created, the custom field, Folder ID is also automatically updated with the new folder ID value.

- Now, click on the Upload file to Workdrive button on the record's view page.
- The widget appears. Choose a file and click the Upload file to Workdrive button. The file will be uploaded to Workdrive.
Using this method, you can integrate Zoho CRM with Zoho Workdrive through an extension to perform necessaryfunctionalities for your business. We hope you find this information helpful!
In our next post, we will show you how to track, view, and access these Workdrive files within Zoho CRM. Keep following this space for more advice!
SEE ALSO
Recent Topics
I'm pissed as fuck
What the hell Zoho! Always the same goddam problem. It takes time because the simplest things just don't fucking work. Today it just took me 3 hours to complete and send a 1page privacy letter to a client. And you know what 99% of the document was already
Configure Notifications for API Limit
Hello developers, APIs are essential for businesses today as they enable seamless integration between different software systems, automate workflows, and ensure real-time data sync. To ensure that admins are notified well in advance before APIs reach
Introducing Blueprints for Custom Modules!
Hello developers, We've added a new feature called Blueprints in Custom Modules. Blueprints are the online representation of a business process. In Zoho Books, you can use Blueprints to design a process flow using states and transitions. Developers can
Campaign Links Blocked as Phishing- Help!
We sent a Campaign out yesterday. We tested all of the links beforehand. One of the links is to our own website. After the fact, when we open up the Campaign in our browser, the links work fine. The links in the emails received, however, opened in a new
Zoho Tables July 2025 Update: Smart Creation, Smarter Automation
We’re excited to introduce a powerful set of updates across Web, Android and iOS/iPad apps. From AI-assisted base creation to advanced automations and mobile enhancements, this release is packed with features to help you build faster, automate better,
Zoho Voice est désormais en France !
Nous avons des nouveautés très intéressantes qui vont transformer la façon dont vous communiquez avec vos clients. Zoho Voice, la solution de téléphonie d'entreprise et de centre de contact basée sur le cloud est arrivée en France ! Vous pouvez enfin
Numbers in MA
I have an issue rationalising the various numbers around MA2. Not convinced that any are truly accurate. However have a specific problem in that i have a list with 1301 records in the list view. When i come to email there is only 1289 Then have another
Android mobile app unable to log in
When I open the mobile up for zoho mail it asks me to sign in, but when i push the sign in button nothing happens. Tried uninstalling and reinstalling still not working
Pie chart in Zoho Analytics shows ridicoulous numer of decimals of a percentage.
Is there a way to set the number of decimals of a percentage value in the Pie chart? Now it displays 15 decimals instead of a round-off value. The value is a count and percentage calculated in the chart, so there is no number of decimals that can be specified
Zoho People > Leave Management > Unable to import balance leave
Hello Zoho I am unable to import balance leave into the system I have follow the steps It show only 5 fields - the date field i am unable to select from date and to date Error Date in excelsheet
Narrative 4: Exploring the support channels
Behind the scenes of a successful ticketing system - BTS Series Narrative 4 - Exploring the support channels Support channels in a ticketing system refer to the various communication methods that customers use to contact a business for assistance. These
Tip of the Week #65– Share email drafts with your team for quick feedback.
Whether you're replying to a tricky customer question or sharing a campaign update, finding the right words—and the right tone—can be tough. You just wish your teammates could take a quick look and give their suggestions before you send it. Sometimes,
How to Initiate WhatsApp Message on SalesIQ?
I've just activated a Business WhatsApp phone number through SalesIQ because of its touted omnichannel chat approach. Sounds exciting. I understand that when a customer sends me a WA message, I can reply to it on SalesIQ and keep the chat going, perfect.
Episode IV:Handling User Inputs in custom functions
Hi Everyone, We've been exploring custom functions which help in performing advanced automation tasks. Custom functions enable you to achieve possibilities based on your organization's requirements. Custom functions require user inputs that allow the
Set a lead as non-marketing if they opt out of email marketing
I'm gathering Lead data via an enquiry form and wish to give them the option to opt out of marketing emails (which we send from Marketing Automation) whilst retaining the ability to send them non-marketing emails - so the email opt-out field doesn't work.
Set up multiple IMAP email addresses
Hi, I just started using CRM and its great, but I just found out I can only add one imap email address for incoming mail in the included salesinbox ...this is ridiculous. All companies have different email such as sales@domain, info@domain , personal@domain
Zoho Recruit to Zoho People integration
In the mapping of field from Zoho Recruit to Zoho People i am unable to map all fields What can i do
Zoho Recruit > Career Site > Customisation
Hi All I have created multiple career site to represent my different organization In my Quanta Media career site > I set it with the with Quanta Malta view In my job opening : Quanta Malta view 2 job opening In my URL for quanta media https://lri.zohorecruit.eu/jobs/Quanta-Malta
Formatting Blueprint Stages (buttons)
Is there a way to format Blueprint transition buttons in Creator like background colour, text colour etc.
Disable Default Value in Multi-Select field
Hello, Is there a way to disable the default value feature when setting up a custom Multi-Select field? When creating tickets I would like it so there isn't a value pre-selected in the multi-select custom field that was created.
How to set custom business hours for different teams in Zoho Desk?
Hi Zoho Team and Community, I’m trying to set different business hours for multiple departments in Zoho Desk. For example, our tech support team works 24/7, while our billing team is only available from 9 AM to 5 PM (Mon–Fri). Is there a way to assign
Zia Auto Tag Keyword Clusters
Is there a way to remove a keyword from a keyword cluster? We're finding that Zia auto-tag is tagging things incorrectly based on some words that don't really make sense.
Centralized Domain Verification in Zoho CRM Plus
Hi Team, I have a suggestion regarding Zoho CRM Plus. It's quite frustrating to verify the same domain separately for each application within the suite. It would be really helpful if you could introduce a centralized admin console—similar to what's available
HOw do I make a refund?
I have a client that needs a refund. I see a refund history in the Report area... but where do I go to make a refund?
Creating a work order for dispatch
We currently uses ZOHO for CRM and Intuit Field Service for creating Work orders and dispatching. This is causing double entry and is not efficient use of time. I would like to use ZOHO for all customer related activities so can you tell me if you can : Create a work order that we could manipulate to meet our needs. Also if you could then dispatch that would be ideal. Thank you
"code": "500","description": "Account not exists", mail api
I have been through all the steps and have a functioning Oath access_token etc etc... I then GET https://mail.zoho.com/api/organization And get my zoid then GET http://mail.zoho.com/api/organization/<hidden>/accounts and get the account details, which
Residual Formatting in Text Boxes After Undoing Pasting of Formatted Text
Hi, guys! I have another problem to report. Actually, I have been aware of this for many months, possibly years, but I have been too lazy to report it to you. My apologies! Let's say you've pasted a formatted string into a text box. You change your mind
Feature Request: Stripe Terminal Integration
I would like to request the addition of Stripe Terminal integration to Zoho Books, which will help process in-person payments. While Zoho Books already supports online payments through Stripe, extending this functionality to include Stripe Terminal would
Improved Security in SAML/OIDC Sign-in Redirection Flow
To enhance the security of our authentication system, we’ve made a change to how SAML and OIDC sign-in redirections are handled. This update resolves a potential open redirection vulnerability and adds an extra layer of protection during the sign-in process.
GA4 data
Hi, I have data being pulled from GA4 into numerous tables. There are a few major errors in the source data. Eg for a period of time GA4 reported ecommerce sales that were $98 as $9,800 and $42 as $4,200. It's not happening now but my historical data
Ask the Experts: Five-hour live Q&A session with Zoho WorkDrive product experts
Have questions about WorkDrive 5.0? Let’s talk! We recently launched Zoho WorkDrive 5.0, packed with powerful updates to help your team work smarter, stay secure, and get more value from your business content. From content-centric workflows and AI-powered
Allow the usage of Multi-Select fields as the primary field on "Layout Rules"
We want to force our users to enter some explanation strings when a multi-select field has been utilized. I can't understand the reason for the usage restriction of Multi-Select fields as a primary field. This is a simple "Display hidden mandatory field
Lost Search Box with new UI Design
I would like to suggest bringing back the Search Box in the new Zoho Project UI. I use the search feature a lot and having to click the magnifying glass to type for a search is one extra click that we did not have with the old UI.
Adaptación de zoho books a la nueva regulación de facturación electrónica
La facturación electrónica será obligatoria para todas las empresa en España en 2025, en Francia probablemente también e imagino pronto en todos los países europeos. Ya en 2024 todas las empresa grandes tienen que utilizar el sistema de facturación electrónica.
ZOHOBOOK Sales_QUOTE: To Add Discount At Each Line Item Table
Hi, Our quote need to display with discount at each line item level as well. Try to edit template, >CUSTOMISE>EDIT TEMPLATE> Table, I can see template view with discount column, but when hit SAVE the template, view in PDF the discount column not shown.
How to account for vat with postponed VAT accounting
Hi everyone, looking for some help with postponed VAT accounting, I use DHL express for my imports and they used to pay the VAT for me and then invoice me. I could then log this as a bill and the VAT element from import was recorded as input VAT, all
Weekly Automation Trigger for Equipment Calibration Reminder
Dear Team, I’m currently working on an automation in the Equipment module. The goal is to track calibration schedules for tools — all of which require regular calibration. I’ve created an automation that sends email reminders for tools that are due for
ADDDATE formula using 2 calculations
Hello, I want to create an ADDDATE formula using 2 calculations, add 1 month and deduct 1 day. the formula that I need should look like this: ADDDATE(due_date, 1, "Months")+ ADDDATE(due_date, -1, "Days") Each row itself works fine, but when I'm trying
Upgrading from Zoho Invoice to Books was a major downgrade in functionality for me
I have been a user for many years of a free plan on Zoho Invoice for my personal consulting business. I recent upgraded my organization to Books since some of the additional functionality looked useful to me, and played around with the free trial for
🎉 Dynamic Org Chart for Zoho CRM Extension Published [2025]
Hey Zoho CRM Community! We're thrilled to unveil our latest Zoho extension:🥁 Dynamic Org Chart for Zoho CRM 🎊 This extension is now available to transform the way your teams visualize, manage, and interact with org chart directly inside any Zoho CRM's
Next Page