Building extensions #4: Integrating Zoho Books with applications using connections

Building extensions #4: Integrating Zoho Books with applications using connections

In our last post, we looked at an overview of the key features available for creating a Zoho Books extension, including connections. In this post, we'll go over connections in depth, including their types and applications.

What are connections?

"Connections" is a component in the developer console that allows you to establish secure connections between applications. In general, a secure connection is essential for apps to work seamlessly for data transmission and synchronization. The connections functionality in the Zoho Books extension developer portal is ideal for securely connecting Zoho Books to other Zoho products or third-party applications.

Types of connections

The Zoho Books extension developer portal allows you to use both predefined and custom connections.

Predefined connections:
These are ready-to-use connections that are preconfigured for various applications to connect with Zoho Books. You can simply search for the application you want to connect to from the default list, choose it, enter some basic information (scope), and connect to Zoho Books.

Custom connections:
These are connections for apps not included in the default list. You can create a custom connection by manually setting up or configuring information about the application you want to connect to Zoho Books with—such as the authentication type and other corresponding details—and then proceeding with the connection.

Notes
Note: You can also create these custom connections for applications in the default list if you want to customize the connection with specific details.

Now, let's explore the steps to create these connections with an example for each.

Steps to create a predefined connection
  • Go to Sigma and access your workspace.
  • Enter the developer portal of the Zoho Books extension you're creating a connection for.
  • Navigate to the Build section and click Connections to view the connection details, types (predefined and custom), and support to create a new connection.

  • Click the New Connection button to create a new connection.
Notes
Note: Alternatively, you can use the View All option under a connection type to see all the services under that particular connection type and begin building connections.

  • You'll be redirected to the connections page of your extension's developer space, where you can select default or custom services to create connections.


In this post, we'll walk you through creating a predefined connection using the default services available.

For our example, let's create a connection for Wrike (a project management service) available in the default services list and integrate it with Zoho Books.
  • Choose Wrike from the default services list.

  • Click the Create Connection button.

  • Provide the connection details.
➤ Enter the connection name.
➤ Toggle and choose whether you want every user to enter their credentials during connection authorization.
➤ Choose the scopes necessary for your purposes for the connection.

  • Click Create And Connect. Proceed with the flow to accept the scopes and authorize the connection.
  • The connection is now authorized, and you'll be directed to the connection details page. This page will also contain sample code in both deluge and JSON formats that can be used to utilize this connection as part of your extension components. Depending on which component you want to invoke the connection in, you can use the appropriate sample code format.
Notes
Note: Giving the connection name in the script is critical to be able to use the connection in the extension.


  • Close the connection's detail page, and you'll be taken back to your extension's developer portal.
  • If needed, you can create multiple connections for your extension. The connections you've created will be visible in the My Connections section of the Connections page.

  • You can click on a connection to view its details or choose to revoke it, if necessary. You can reconnect a revoked connection whenever you need it.
Let's look at a simple scenario for the predefined connection we created. Assume that each time a project is created in Zoho Books, a new project is created in Wrike to handle project management in detail. In addition, if any tasks are available as part of that Zoho Books project, they'll be instantly created in Wrike alongside the project. This can be accomplished easily in an extension using workflows, custom functions, and connections.

Let's check out the steps to make this happen.
  • Create a custom function for the Projects module by selecting Automate, then Workflow Actions, then Custom Functions, then New Custom Function. Include the logic to fetch the details and its tasks from a Zoho Books project and create a matching project in Wrike.
createwrikeproject deluge function - Please find the code snippet as an attachment in the post
  • In the code above, the Zoho Books project's details, such as project name and task details, are fetched from the Project Map parameter in the custom function.
  • The retrieved project details are constructed as a Map and then passed to the invokeURL deluge task to invoke the Wrike API and create a project. Additionally, a check is made to see if the Zoho Books project has tasks associated with it. If it does, then those tasks are added to the project created in Wrike using the Wrike API to create tasks.
  • The Invoke URL task requires some basic parameters to invoke the API and provide a response.
