Kaizen #18 - Ruby SDK

Kaizen #18 - Ruby SDK

Hello everyone!
Welcome back to another week of Kaizen!
This week, we will discuss the Ruby SDK.

What is the Ruby SDK for Zoho CRM?

Ruby SDK allows you to create client Ruby applications that you can integrate with Zoho CRM, effortlessly. It serves as a wrapper for the REST APIs, thus making it easier to use the services of Zoho CRM.

Here is a sample of how the SDK acts as a middle ware between Zoho CRM and a client Ruby Application.


What can you do with the Ruby SDK?
  • Exchange data between Zoho CRM and the client application where the CRM entities are modeled as classes.
  • Authenticate your application easily every time you sync data between Zoho CRM and your application, as the SDK takes care of generating the access/refresh tokens automatically.
Environment Setup
The client app must have the Ruby version 2.3.7 or above installed. Refer to Ruby Installation for the steps to install Ruby.

How to Start using the Ruby SDK?
Follow the below steps:
  • Step-1: Register your application (Self Client or Web-based client)
  • Step-2: Install the SDK
  • Step-3: Initialize the SDK
    3.a. Choose the token persistence method
    3.b. Set up the configuration dictionary
    3.c. Generate the tokens
  • Step-4: Connect to Zoho CRM through the available methods
Let us now discuss these steps in detail.

Step-1: Register your application

All the Zoho CRM APIs are authenticated by the OAuth2.0 standards. It is mandatory to authenticate your application with Zoho.
You can register your application either as a Self Client (single user app) or a web-based app (multiple users app).
1.a. Self Client
  1. Go to https://api-console.zoho.com.
  2. Click ADD CLIENT.
  3. Choose the Client Type as Self Client, and click CREATE.
  4. You will receive a client ID and a client secret upon successful registration.
1.b. Web-based Client
  1. Go to https://api-console.zoho.com.
  2. Click ADD CLIENT.
  3. Choose the client as Web based and click CREATE NOW.
  4. Specify the client name, homepage URL of your application's UI, and a redirect URI to which you want to redirect the users after they grant consent to your application.
  5. Click CREATE.

  6. Your Client ID and Client Secret will be displayed.
Step-2: Install the SDK

The Ruby SDK is available as a gem. 
Run the below command to install the Ruby SDK for Zoho CRM.

gem install ZCRMSDK

Step-3: Initialize the SDK 

Initializing the SDK involves the following steps.

  • Step 3.a - Choosing the token persistence method
  • Step 3.b - Setting up the configuration dictionary
  • Step 3.c - Generating the tokens

3.a. Token Persistence
Your application should retain tokens (grant, access, and refresh tokens) to automate the process of data transfer between your Ruby application and Zoho CRM.

You can persist (store) the tokens in three ways.
a. MySQL Persistence (default)
b. File Persistence
c. Custom DB Persistence

a. MySQL Persistence
When you want to store the tokens in the MySQL DB, ensure that MySQL2 is installed.
Run the below command to install MySQL2.

gem install mysql2 -v 0.5.2

For this type of persistence, you must include the following keys in the configuration dictionary (discussed in the next section), along with other mandatory keys.

"mysql_username":"root",
"mysql_password":"*****",
"mysql_port":"port_number"

Note
When you use MySQL persistence, ensure that
  • MySQL runs in the same machine serving at the mentioned port. (by default 3306).
  • There is a database named zohooauth.
  • There is a table name oauthtokens with the columns useridentifier (varchar(100)), accesstoken (varchar(100)), refreshtoken (varchar(100)) and expirytime (bigint).

b. File Persistence
If you want to store the tokens in a file, you can create a file named zcrm_oauthtokens.txt and provide the absolute path of the folder containing this file in the below key of the configuration array.

"token_persistence_path":"path_to_the_folder_containing_the_txt_file"

If you do not create this file, the SDK itself creates this file in the path you have specified, and persists the token there.
Note: This method is recommended only for self client apps.

c. Custom DB Persistence
To use this method, you need to provide the following keys in the configuration dictionary.

