Setting up and using connections in Bigin toppings

Setting up and using connections in Bigin toppings

When building a topping to extend Bigin's functionality and connect it with third-party applications, creating and handling connections is an important step. Connections provide a secure way for your topping to authenticate and communicate with other applications' APIs without exposing sensitive credentials to end users. This abstraction is both secure and makes the integration easier because it eliminates the need for developers to implement complex authorization flows manually or handle authorization tokens directly.

Bigin's Developer Console offers a feature called a connection, which acts as a bridge between your topping and the third-party application you wish to integrate with. Once a connection is configured, you can reference it in your topping's functionalities using its unique link name. This enables the topping to execute REST operations such as fetching, updating, or syncing data with the connected application securely.

Now that we've achieved a basic understanding of what a connection is and how it helps toppings interact with other applications, the next step is to understand the types of connections available in Bigin's Developer Console.

Establishing connections with services

The connections feature in Bigin's Developer Console offers two types of services to help developers configure integrations according to their requirements: default services and custom services. Default services are preconfigured services available in Bigin's Developer Console that simplify integrations with some Zoho and third-party applications. If the application you want to integrate with isn't listed in the default services, you can create a custom service and configure it according to the API specifications of the third-party application.

Default services

The connections feature offers certain default services as preconfigured options that can be easily integrated with Bigin. These services come with predefined settings such as authentication type, token endpoints, scopes, and headers, which reduces the need for manual configuration. Currently, there are around 50 default services available in the Developer Console, covering a wide range of applications and platforms. This enables developers to connect to services with minimal effort.


If the application you want to integrate with your topping isn't listed in the default services, you can create a new custom service.

Custom services

Custom services enable developers to configure all aspects of a connection manually, including the authentication type, endpoints, headers, and scopes, which enables integration with third-party applications.

When setting up a custom service, developers can specify the exact authentication flow required by the external application, whether it's basic authentication, OAuth, an API key, or another method.
Notes
Note:

Refer to the official API documentation of third-party applications when configuring these settings, as this will provide the necessary details for authentication and data access.
To create a custom service, navigate to the Connections section and choose Custom Services in the Developer Console. Based on the authentication type supported, configure the custom service for the required product.


For more details on creating and configuring custom services, please refer to this guide.
Notes
Note:

Always handle sensitive information such as client IDs, client secrets, and API keys securely, and never share them publicly. After configuring and authorizing a custom service, reference it in Deluge scripts and workflow functions by using its unique connection link name, just as you do with default services.
Next, let's look at how to implement the default service connection with an example.

Create a default service connection

Let's say you're developing a Bigin topping to synchronize contact information between Bigin and Zoho Books. This integration enables contacts created or updated in Bigin to be automatically reflected in Zoho Books. The topping uses Zoho Books APIs to create, update, and retrieve customer data using a default service connection.

To create a default service connection for the topping, choose Connections from the left panel of the Developer Console and click Get Started.


Next, navigate to My Connections or Default Services. To fetch data from the Contacts module in Bigin, create a connection first. From Default Services, select Bigin and then click Create Connection to set it up.


The system will prompt you to enter the connection details. Provide a name for the connection (for example: Bigin Connection). A connection link name is generated automatically.

Next, select the scopes required for the topping's functionality. In this use case, select ZohoBigin.modules.ALL to access data from Bigin's Contacts module.

After selecting the scope, click Create and Connect to initiate the authorization process. The system redirects you to the authorization page. Click Connect, and you'll be taken to the service's login page. Choose the Bigin organization for which the topping was created, click submit, and the connection will be created.


After establishing the connection with Bigin, you must also create a connection for Zoho Books to enable record creation. To do this, create a default service connection for Zoho Books, similar to the one created for Bigin. Select the scope ZohoBooks.fullaccess.ALL to grant complete access to modules and operations in Zoho Books.

Once you've created the connections for both Bigin and Zoho Books, the system will generate connection link names for each. These link names must be used in the business logic.



Notes
Notes
Note:

During development, authorize the connection in the Sandbox environment to test integration workflows safely.
To understand the authorization process and how to implement them, please refer to this guide on authorizing connections.


After you authorize the connection, set up a workflow rule in the Bigin Developer Console that gets triggered whenever you create or update a contact in your Bigin account. Here, we need to specify the conditions that apply to the workflow and check that the email field isn't empty.

Notes
Note:

In our use case, we'll use the email address to check whether the newly created contact in Bigin already exists as a customer in Zoho Books.



When the workflow meets the specified conditions, an instant action - in this case, a function - which will execute a custom functionality that performs the following operations:
  1. Retrieves the contact details from Bigin by referencing the established connection link name biginandbooksconnection0__booksconnection.
  2. Searches Zoho Books for an existing contact that matches the email.
  3. If a matching contact exists, update the contact's phone and contact person details in Zoho Books.
  4. If the script doesn't find a matching contact, it creates a new contact in Zoho Books with the relevant information.
