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
GDPR Contd. - Handling Lawful Bases for Your Customers using Zoho CRM.
Hello folks, Continuing from our previous GDPR post, we bring to you the first cut of GDPR centric enhancements that are released for handling lawful bases for your customers in Zoho CRM. For your understanding we have split the entire process into three sections: Identifying Data Processing Basis Updating the Data Processing Basis in Zoho CRM Consent Management in Zoho CRM 1. Identifying Data Processing Basis The fundamental principle to handle the personal data of your data subjects is to process
Upgrade the Lato font to the Lato 2 font
While there's not a major difference, I noticed that Zoho doesn't use the upgraded Lato 2 font but it instead uses the standard one. Lato 2 enhances the look of letters and numbers when you italicize them, among little things that get tweaked. Is it possible
Masked Field Type with Permission-Controlled Visibility in Zoho CRM
Dear Zoho CRM Team, Greetings, We would like to request a new feature that would enhance data security and access control within Zoho CRM, especially when handling sensitive internal information. Use Case: Our team occasionally needs to store sensitive
How to properly setup Databridge on Linux Server?
Hello guys, i am running a Linux server on which I am installing the Zoho Databridge via command line. The Zoho tutorial ( https://help.zoho.com/portal/en/kb/analytics/user-guide/import-connect-to-data/databases-and-datalakes/articles/postgresql-3-3-2021#1_How_do_I_install_Zoho_Databridge
Haven't used banking function for years and now want to reconcile and clean up my account
I'm in the UK and have been using Zoho Books for my private mental health practice since 2018. Up until recently, I've entered everything manually and not reconciled any items with my bank account. Every year, I run a report for that year and use that
invalid element hsn_or_SAC
Hi, I am trying to record expense in Zoho expense. when submitting I am facing this issue invalid "element hsn_or_SAC" please help me with this. Regards, Abdul Hameed M
Plug Sample #14: Automate Invoice Queries with SalesIQ Chatbot
Hi everyone! We're back with a powerful plug to make your Zobot smarter and your support faster. This time, we're solving a common friction point for finance teams by giving customers quick access to their invoices. We are going to be automating invoice
Recap - Desk Story Series
In our exploration of the Wheels of Ticketing Series, we kicked things off by diving into a fundamental element of Desk Ticketing: the fields. These fields serve as the building blocks that gather essential information about tickets, customers, organisations,
Tip of the Week #60– Reduce response time with shared inboxes!
When customer messages are scattered across different platforms and team members aren't sure who's responding, delays are inevitable. Slow responses frustrate customers and create a poor experience for your brand, especially when expectations are high.
Hybrid project management in IT and software development services
Project management models serve a wide range of audience, however the highest takers for Agile project management methodology are the IT and software services industry. The flexibility to develop and release software iteratively with continuous improvement,
Introducing Forms in Zoho Sheet
We hereby bring you the power of forms in Zoho Sheet. Now, build and create your own customized forms using Zoho Sheet. Be it compiling a questionnaire or rolling out a survey, Zoho Sheet can do it all for you. Forms is an excellent feature that helps you collect information in the simplest of ways and having it in Zoho Sheet takes it a notch higher. Build Simple yet Powerful forms Building forms using Zoho Sheet is fairly simple. The exclusive 'Form' tab lets you create one quickly. Whether you
What's New in Zoho Inventory | January - March 2025
Hello users, We are back with exciting new enhancements in Zoho Inventory to make managing your inventory smoother than ever! Check out the latest features for the first quarter of 2025. Watch out for this space for even more updates. Email Insights for
Overdue payments pending approval max
I needed to validate update the email to pay for goods sold out, travel expenses and cars and vehicles for office, office supplies, properties purchase etc
How do I mass edit time entries?
Since you can not filter or sort time entries by what has and has not been invoiced (you can only see the icon but not separate invoiced from non-invoiced), I would like all time to initially be entered in as un-billable and I can change to billable as I bill them. (since you can see this separation) So my question is HOW do I mass edit this? Can it be done?
Zoho Booking Page Footer
Is there any option available to add social media, like LinkedIn, on the Zoho Booking page?
Custom SMTP is now available in Zoho Sign
Hi there! Want to send Zoho Sign emails from your organization's or personal email server? Look no further! Zoho Sign has introduced custom Simple Mail Transfer Protocol (SMTP) for Enterprise users across all data centers. By enabling custom SMTP, you
Help with SEO
Hi There, I have recently published a site and added some Keywords in the SEO settings. Searching Google I currently don't find my site though. When do these settings take effect? In the SEO settings there is also a section "Sitemap" I can change settings for "frequency" and "Priority" What do these settings do? Kind regards
Report Level Button
Currently I couldn't find a way to add a report level button I think currently we can only add buttons/actions for records, but having custom report level button would be really beneficial Usecases Click to import/sync Data from On Prem Systems Click
Create collection from start integer to end integer
I want create some ticket number. Starts at 1 and end at 10. I want the result to be a string 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10. Trying something like this but need the correct way write the start and end part. start = 1; end = 3; sequence = List();
Importing Subform Data is Removed in Zoho Creator 6
Previously It was possible to import Data to the Subform in Creator 5 This basic and mandatory Feature was completely removed from Creator 6 with no Timeline to add support for it How are we supposed to add our data if we want to use Creator? Manually?
Function #50: Send Mass emails to your customers
Hello everyone, and welcome back to our series! We have reached a milestone of 50 Functions, which means that we have automated 50 different tasks in Zoho Books. Every Friday, we have shared a nifty function aimed at either automating a task or streamlining
Smart Document Automation:: From Zoho Projects to Zoho Writer – Merge, Edit, and Share
Hello Everyone, A custom function is a software code that can be used to automate a process and this allows you to automate a notification, call a webhook, or perform logic immediately after a workflow rule is triggered. This feature helps to automate
How to remove an Instagram post on Zoho Social?
Hi there, I wanted to delete yesterday's post on all social platform and managed to do so for Twitter and Facebook. I couldn't for Instagram as there is no option for delete. How can I delete successfully?
【開催報告】東京 ユーザー交流会 Vol.2 2025/6/13 CRM Plus/Formsの活用におけるポイントやおすすめ機能を紹介
ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 6月13日(金)に東京で「ユーザー交流会 Vol.2」を開催し、16名の方にご参加いただきました。ご参加くださった皆さま、ありがとうございました。 この投稿では、当日のセッションの様子や使用した資料を紹介しています。残念ながら当日お越しいただけなかった方も、ぜひご覧ください。 ユーザー活用事例セッション:マーケ・営業・サポートをつないで顧客体験を向上させる!Zoho CRM Plusのおすすめサービス活用事例 Zoho Champion
No Real DANE Support
The issue in https://help.zoho.com/portal/en/community/topic/will-zoho-implement-dane was closed today claiming DANE was implemented. You never implemented DANE correctly, even if you think you did. DANE requires DNSSEC to work properly, you never added
Applying Price List to All Customers
I just created a new price list as we have several items that have volume price breaks. To create my price lists, I followed the instructions in this article: https://www.zoho.com/us/inventory/help/items/price-list.html When it comes to applying my price
What's wrong with this deluge code to create a Bill?
I know that all the data in the map is correct. The line items are pulled directly from a purchase order. // Add the purchase order ID to the bill billPOIds.add(poID); // Retrieve and merge the line items poLineItems = purchaseOrder.get("line_items");
2 Ideas, Clone timesheet entry from monthly view and Notes in Weekly view
While i love timekeeping I am finding some things slow me down. Slow to the point of considering writing my own API call to do this. It would be so useful to be able to clone a timesheet entry from the monthly view. It is somewhat painful to have to
Zoho Workdrive API call to find public external Link for a Folder
Hi all, I can create new external share links for a WD Folder using this API call https://workdrive.zoho.com.au/api/v1/links . This works fine, however if there is already an external link created for a given folder, trying to create a new one fails (which
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
Accessing and Using Formula Field
Hi There, I created a formula field called 'Day of the Week' in the Leads module that takes the record created time and transforms it into the day of the week. The formula field returns the correct values. However, I am unable to find or use the field
🇺🇸 🇨🇦 🇲🇽 Ask the Experts: A Live Q&A Session
Session Closed Thank you to everyone who participated in this Ask the Experts session! Your questions, insights, and engagement made it a valuable discussion for the entire Zoho Recruit community. The comment section is now closed, but feel free to browse
Request For Quotation (RFQ) module
Hello, Do you have any plans to implement a RFQ module in to ZOHO Inventory? I would like to chose items that I require a price for, select a number of different suppliers to e-mail and have them submit there pricing online. I would then like to see a
Ability to Append or Prepend specific signer name field to all documents in an envelope
We use templates regularly and have a need to be able to rename the individual pdf documents contained in an envelope, such that a signer's name is appended or prepended (e.g. Form1 - SignerName). This is critical for us, because of how we process documents
Export an email as an HTML file?
How do we export an email in Zoho Marketing Automation as an HTML file? We have an advertising partner that needs our campaign email as an HTML file. We can't find any way to do this. If this is not possible, please explain why. It doesn't make sense
Function #30: Display list of associated PO on SO details screen
Hello everyone, welcome back to our series! Imagine having the ability to effortlessly access and view details of all purchase orders linked to a sales order directly from the sales order itself. Well, today's script is designed to do just that for you.
Custom Print Button in Page/Stateless Form
[Zoho Creator] Unable to Add Custom Print Button to Page or Stateless Form We need the ability to add a custom print button on a page or stateless form in Zoho Creator to print a templated or formatted output (e.g., appointment confirmation, summary slip).
Page Variable Not Passed from Report to Form
[Zoho Creator] Page Variable (Resource) Not Passed from Report to Form in Appointment Module We are facing a limitation in our Appointment Module related to the handling of page-level variables. We are using a page variable to select a resource, which
Creating Layout Rule With Formula Field
By The Grace Of G-D. Hi, I see that i cannot use Layout Rules to show/hide Formula Fields. Is that something you plan on adding sometime soon?
Combine / merge multiple invoices into master
Good morning Zoho! Upon looking for a solution for my issue, I found many that had my similar problem...dating 13 years ago! Please, any updates on this? Merging multiple invoices on a Master Invoice would alleviate all the extra work of resending and
Next Page