"persistence_handler_class_path":"absolute path to the custom DB implementation"
"persistence_handler_class":"class name of the custom implementation".

You can use the inbuilt ZohoPersistenceHandler interface and include the following custom functions.

  • saveOAuthData(ZohoOAuthTokens tokens)
  • deleteOAuthTokens($userEmailId)
  • getOAuthTokens($userEmailId)
Note
The order of precedence for token persistence is custom, file, and DB persistence. That is, if you provide the details for custom persistence (in persistence_handler_class_path) and file persistence details (in token_persistence_path), then custom persistence is given priority over file.

3.b. Configuration dictionary
The below tables contains the list of keys you must include in the configuration dictionary based on the type of persistence.

Mandatory Keys

File Persistence
MySQL Persistence
Custom DB Persistence
client_id
client_id
client_id
client_secret
client_secret
client_secret
redirect_uri
redirect_uri
redirect_uri
token_persistence_path
db_username
persistence_handler_class
-
db_password
persistence_handler_class_path
-
db_port
-
current_user_email
current_user_email
current_user_email

Optional Keys

File Persistence
MySQL Persistence
Custom DB Persistence
application_log_file_path
application_log_file_path
application_log_file_path
log_in_console
log_in_console
log_in_console
sandbox
sandbox
sandbox
access_type
access_type
access_type
accounts_url
accounts_url
accounts_url
api_base_url
api_base_url
api_base_url
api_version
api_version
api_version

Where,
  • client_id, client_secret, and redirect_uri - Client details you received after registering your application. For self client apps, you can pass a dummy value for the redirect uri.
  • token_persistence_path - The relative path to store the OAuth tokens in the zcrm_oauthtokens.txt file. This key is mandatory if you want to use file persistence.
  • db_username, db_password, db_port - The MySQL username, password, and the port, respectively.
  • persistence_handler_class - Name of the class of the custom implementation for persistence. This key is mandatory if you want to use custom persistence.
  • persistence_handler_class_path - The absolute path to the custom DB implementation (.rb file).
  • application_log_file_path - The absolute path to log the exceptions during the usage of the SDK.
  • log_in_console - To print the exceptions on the console screen, when set as "true".
  • sandbox - Boolean key to make API calls to the sandbox environment. The value true makes API calls to the sandbox. Default value is false.
  • access_type - Must be set as offline as the SDK does not support online OAuth client, now.
  • accounts_url - The domain-specific accounts URL from which you generate the tokens.
    This key is mandatory when the user is not in the "com" domain.
    For US:
    https://accounts.zoho.com
    For EU:
    https://accounts.zoho.eu
    For CN:
    https://accounts.zoho.com.cn
    For IN:
    https://accounts.zoho.in
  • api_base_url - The domain-specific API URL from which you make API calls. For users from domains other than the US, this key is mandatory.
    For US:
    https://www.zohoapis.com
    For EU:
    https://www.zohoapis.eu
    For CN:
    https://www.zohoapis.com.cn
    For IN:
    https://www.zohoapis.in
  • api_version - Represents the version of the CRM APIs. The value is v2.
  • current_user_email - The email ID of the current user. You must set this either in the configuration array or ZCRMSDK::RestClient::ZCRMRestClient.current_user_email = "current user email id".

Below is a configuration dictionary with all the keys. 

config_details = { 'client_id' => 'xxxxx', #mandatory
'client_secret' => 'xxxxxx', #mandatory
'redirect_uri' => 'https://www.zoho.com', #mandatory
'api_base_url' => 'https://www.zohoapis.com', #optional, default is https://www.zohoapis.com
'accounts_url' => 'https://accounts.zoho.com', #optional, default is https://accounts.zoho.com
'current_user_email' => 'abc@xyz.com', #mandatory (should be either set in config array or ZCRMSDK::RestClient::ZCRMRestClient.current_user_email = "current user email id" )
'api_version' => 'v2', #optional,default is v2
'sandbox' => 'false', #optional default is sandbox
'application_log_file_path' => "/Users/xxxx/Desktop/log.log", #optional, absolute path of log file
'log_in_console' => 'true', #optional default is false, to log on the console
'persistence_handler_class_path' => 'absolute/path/to/customClass.ruby', #absolute path to the custom db implementation
'persistence_handler_class' =>'classname', #name of the class
'token_persistence_path'=>'relativepath/to/zcrm_oauthtokens.txt', #for file persistence
'db_username' => 'username', #optional, default root
'db_password' => 'password', #optional, default ''
'db_port' => 'port_number', #optional, default 3306
}