➤ url: This is the URL of the application's API that will be invoked. In our case, it's the Wrike API URL for Create Project and Create Task.
➤ type: This is the method of the HTTP request required for the API. Since we're creating projects and tasks in Wrike, the type is POST in our example.
➤ parameters: These are data that need to be constructed and passed as the body for the API.
➤ connection: The name of the Wrike connection we created has to be supplied as the value for the connection parameter. This ensures that data transfer between Zoho Books and Wrike is authorized and secure.
  • Next, create a workflow rule for the Projects module by selecting Automate, then Workflow Rules, then New Workflow Rule.
  • Set the Action Type as "When project is created."

  • Now, associate the custom function (createwrikeproject) as a workflow action to this workflow rule. Save the workflow rule.


We've now completed our extension setup for our use case.

After testing and publishing our extension, whenever a new project is created in Zoho Books, a matching project is created in Wrike as well, along with any tasks.


This example demonstrated a seamless transfer of data from Zoho Books to Wrike with connections. This use case can be taken a step further, making sure the project and its tasks maintained in Wrike are also synchronized in Zoho Books.

In this post, we've seen how to set up a predefined connection and use it in a Zoho Books extension. In the next post, we'll look at custom connections and how to create them.

SEE ALSO




        • Recent Topics

        • Batch Tracking custom function

          Hi fellow zoho users, We have our ecommerce site setup to shopify. I have some products I want to add batch tracking too, my only issue is that it breaks our shopify workflow (create sales order, invoice, payment, package) because it requires us to manually
        • Company Multiple Branch/ Location Accounting

          Hi All, anyone know whether company can maintain their multiple Branch Accounting in Zoho  Books. It will be chart of Accounts & Master Data will be same but different report available as per per Branch. Thanks & regards, Vivek +91 9766906737
        • Is it possible to setup bin locations WITHOUT mandating batch tracking?

          Hi fellow zoho users, I'm wondering if anyone else has a similar issue to me? I only have some products batch tracked (items with shelf life expiry dates) but I am trying to setup bin locations for my entire inventory so we can do stock counting easier.
        • System-generated support email added in CC on “Reply All”

          Hi, I recently set up Zoho Desk for a client and we are trying to prevent the Zoho Desk system-generated support email address (not the mailbox used as the department’s "From address") from being automatically added in CC when agents use “Reply All” on
        • Dependent (Conditional) Fields in Zoho Bookings Forms

          Hello Zoho Bookings Team, Greetings, We would like to request the ability to create dependent (conditional) fields in Zoho Bookings registration forms. Current Limitation: There is currently no way to make one field’s available options depend on the value
        • Support “Other” Option with Free Text in Dropdown Fields

          Hello Zoho Bookings Team, Greetings, We would like to request an enhancement to the registration form fields in Zoho Bookings, specifically for dropdown fields. Current Limitation: At the moment, dropdown fields do not support an “Other” option that allows
        • Zoho CRM Email Templates 100% Width No Background How?

          Hi, On the Zoho CRM Email Templates in setup > customization > templates > new templates > I choose blank template, but still it puts in a gray background and a max width for the email. I just want to make an email that looks like an email I would send from gmail that has no background or max width. How do you do this? 
        • Optimum CRM setup for new B2B business

          Can some advise the most common way to setup Zoho CRM to handle sales for a B2B company? Specifically in how to handle inbound/outbound emails. I have spent hours researching online and can't seem to find an accepted approach, or even a tutorial. I have
        • Run a workflow after record merge

          Hello, We are wondering if there is a way to trigger a workflow after two records are merged? We have a sms service that use to text back and forth with Prospects and Contacts. To make it easy for our users, we automatically create them in this other
        • Include Suggested Articles in New Ticket Email

          When someone creates a new ticket, is there any way to include recommended knowledge base articles (like the ones Zia Suggests) in the email notification to the user? When they're waiting for a reply, it would be nice to have sent them some recommended
        • How to install Widget in inventory module

          Hi, I am trying to install a app into Sales Order Module related list, however there is no button allow me to do that. May I ask how to install widget to inventory module related list?
        • Mapping a new Ticket in Zoho Desk to an Account or Deal in Zoho CRM manually

          Is there any way for me to map an existing ticket in Zoho desk to an account or Deal within Zoho CRM? Sometimes people use different email to put in a ticket than the one that we have in the CRM, but it's still the same person. We would like to be able
        • Item Bulk Edit - Allow for Reorder Level

          We're implementing a process for using the Reorder Level field for Items, and I have to go through and add this value to a huge chunk of our Items. It's driving me bonkers that I have to do this individually through the UI rather than bulk updating. It
        • Sharing my portal URL with clients outside the project

          Hi I need help making my project public for anyone to check on my task. I'm a freelance artist and I use trello to keep track on my client's projects however I wanted to do an upgrade. Went on here and so far I'm loving it. However, I'm having an issue sharing my url to those to see progress. They said they needed an account to access my project. How do I fix this? Without them needing an account.
        • StatusIQ

          Please add StatusIQ to data sources. We using site24x7 and StatusIQ together and site24x7 integration is already there. Thanks and regards, Torsten
        • Report sorting not working

          I make extensive use of Summary reports and Pivot Tables. Most of these reports are structured such that I have several columns of "information" data that I want displayed, followed by one or more "Data" summarizations. For example, I have the following
        • This site can’t be reached mail.zoho.com took too long to respond

          In my office at any system, we couldnt able to login zoho email. it shows " This site can’t be reached mail.zoho.com took too long to respond". please fix it soon.
        • Why am I seeing deleted records in Zoho Analytics syncing with Zoho CRM?

          I have done a data sync between Zoho CRM and Zoho Analytics, and the recycle bin is empty. Why do I see deleted leads/deals/contacts in Zoho Analytics if it doesn't exist in Zoho CRM? How can I solve this problem? Thanks
        • Zoho Flow + QuickBooks Estimates – Line items not created from CRM subform

          Hi everyone, I’m trying to create QuickBooks Estimates from Zoho CRM Quotes using Zoho Flow. I’m aware that Zoho Flow’s native “Create Estimate” action does not support multiple line items, so I followed the community guidance for Invoices using a custom
        • SAP S/4 HANA Integration via ZOHO Flow

          Hi How do I change the SAP Client ID while creating a new connection ? MY client ID is 421. I believe the client id should be an input field for length 3 numbers rather then a drop down to select from a fixed set of values. Thanks
        • VLOOKUP FUNCTION PROBLEM

             Hello, i have a problem with the VLOOKUP  function in my sheet http://public.sheet.zoho.com/public/tonimoreno/indicemasacorporal2 in cell D2. This function doesn't work correctly and always returns the last content of the range. Can you help me?
        • CRM x WorkDrive: We're rolling out the WorkDrive-powered file storage experience for existing users

          Release plan: Gradual rollout to customers without file storage add-ons, in this order: 1. Standalone CRM 2. CRM Plus and Zoho One DCs: All | Editions: All Available now for: - Standalone CRM accounts in Free and Standard editions without file storage
        • Zoho Flow Completely Broken?

          Since December 13th, 100% of our flows have stopped working completely. Nothing is working or triggering??? I called support & sat on the line with them for 2 HOURS until they finally concluded it was a back-end problem on their end?? Now i'm calling
        • Print / Export full Dashboard page

          Hello Zoho team, It is currently only possible to print/export one component of a dashboard at a time. Requesting the option to print/export a full dashboard page with all components to a pdf or picture. Doing through the browser doesn't give good results.
        • emails duplicated in my outlook client

          Hello I am just new here and I have a litle problem that I do not find how to solve. I sumarise here after. Your help would be very appreciated. I have just recently contracted this zoho mail servicesservices as an initial evaluation yesterday night. I then:   - opened a free account  - created 1 initial email address ..........@domain.com  - created a second email address ..........@domain.com - proceeded with the config instructions (checking the ownership of my domain, changing MX etc... ) as
        • How to check task starting time in zoho mobile app?

          I am using the Zoho mobile app on my iPhone, and I am not able to see the task's starting and finishing times. When opening the Task information / Details, I can only see the Task start date and due date, but not the time. Is there any way to check a
        • Creating an extension in Sigma: Zoho CRM isn't selectable as a service

          I have 2 Zoho accounts which are part of 2 different workplaces. One workplace is able to select 'Zoho CRM' as a service option when creating a new extension, the other one is not. I'm not sure what the exact differences are between them. What do I need
        • List of packaged components and if they are upgradable

          Hello, In reference to the article Components and Packaging in Zoho Vertical Studio, can you provide an overview of what these are. Can you also please provide a list of of components that are considered Packaged and also whether they are Upgradable?
        • Cliq iOS can't see shared screen

          Hello, I had this morning a video call with a colleague. She is using Cliq Desktop MacOS and wanted to share her screen with me. I'm on iPad. I noticed, while she shared her screen, I could only see her video, but not the shared screen... Does Cliq iOS is able to display shared screen, or is it somewhere else to be found ? Regards
        • Knowledgebase SEO

          We have a custom-domain mapped help center that is not restricted via login. I have some questions: a) will a robots.txt file still allow us to control indexing? b) do we have the ability to edit the sitemap? c) do category URLs get indexed by search
        • RouteIQ for Zoho FSM

          Beste, Zou wel top zijn dat we een RouteIQ hebben voor FSM aangezien we constant moeten zien wat de beste route is voor onze monteurs. Nu moeten we een speciale aparte programma hebben om de beste route te berrekenen voor onze monteurs aangezien de planning
        • Export Tickets from the Help Center

          Hello everyone! We are now allowing end users to export tickets directly from the help center. The ticket export allows users to: Filter tickets by Department, Priority, and Account before exporting. Download files from Export History (Setup > Data administration
        • Zoho Books Sandbox environment

          Hello. Is there a free sandbox environment for the developers using Zoho Books API? I am working on the Zoho Books add-on and currently not ready to buy a premium service - maybe later when my add-on will start to bring money. Right now I just need a
        • Super Admin Logging in as another User

          How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Moderation Update (8th Aug 2025): We are working
        • Is it possible to remove filtering options?

          My CRM has a lot of custom fields that should not be used in filters or views. Fields that are automated and exist only to store temporary values that get used in functions. These create a lot of noise in the list of fields to filter. Isn't there any
        • Function #18: Associate invoice templates automatically based on customer language

          For businesses dealing with a diverse linguistic clientele, it becomes crucial to send out invoices in the customer's preferred language to ensure effective communication. This requirement can be handled in Zoho Books by creating invoice templates in
        • Changing field types

          Question im a Zoho CRM user and curious, if I change a flied type from single or multi line text to a URL field type will i lose the data in the field or will it be converted to website link automatically. Thanks
        • Quote PDF – Header image stopped rendering suddenly

          Hello Zoho Support Team, We are facing an issue with Quote PDF templates in Zoho Books. Previously, images added inside the Quote header HTML were rendering correctly. However, recently the header image is no longer appearing, while header text still
        • Changing Default PDF Name

          Is it possible to change the default name of a PDF? As of right now, all of my quotes are named 'QT_$QuoteNumber' (i,e: 'QT_19803471298374) - would it be possible to change this to: '$CompanyName - $AccountName - $QuoteNumber' for instance?
        • Tip 2: Recursive functions in Deluge: How to dynamically run a function for a specified number of times.

          Hi folks, As part of the Zoho Creator - Tips and Tricks series every fortnight, we are back today with a new tip on Recursive functions.  Let us first quickly understand what Recursive functions are: A function that calls itself one or more times is known as a Recursive function. That is, you can execute a function to perform a particular action a specific number of times. And, at the end of each iteration, a new output is generated. Recursive functions are commonly used by programmers as it enables
        • Next Page