Below is the code that automates contact synchronization between Bigin and Zoho Books:
  1. //Retrieve contact details from Bigin using the established connection
  2. biginContact = zoho.bigin.getRecordById("Contacts",contact.get("Contacts.ID"),Map(),"");
  3. //Extract relevant contact data
  4. biginData = biginContact.get("data");
  5. contactDetails = biginData.get(0);
  6. email = contactDetails.get("Email");
  7. phone = contactDetails.get("Phone");
  8. mobile = contactDetails.get("Mobile");
  9. fullName = contactDetails.get("Full_Name");
  10. //Search Zoho Books for existing contacts by email
  11. searchParams = Map();
  12. searchParams.put("search_text", email);
  13. booksContactsResponse = invokeurl
  14. [
  15. url :"https://books.zoho.com/api/v3/contacts"
  16. type :GET
  17. parameters:searchParams
  18. connection:""
  19. ];
  20. info "Searched by name in Books: " + booksContactsResponse;
  21. booksData = booksContactsResponse.get("contacts");
  22. if(booksData != null && booksData.size() > 0)
  23. {
  24. // Extract the existingContactId
  25. existingContactId = booksData.get(0).get("contact_id");
  26. // Update existing contact
  27. updateParams = Map();
  28. updateParams.put("contact_name",fullName);
  29. updateParams.put("phone",phone);
  30. updateParams.put("mobile",mobile);
  31. updateParams.put("email",email);
  32. // Define contact person details
  33. contactPerson = Map();
  34. contactPerson.put("last_name",fullName);
  35. contactPerson.put("mobile",mobile);
  36. contactPerson.put("phone",phone);
  37. contactPerson.put("email",email);
  38. contactPerson.put("is_primary_contact",true);
  39. contactPersonsList = List();
  40. contactPersonsList.add(contactPerson);
  41. updateParams.put("contact_persons",contactPersonsList);
  42. //Prepare and execute update request
  43. parameters_data = Map();
  44. parameters_data.put("JSONString",updateParams.toString());
  45. info "parameters_data value:" + parameters_data;
  46. updateResponse = invokeurl
  47. [
  48. url :"https://books.zoho.com/api/v3/contacts/" + existingContactId + "?organization_id=XXXXXXX"
  49. type :PUT
  50. parameters:parameters_data
  51. connection:""
  52. ];
  53. info "Updated Contact: " + updateResponse;
  54. }
  55. else
  56. {
  57. // Create new contact
  58. contactDetails = Map();
  59. contactDetails.put("contact_name",fullName);
  60. contactDetails.put("email",email);
  61. contactDetails.put("phone",phone);
  62. contactDetails.put("mobile",mobile);
  63. // Define contact person details
  64. contactPerson = Map();
  65. contactPerson.put("last_name",fullName);
  66. contactPerson.put("mobile",mobile);
  67. contactPerson.put("phone",phone);
  68. contactPerson.put("email",email);
  69. contactPerson.put("is_primary_contact",true);
  70. // Add to contact persons list
  71. contactPersonsList = List();
  72. contactPersonsList.add(contactPerson);
  73. contactDetails.put("contact_persons",contactPersonsList);
  74. // Prepare and execute the create request
  75. parameters_data = Map();
  76. parameters_data.put("JSONString",contactDetails.toString());
  77. createResponse = invokeurl
  78. [
  79. url :"https://books.zoho.com/api/v3/contacts?organization_id=XXXXXXX"
  80. type :POST
  81. parameters:parameters_data
  82. connection:""
  83. ];
  84. info "Created Contact: " + createResponse;
  85. }
For details about the API endpoints and request formats used in this code, refer to the Bigin Deluge reference library and Zoho Books contacts API documentation.
After you configure the workflow and associate the function with the instant action, test the topping in the sandbox environment.
  1. To do this, click Test Your Topping in the upper-right corner of the Developer Console. This action will redirect you to the Bigin sandbox account, where you can create a new contact to test whether the functionalities work properly.
  2. After creating a new contact in Bigin, navigate to the Customers module in the Sales section of Zoho Books. When you set up the integration correctly, you'll see the newly created contact here, which confirms that Bigin and Zoho Books are synchronizing as expected. This process provides a safe and effective way to validate the workflow before deploying the topping to a production environment.


In this post, we've explained that default service connections in Bigin simplify authentication and connection with third-party applications by using predefined settings such as authentication type, token endpoints, and scopes. These connections are convenient because the Developer Console pre-configures the authentication flow and endpoints of the application you're integrating with.

To sum up: Bigin's connections feature provides a flexible foundation for integrating with a wide range of external services, and using these connections, developers can extend Bigin's integration capabilities.