Now that you have created and registered your app with Zoho, you must authenticate it. 
Pass the configuration dictionary in the method ZCRMRestClient.init(config) and authenticate your app.

3.c. Generating the tokens

As the V2 Zoho CRM APIs follow the OAuth2.0 protocol, it is mandatory to authorize the OAuth2.0 app before using the SDK functions.
You can generate an access token from a grant token.
You can generate the grant token in two ways based on the type of client.

For Self Client Applications
  • Go to Zoho Developer Console.
  • Select your Self Client.
  • Provide the necessary scopes separated by commas, along with the scope aaaserver.profile.READ.
  • Select the Time Duration from the drop-down. This is the time the grant token is valid for.
  • Provide a description for the scopes. Click GENERATE.
  • Copy the grant token.

For Web-based Applications

It is the responsibility of your client app to generate the grant token for the users trying to login.
Your Application's UI must have the Login with Zoho option to open the grant token URL of Zoho, which would prompt for the user's OAuth2.0 authorization.
Upon the successful login of the user, the grant token will be sent as a parameter to your registered redirect URL.

Generating an access token from the grant token
Use the below code snippet in your main class.

client = ZCRMSDK::OAuthClient::ZohoOAuth.get_client_instance
grant_token = 'grant_token'
client.generate_access_token(grant_token)
Note
  • The code snippet to generate the access token from the grant token is valid only once per grant token. If the grant token expires before you generate the access token, you must generate a new grant token only.
  • Generating access and refresh tokens is a one-time process. After the tokens are generated the first time, the SDK persists them based on the keys defined in the configuration dictionary, and refreshes the access token as and when required.

Step-4: Connect to Zoho CRM through the available methods
Here is a sample to get a specific user's details. You can find the code for this sample in the attachment.


The isTokenGenerated Method

def self.is_token_generate(user)
    tokens = ZCRMSDK::OAuthClient::ZohoOauth.get_persistence_instance.get_oauth_tokens(user)
    unless tokens.nil?
        return true
    end
    rescue Exception => e
        return false 
  end
You need to add this method to check if the access token has already been generated or not. It returns a Boolean value.
  • true - The access token has already been generated. 
  • false - The access token has not been generated previously, thus, it shifts the control to the code snippet that leads to access token generation.
For more sample codes, refer to our SDK guide.
We hope you found this post useful. Stay tuned for more!

Cheers!




    Access your files securely from anywhere









                          Zoho Developer Community




                                                • Desk Community Learning Series


                                                • Digest


                                                • Functions


                                                • Meetups


                                                • Kbase


                                                • Resources


                                                • Glossary


                                                • Desk Marketplace


                                                • MVP Corner


                                                • Word of the Day


                                                • Ask the Experts





                                                          Manage your brands on social media



                                                                Zoho TeamInbox Resources



                                                                    Zoho CRM Plus Resources

                                                                      Zoho Books Resources


                                                                        Zoho Subscriptions Resources

                                                                          Zoho Projects Resources


                                                                            Zoho Sprints Resources


                                                                              Qntrl Resources


                                                                                Zoho Creator Resources



                                                                                    Zoho CRM Resources

                                                                                    • CRM Community Learning Series

                                                                                      CRM Community Learning Series


                                                                                    • Kaizen

                                                                                      Kaizen

                                                                                    • Functions

                                                                                      Functions

                                                                                    • Meetups

                                                                                      Meetups

                                                                                    • Kbase

                                                                                      Kbase

                                                                                    • Resources

                                                                                      Resources

                                                                                    • Digest

                                                                                      Digest

                                                                                    • CRM Marketplace

                                                                                      CRM Marketplace

                                                                                    • MVP Corner

                                                                                      MVP Corner







                                                                                        Design. Discuss. Deliver.

                                                                                        Create visually engaging stories with Zoho Show.

                                                                                        Get Started Now


                                                                                          Zoho Show Resources


                                                                                            Zoho Writer Writer

                                                                                            Get Started. Write Away!

                                                                                            Writer is a powerful online word processor, designed for collaborative work.

                                                                                              Zoho CRM コンテンツ



                                                                                                Nederlandse Hulpbronnen


                                                                                                    ご検討中の方




                                                                                                          • Recent Topics

                                                                                                          • Form name incorrectly displayed in URL

                                                                                                            Hi, I have a form I created called "Design Request form". It displays this way everywhere I look. However, in the URL, it shows up as "DesignJobRequestFormFINAL011325PROOFV1B" and I'm not sure why. I can't find where to fix this. Does anyone have any
                                                                                                          • I can't receive mail

                                                                                                            Hello, I can't receive e-mail. I no longer receive e-mails to the e-mail I received for ​my site. I also edited the DNS settings, but it doesn't work at all.
                                                                                                          • 1‑to‑1 invite missing post-setup (needs re-invite) vs channel invite auto-joins without business prompt

                                                                                                            1. Zoho Cliq 1‑to‑1 external invite The inviter sent a 1‑to‑1 invite to an invitee who didn’t have a Cliq account. After the invitee completed account setup and created a business/organization, the website redirected them to Cliq, where they opened Cliq
                                                                                                          • 【開催報告】東京 ユーザー交流会 Vol.3 2025/10/17 Zoho サービスの活用促進を外部ツールとの連携で実現!

                                                                                                            ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 10月17日(金)に新橋で「東京 ユーザー交流会 Vol.3」を開催しました。ご参加くださったユーザーの皆さま、ありがとうございました! この投稿では、当日のセッションの様子や使用した資料を紹介しています。残念ながら当日お越しいただけなかった方も、ぜひチェックしてみてください😊 ユーザー活用事例セッション:Zoho Flowと決済システムの連携 あみろくの岡島さんに、Zoho サービスの活用事例として、Zoho Flow を活用した外部サービスとの連携事例をご共有いただきました。
                                                                                                          • received email opens in a new tab every time I log in

                                                                                                            as per the title: since about when I first made my email account, every single time Ive logged in to view my inbox, a new tab opens for an email I viewed once as if restoring a closed session. I thought I just didnt understand the "starting up" settings
                                                                                                          • Engage with your customers at scale using WhatsApp Marketing Template messages

                                                                                                            Hi everyone, To make it easier for organizations to communicate with customers, Desk now allows you to send individual, mass, and bulk WhatsApp template messages from both the Ticket and Contact modules. How is this going to benefit your business? WhatsApp
                                                                                                          • Zoho Desk iOS and Android app update: AI powered: Reply Assistance and Refine Messages on IM module.

                                                                                                            Hello everyone! We are excited to introduce new AI powered features on the IM module of the Zoho Desk app. Reply Assistance: Reply Assistance generates suggested responses for incoming chat messages, which you can directly insert into the conversation
                                                                                                          • Importation Tickets error

                                                                                                            Hi, I'm newbie here 🤓 So, i'm importing data from csv, but when I try advance to mapping fields the importer tool show this message: Previously I try import, other data, and not show errors in this step. Some ideas? Best Regards,
                                                                                                          • Missing information data Zoho inventory

                                                                                                            there some missing data in Zoho inventory connection. pick list stock counts bin location we have requested it via mail and the support team doesn’t gove feedback. has anyone achieve to get these info or to ask other ya les
                                                                                                          • Showing description in timesheet and timelogs.

                                                                                                            I am wondering if it’s possible in version 5 of Zoho People to have the description show by default or with a manipulation on the user’s part. Let me show you what I mean. As you can see this is the view for the users. Now if they want to see the full
                                                                                                          • Direct “Add to Google Calendar” Option in Zoho Meeting

                                                                                                            Hello Zoho Meeting Team, Hope you are doing well. We would like to request an enhancement related to the “Add to Calendar” functionality in Zoho Meeting. Currently, when we open Zoho Meeting and view our meetings under My Calendar, there is an Add to
                                                                                                          • Update on the client portal URL for Guest users

                                                                                                            We’re updating the way Guest users access their Connect network. As part of this change, all client organization portals used by Guest users will now be accessible through a dedicated domain specific to each data center. The access URLs mentioned here
                                                                                                          • Add Flexible Recurrence Options for Meeting Scheduling in Zoho Cliq (e.g., Every 2 Weeks)

                                                                                                            Hello Zoho Cliq Team, We hope you are doing well. Currently, when scheduling a meeting inside Zoho Cliq, the recurrence options are limited to Daily, Weekly, Monthly, and Yearly. There is no ability to set a meeting to occur every X weeks — for example,
                                                                                                          • Sales Order, Invoice and Payment numbers

                                                                                                            Hi zoho friends, it is me again, the slow learner. I'm wondering if there is a way to have it so the Sales order, invoice and payment numbers are all the same? It would be easier for me if they were the same number so there is not so many reference numbers
                                                                                                          • Ask the Experts 24: Analytics, data administration, and mobile experience with Zoho Desk

                                                                                                            Hello Everyone! Welcome back to the Ask the Experts(ATE) series! We were so focused on our Autumn 2025 release that we didn't host an ATE session last month. In this month's ATE, we'd like to expand our areas for discussion: we'd like to listen to your
                                                                                                          • Workaround: openURL in Blueprints - An alternate approach

                                                                                                            There is a roundabout way to open a URL in blueprints after a save event. By using the 'onBeforeMandatoryFormSave' in Client Script, you can open an external URL. Now, the problem is, this is designed to be run BEFORE the blueprint is saved, not after,
                                                                                                          • MTD SA in the UK

                                                                                                            Hello ID 20106048857 The Inland Revenue have confirmed that this tax account is registered as Cash Basis In Settings>Profile I have set ‘Report Basis’ as “Cash" However, I see on Zoho on Settings>Taxes>Income Tax that the ‘Tax Basis’ is marked ‘Accrual'
                                                                                                          • Migrate file from Single File Upload to Multi File Upload

                                                                                                            Dears, I have created a new field Multi File Upload to replace the old Single File Upload field. I'd like to ask you guys what is the best way to migrate the files to the new field?
                                                                                                          • Open "Live Chat" from a hyperlink?

                                                                                                            Hi, I often write paragraphs and text on our company website, and usually say you can get in touch with us via live chat. Can the chat window be triggered to pop open without clicking the chat graphic in the bottom window, and use it in a hyperlink? ie:
                                                                                                          • Zoho Sites search box

                                                                                                            Is there a Search box that can be added to a Zoho site? It would be for searching within the site only.
                                                                                                          • What stops me from packaging and shipping an order when the inventory is negative?

                                                                                                            It seems if the inventory value is negative, that Zoho Inventory should not allow me to create a Package and Ship it.   But, there seems to be nothing to stop me from doing that other than when I go to physically package the item and realize that there is no stock. There also seems to be nothing on the screen that even indicates to me that I should not package and ship.  To me this is the fundamental point of an inventory system.  Am I doing something wrong?   
                                                                                                          • Conditional formatting based on another field

                                                                                                            Hi I have two fields on my form stage 1 complete and stage 1 deadline.  I am trying to setup conditional formatting so that if stage 1 complete is after stage 1 deadline the record is highlighted in red. I need both stage 1 complete and stage 1 deadline
                                                                                                          • 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
                                                                                                          • Is there API Doc for Zoho Survey?

                                                                                                            Hi everyone, Is there API doc for Zoho Survey? Currently evaluating a solution - use case to automate survey administration especially for internal use. But after a brief search, I couldn't find API doc for this. So I thought I should ask here. Than
                                                                                                          • Using IMAP configuration for shared email inboxes

                                                                                                            Our customer service team utilizes shared email boxes to allow multiple people to view and handle incoming customer requests. For example, the customer sends an email to info@xxxx.com and multiple people can view it and handle the request. How can I configure
                                                                                                          • The sending IP (136.143.188.15) is listed on spamrl.com as a source of spam.

                                                                                                            Hi, it just two day when i am using zoho mail for my business domain, today i was sending email and found that message "The sending IP (136.143.188.15) is listed on https://spamrl.com as a source of spam" I hope to know how this will affect the delivery
                                                                                                          • Changing a Single-Line Text field into a Multi-line Field without losing data

                                                                                                            Is it possible to change a Single-Line Text field into a Multi-line Field without losing data. I have a module with data for which I would like to change a single-line field into a multi-line field but I'm worried it might delete the pre-existing da
                                                                                                          • Webhook - Google Sheets

                                                                                                            I have 2 forms that are both integrated with Google Sheets. I've set up a webhook to pull form 1 data from Google Sheets to prefill data in Form 2. The issue I have is that the forms name fields are First Name & Last Name but the Google sheets integration
                                                                                                          • Verified Mark Certificate

                                                                                                            Hello Dears, Can anyone help and check my mail or direct me to the desired person who can add the verification tag to my mail https://www.zoho.com/blog/mail/email-authentication-with-bimi.html
                                                                                                          • Appointment booking is temporarily unavailable

                                                                                                            Embeded Zoho booking page in my WordPress website. When someone starts a booking, after choosing time and date, an error appears before payment - "Appointment booking is temporarily unavailable due to restricted settings." Used the embeded code given
                                                                                                          • Cannot connect to 365 business calendar and Teams, says personal but it is not.

                                                                                                            hi I have a number of users connected to their 365 business accounts. Adding a new user and it thinks hes got 365 personal edition. He does not.... Anyone know what's going on. Trying for days now. Bookings go into his MS calendar but as its thinks its
                                                                                                          • Limited review (/questions) for Bookings 2.0

                                                                                                            Hi all, I'm writing this review of Bookings 2.0 for two reasons: 1) it may be of interest to others, and 2) I'd like to be corrected if I'm wrong on any points. It's a very limited review, i.e. the things that have stood out as relevant, and particularly
                                                                                                          • Zoho Bookings - Reserve with Google

                                                                                                            Does Zoho Bookings plan to to integrate with Reserve with Google?
                                                                                                          • Tip #3: How to change your booking page language

                                                                                                            Displaying your booking page in your target audience's language can greatly increase customer satisfaction. By speaking their language, you will help customers feel more comfortable scheduling with you and create a stronger connection with them. Let's
                                                                                                          • Bigin Android app update: Zoho Books integration

                                                                                                            Hello everyone! We’re excited to introduce Zoho Books integration on the Bigin Android App. Once the integration is completed in the web(bigin.zoho.com), the Zoho Books tab will be visible in detail View of Contacts, Companies, and Pipeline records. The
                                                                                                          • Bigin Android app update: Alerts while creating tasks outside of working days, conflicting events and calls.

                                                                                                            Hello everyone! In the most recent version of the Bigin Android app, we have brought in support to display an alert if task is being scheduled outside of the working days. Also, when scheduling an event or call in the Activities module, a conflict alert
                                                                                                          • Bigin update: Link email messages to pipeline records.

                                                                                                            Hello everyone! In the latest version of the Bigin iOS(v1.11.9) and macOS(1.8.9) app, we have brought in support for an option to link email to pipeline records. This helps you to view emails specific to a deal, especially when a contact is associated
                                                                                                          • Bigin Android app update: Custom buttons and widgets

                                                                                                            Hello everyone! We are excited to introduce custom buttons and widgets on the Bigin Android app. Widgets: A widget is a customizable UI component in Bigin that improves efficiency and user experience. It lets businesses embed components, streamline interactions,
                                                                                                          • Biometric Access Support on Zoho Vault Desktop App

                                                                                                            Is there any plans to add biometric authentication (fingerprint, face recognition) for Vault desktop apps (Windows/macOS) to enhance security and ease of access. I would love to hear other members view on this
                                                                                                          • Zoho Sheet for Desktop

                                                                                                            Does Zoho plans to develop a Desktop version of Sheet that installs on the computer like was done with Writer?
                                                                                                          • Next Page