Stay tuned for more about developing toppings and exploring other related features available in the Bigin Developer Console.

<< Previous                                                                                                                                                      Next>>                                                                                                                                                                                                                                              

    Nederlandse Hulpbronnen


      • Recent Topics

      • Zoho Books | Product updates | October 2025

        Hello users, We’ve rolled out new features and enhancements in Zoho Books. From iOS 26 updates to viewing reports as charts, explore the updates designed to enhance your bookkeeping experience. Zoho Books Updates for Apple Devices At WWDC 2025, Apple
      • Adding Taxes to paid consultations in Zoho Bookings

        I created a 'paid' consultation under Zoho Booking and integrated it with payment gateways for online/instant payment before a booking is done. How can I add 'taxes' to the price of consultation? I can add taxes to other Zoho apps (liks Books, Checkout,
      • Zoho CRM Reports Module on Mobil App

        I have the mobile app and the reports module doesn't appear in the sidebar for some reason. I saw a Youtube video where the user had the Reports module on mobile. Is there a setting to show it on mobile? Thanks.
      • Inquiry on Help Centre Tab Customisation

        Hi Zoho team, I’m wondering if it’s possible to further customise the Help Center tabs, specifically the descriptions under Knowledge Base, Community, and Tickets. While the current setup allows customising tab names, being able to tailor the descriptions
      • Passing a form object to a function

        Suppose I have a sort_order field in multiple tables and I want to increment it by +1 onCreate of a new record. Is there a way to pass the form object as an argument into the function to keep things DRY? The following function from Zia works, but I'd
      • Can you copy and paste a page within a form?

        I have been looking at trying to copy/duplicate a whole page within a form. I can't see how I can do this without having to add all the data in again. This is very time consuming. Any help would be great.
      • 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
      • How do I copy an email message to one or more other folders?

        I can move a message to another folder using the "move to" option but I can't figure out how to copy a message. 
      • New feature request: Allow copy of email message to another folder

        Hello Zoho team, This is a suggested new feature to allow copy an email message to either another folder or the same folder. Within the same Zoho account. This is not a support request about "label". This is a suggested new feature to allow copies of
      • Creator Simplified #11: Create a custom button to download files

        Hey there! This time, let's see how to create custom buttons to download the files uploaded in the file upload field. Sample use-case A training app has a module that provides the materials for all the available courses. Students can click on the corresponding
      • Hide horizontal lines at bottom of form

        Hi I have a page with 3 forms embedded in html snippets. On each of the forms I can hide the submit button easily but I am left with the horizontal lines that bound that section and I cannot figure out to remove them (see below for the two sets of horizontal
      • Autosaving of Form Field

        HI can anyone suggest a way of autosaving or simulating an autosave function for a specific field in a form. The story is as follows. I have a bunch of technicians who write notes on how they do a repair. Sometimes they write for a couple of hours the troubleshooting process. If they click incorrectly, press ESC, Cancel or the browser crashes the information is lost which can be heartbreaking so my guys use notepad and then copy the information in. The only way around this is to click submit on the
      • Ask the Experts 26: Brighten every customer interaction with Zoho Desk all year long

        Hello everyone, Greetings and welcome to Ask the Experts 26. As we wrap up 2025, we are excited to invite you to the 26th episode of our Ask the Expert series. 🎄The Merry Metrics Edition = Best of Zoho Desk [Best Practices + Holiday Automation + Year-End
      • Pricing calculator

        Alright, so I'm trying to create a pricing calculator/pricing report generator to use in a cabinet shop. I did all the logic and such, and the calculator works. I have a few other things that I would need it to be able to do though, I'll do my best to
      • Bug Details

        In the Bug detail the milestoneid is missing
      • Is there a way to make a button scroll down?

        Looking to have a button on a landing page scroll down to another section on the page. Any recomendations outside of coding?
      • Stop completed task lists from disappearing?

        Is there any way to stop projects from making tasks lists disappear when all the tasks in the list are completed? That's one of those little things where we're constantly fighting the product. For instance we have some projects which are ongoing - no start and end date. We use Kanban view to show the various task lists. We don't want the kanban list to disappear every time the items on it happen to be closed out. Thanks
      • Allow customers to choose meeting venue and meeting duration on booking page

        My business primarily involves one-to-one meetings with my clients. Given the hybrid-work world we now find ourselves in, these meetings can take several forms (which I think of as the meeting "venue"): In-person Zoom Phone call I currently handle these
      • Booking outside of scheduled availability

        Is there a way for staff (such as the secretary) to book appointments outside of the scheduled availability? Right now to do this special hours must be set each time. There should be a quicker way. Am I missing something?
      • Operation Questions.

        Hello, I hope you are well. To explain a little, we are a company that sells services and products with a technical team responsible for installation and maintenance. Zoho FSM can be useful for the technical team, namely for the technical coordinator
      • Update date & time when a cell is edited

        Hi All, I am desiring to have a cell update with the current date and time when another cell is edited. Any ideas?  Thank you
      • Add "Groups" to "Share With" on Reports & All Entries

        Hi, On Forms we can share Publicly, with Specific Users And/Or Specific Groups or All Users. With Reports and All Entries we lack the "Groups" option, please add this as with many users this saves a lot of work. Thanks Dan
      • Add Pause / Resume Option to Zoho Quartz Recordings

        Hi Zoho Team, We would like to request an enhancement to Zoho Quartz recordings: the ability to pause and resume an ongoing recording. Current Limitation: At the moment, when recording an issue with Zoho Quartz, the recording continues even when we are
      • Custom Fields Not Showing Up in Invoice PDF Template Document Information

        I have added 2 custom fields under Sales > Invoices > Manage Custom Fields. They are set to show in all PDFs. However when I am editing my Invoice PDF template, i do not see the custom fields under Document Information.
      • ZOHO Books

        Hi there, Why after I upgrade my Zoho invoice > Books then i wanted to add plugin which i cannot do. Please advise.
      • How is Your eCommerce Experience w/Zoho Inventory?

        First off, I'm SUPER grateful for the advent of Zoho Inventory and now the Zoho Commerce Suite. Overall, Inventory is a great product, especially for customers without an eCommerce presence. For eCommerce companies (especially those shipping more than ~10 packages/day), however, there are certain drawbacks that keep my clients from moving over to Zoho Inventory: Cons: 1. Invoice + Package Creation from Shopify/Other eCommerce Integrations: Zoho Inventory makes the somewhat perplexing decision to
      • Simplify Mass Replies with Predefined Templates and Snippets

        Hello everyone, We are happy to introduce a new enhancement to Mass Reply that helps agents respond to customers quickly and consistently. With the addition of Email Templates and Snippets in the reply window, agents can use predefined messages while
      • Mapping custom fields from one module to another

        I have a custom field, "Subscription Period" that appears as a required field in every Opportunity (Potential). I want that field to appear on any Quotes derived from that Opportunity (and have created a custom field of the same name in Quotes for that
      • The Social Wall: November 2025

        We’re nearing the end of the year, and the holiday season is officially kicking in! It’s that time when sales peak and your social media game needs to be stronger than ever. We’re back with exciting new updates across AI, analytics, and the mobile app
      • How to update Multi File upload field

        Assume that i have a multi file upload field,how can i update the same field again?
      • Customer Address Not on Standard Invoice when Address is on Contact Record

        Hi,  I entered the customer billing and shipping address in Zoho CRM. I created an invoice in Zoho Books with the same customer contact. The contact is correctly in Zoho Books with the billing and shipping address. The invoice for the customer does not
      • Apply partial payments to invoices from the Banking Module

        We need this! Why is this not possible?
      • Welcome to the Zoho Show Community Forums page!

        Hello everyone, The Zoho Show community is a place for you to discuss and share anything and everything related to Zoho Show Presentations, our online presentation software. It includes users from all over the globe and all walks of life. Our community helps answer your Zoho Show questions with responses from other knowledgeable community members to give you the best experience creating and designing exciting presentations. Along the way, you'll meet recognized experts from our software team and
      • How can I convert an existing contact into a lead?

        I imported many contacts into ZOHO CRM. In order to select a few of them as leads, I want to mark or convert a few hundred as Leads. Who can I do that?
      • Price book functionality enhancement

        A common use of price books is to create a price book for a given customer level or contract with a specific company. Given that this is done at a company/customer level it would be great to see a way to associate a price book to a given customer and
      • Can we have 24x7 live support for Zohobooks ?

        Can we have 24x7 live support for Zohobooks ?
      • Important update about notification security in Business Messaging SDK

        As part of our ongoing effort to strengthen the security of notification data, we have enhanced how notifications are processed and protected in our applications. These improvements ensure that all notification related data follows the most up-to-date
      • Sync Zoho Marketing Automation with Zoho Forms

        I can't find a section where the integration between Zoho Marketing Automation and Zoho form is explained. And how form subscription works with opt-in and consents.
      • What is the difference between Zoho Campaigns and marketing hub?

        Zoho Campaigns is a permission-based email marketing tool for sending marketing emails and mass emails. Marketing Automation is a multichannel marketing automation tool that caters to organizations looking for tools to engage their users across multiple
      • Webhook not firing.

        I created a webhook using the Web UI, it looks very nice and the testing worked without an issue, but when i save/ update a ticket, the webhook is not firing. Here are the details of the web-hook i get from using the API "modifiedTime": "2019-10-22T09:23:37.380Z",
      • Next Page