Kaizen #167 - Configuration and Initialization of Zoho CRM Python SDK (V7) for different client types

Kaizen #167 - Configuration and Initialization of Zoho CRM Python SDK (V7) for different client types


Hello everyone!

Welcome back to another week of Kaizen!

Zoho CRM Python SDK allows developers to integrate Python applications with Zoho CRM. In today's Kaizen post, we will explore how to initialize and configure the SDK for both self-clients and server-based clients.

A self-client is an application type used when you want to access your own CRM account data or set up app-to-app communication in the backend without user interaction. Self clients operate solely in the backend, making them suitable for automating tasks or data synchronization. In this scenario, the developer is both the resource owner and the client. Self-clients are ideal for scenarios such as syncing data between Zoho CRM and a legacy product management system. 

A server-based client is designed for applications that will be used by multiple Zoho CRM organizations, typically solving specific use cases for various users. These applications require both a dedicated backend server and a web UI. Server-based clients handle the authorization process and application logic, redirecting users to Zoho for authorization via a web browser. Users grant permission for the app to access their CRM data, and the application consumes this data on behalf of authorized users. This type of client is suitable for developing apps that provide specialized functionality to multiple Zoho CRM accounts, such as lead management systems or custom reporting tools.

For more information on the different client types, refer to our Kaizen post on Client Types in Zoho Developer Console.

Prerequisites

Before we go into detail about the SDK initialization process, ensure that you have the following prerequisites:
  • A Zoho CRM account and access to the Zoho API Console.
  • An IDE (e.g., PyCharm) installed in your system. In this post, we will be using PyCharm for the illustration purposes.
  • Python 3.x installed on your system or the client app.

Zoho CRM Python SDK Configuration

Configuration
Description
environment
mandatory
Specify the Zoho CRM domain and environment to make API calls to. Options include USDataCenter, EUDataCenter, INDataCenter, CNDataCenter, AUDataCenter, with environments like PRODUCTION(), DEVELOPER(), SANDBOX().

token
mandatory

Contains user authentication details. Used to create an OAuthToken instance with client credentials and tokens.
Supports different authentication flows:
Grant Token Flow: Uses a grant token to generate and persist access and refresh tokens.
Refresh Token Flow: Uses a refresh token to generate and persist access tokens.
Access Token Flow: Directly uses an access token for making API calls.
ID Flow : Uses the ID from the persisted token file/DB to make API calls. This method is applicable only after the SDK has been initialized at least once using a grant token, access token, or refresh token. It is not valid for the initial setup but can simplify subsequent operations by bypassing the need for other token details.
store
optional
Manages token persistence, which is the storage and retrieval of authentication tokens. Options include:
DBStore: Stores tokens in a database (e.g., MySQL).
FileStore: Stores tokens in a file.
Custom Store: Allows the implementation of custom storage logic.
If not specified, defaults to file storage in the current working directory.
logger
optional
Configures SDK logging. Allows setting log level (e.g., INFO, DEBUG, ERROR) and file path for SDK operation logs. Helps in troubleshooting and monitoring operations.
sdk_config
optional
Contains additional SDK-wide settings:
auto_refresh_fields: Enables/disables automatic refreshing of module fields. If set to true, the SDK will refresh modules and fields metadata every hour. If set to false, the metadata should be manually refreshed.
pick_list_validation: Enables/disables validation of picklist field values.
If set to true, the SDK checks user inputs against the defined picklist values. Invalid inputs, i.e., values not present in the picklist, will cause the SDK to throw an error.
 connect_timeout: Sets the maximum time to wait for connection establishment.
read_timeout: Sets the maximum time to wait for data retrieval.
resource_path
optional
Specify the directory path for storing module field information cache. 

Initializing Python SDK for Self-Clients

To initialize the SDK for a self-client:
1. Register the Client: In the Zoho API Console, create a self-client by navigating to the Self-Client section. This client is used for applications accessing only your own CRM data.

2. Generate Grant Token: After registering the client, manually generate a grant token from the API Console. Specify the necessary scopes, such as ZohoCRM.modules.ALL, based on the data you need to access.
Note: The grant token is valid for a short duration, typically 3–10 minutes, and is used to generate access and refresh tokens, using which one can access the CRM data.



3. Install the Python SDK
Install the Zoho CRM Python SDK in your Python project. The latest SDK version supports V7 of Zoho CRM APIs. 

4. Exchange Grant Token for Access and Refresh Tokens
Use the SDK in your code to exchange the grant token for access and refresh tokens. The SDK provides built-in methods to handle this process, and it will automatically manage token generation and persistence after initialization.



5. Access CRM Data:
With the tokens in place, your backend application can access and interact with Zoho CRM data programmatically, enabling tasks like data synchronization.
Here is a sample code for initializing Python SDK for a self-client.



Initializing Python SDK for Server-Based Clients

Before initializing the SDK for a server-based client, you must register your application in the Zoho API Console.


After registering the client, you can proceed with initializing the SDK for the server-based client. When using a server-based client with the Zoho CRM Python SDK, you have two options for handling authentication:
  • Generate the grant token manually and let the SDK manage the rest, including access token generation and refresh operations.
  • Write custom code to handle the entire OAuth process, from grant token generation to subsequent API calls. This approach is commonly used in server-based applications where automation and granular control over the flow are essential.
In the sample code, we demonstrate a complete implementation of initialization for a server-based client. The code includes generating the grant token for the required scopes, initializing the SDK with the tokens, and fetching records from Zoho CRM.

Understanding the Sample Code

The code defines an HTTP server that automates the OAuth process and interacts with Zoho CRM APIs. Here's a breakdown of its key functionalities:
Grant Token Generation:
When the user accesses http://127.0.0.1:8081/login, the server redirects them to Zoho's authorization page with the necessary OAuth scopes that is defined in the code.
After successful authorization, Zoho redirects the user to the redirect URL configured for the client in the API console, with a grant token and other parameters. The code parses this redirected URL to extract the grant token and the associated location.
SDK Initialization:
Using the extracted grant token, the SDK generates access and refresh tokens. These tokens are securely stored in a data store (FileStore in this case) using a unique identifier that corresponds to the user-org combination.


If no existing entry for the user-org combo is found in the token store, a new record is created with the user's grant, access, refresh tokens, and other details. When the same user logs in again, the SDK checks the token store for an existing entry. If an entry exists, the grant, access, and refresh tokens are updated while retaining the ID and user details. This ensures that no duplicate entries are created in the token store. Please note that in the background, the SDK retrieves the organization and user information to uniquely map the tokens. Without these scopes, the SDK cannot determine which user-org combination a token belongs to. Consequently, multiple entries might be created for the same user

API Call to Fetch Leads:
If the initialization is successful, the user will be redirected to http://127.0.0.1:8081/records. At this endpoint, the server uses the get_records method to fetch Leads data from the account. The response is processed, and the lead details (ID, Last Name, Company) are displayed as an HTML table.


We hope you found this post helpful and informative. By now, you should have a clear understanding of how to initialize and configure the Zoho CRM Python SDK for both self-clients and server-based clients.

Stay tuned for more insights, tutorials, and practical examples in our upcoming Kaizen posts. Your feedback matters to us. Let us know your thoughts or questions in the comments below. Until next time, happy coding!



Idea
Previous Kaizen: Kaizen #166 - Handling Query Variables in Zoho CRM | Kaizen Collection: Directory


    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



                                                            • Sticky Posts

                                                            • Kaizen #226: Using ZRC in Client Script

                                                              Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
                                                            • Kaizen #222 - Client Script Support for Notes Related List

                                                              Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
                                                            • Kaizen #217 - Actions APIs : Tasks

                                                              Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
                                                            • Kaizen #216 - Actions APIs : Email Notifications

                                                              Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
                                                            • Kaizen #152 - Client Script Support for the new Canvas Record Forms

                                                              Hello everyone! Have you ever wanted to trigger actions on click of a canvas button, icon, or text mandatory forms in Create/Edit and Clone Pages? Have you ever wanted to control how elements behave on the new Canvas Record Forms? This can be achieved


                                                            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

                                                                                              Get Started. Write Away!

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

                                                                                                Zoho CRM コンテンツ



                                                                                                  Nederlandse Hulpbronnen


                                                                                                      ご検討中の方




                                                                                                              • Recent Topics

                                                                                                              • Using MPN across multiple SKUs and inventory tracking

                                                                                                                I have several different SKU's that share a common MPN and would like to track inventory by MPN. SKU1 has MPN1 assigned SKU2 has MPN1 assigned Here is an example If I start with 5 of MPN 1 in stock I want each SKU1 and SKU2 to show as 5 in stock, If I
                                                                                                              • Unable to Access Application:

                                                                                                                Whenever I try to access my application from the desktop, say I am editing it and want to test something in the desktop environment I get: An error has occurred. An internal error has occurred. Please check the URL , or try refreshing the page I can edit
                                                                                                              • PDF Annotation is here - Mark Up PDFs Your Way!

                                                                                                                Reviewing PDFs just got a whole lot easier. You can now annotate PDFs directly in Zoho Notebook. Highlight important sections, add text, insert images, apply watermarks, and mark up documents in detail without leaving your notes. No app switching. No
                                                                                                              • CRM gets location smart with the all new Map View: visualize records, locate records within any radius, and more

                                                                                                                Hello all, We've introduced a new way to work with location data in Zoho CRM: the Map View. Instead of scrolling through endless lists, your records now appear as pins on a map. Built on top of the all-new address field and powered by Mappls (MapMyIndia),
                                                                                                              • Link Contacts to Billed Accounts

                                                                                                                Hello, I want to do a survey on all my customers of 2025. For that I want to select all contacts linked to accounts who where billed in 2025. How to I create this link to I can then use Zoho Survey with this database of contacts?
                                                                                                              • Zoho Creator customer portal limitation | Zoho One

                                                                                                                I'm asking you all for any feedback as to the logic or reasoning behind drastically limiting portal users when Zoho already meters based on number of records. I'm a single-seat, Zoho One Enterprise license holder. If my portal users are going to add records, wouldn't that increase revenue for Zoho as that is how Creator is monetized? Why limit my customer portal to only THREE external users when more users would equate to more records being entered into the database?!? (See help ticket reply below.)
                                                                                                              • CRM function REST API response format

                                                                                                                Is there a way to control the JSON response returned by the CRM function REST API? If I call a function using either OAuth or an API key it returns a 200 OK response with a string in the format shown below. I am using a particular feature of an external
                                                                                                              • Cannot see Application from Lookup field

                                                                                                                Hi all, I am trying to access data for an application on our account via a lookup field; however, the application doesn't appear in the dropdown at all. Can anyone shed any light on this, please? I have asked Zoho support; however, they're just as confused,
                                                                                                              • Cannot see correct DNS config for mail after moving domain to another provider

                                                                                                                I have moved my domain from one provider to another and after that zoho mail stopped working (expected). Problem is, zoho mail admin panel still shows (10 hours after move) that all records are correct while I haven't changed anything in my domain DNS
                                                                                                              • Zoho CRM Meetings Module Issues

                                                                                                                We have a use-case that is very common in today's world, but won't work in Zoho CRM. We have an SDR (Sales Development Rep) who makes many calls per day to Leads and Contacts, and schedules meetings for our primary Sales Reps. He does this by logging
                                                                                                              • Zoho Books integration sync from Zoho CRM does not work

                                                                                                                Hi Zoho Community & Zoho Support We just tried to get a sync some products into Zoho Books from CRM using the native sync and we're getting an error: "It looks like some mandatory fields you're trying to map are empty. Please provide valid field names
                                                                                                              • P & L Sub-categorized accounts

                                                                                                                How can I show sub-categorized Income and Expense accounts on the P & L report?
                                                                                                              • Report showing Bill Details with Project and Sales Invoice Number

                                                                                                                Hi There, I am hoping that someone can help, I am looking for report that can show the bill and expense details along with project its as assigned to and the invoice number that the sales has been raised in. The goal is I can filter a customer/project
                                                                                                              • Advanced Payment for Inventory Items with serial numbers

                                                                                                                Hello, We sell equipment that we track the unique serial numbers on using Sales Orders. We can charge the customers an advanced payment, then the balance on delivery. We cannot figure out a way to do this in Books/Inventory: - Cannot part invoice a SO
                                                                                                              • Is it possible to restrict ZCRM user to see only custom views created by administrator

                                                                                                                I have segmented data in my CRM and I want to allow different users to be able to see only parts of it based on some criteria. I've tried to create and share a custom view, but then there is always an option for user to see all open lead for example.
                                                                                                              • Issues Logging into ZOHO

                                                                                                                Hello, one of my coworkers is having issues logging into ZOHO, she has requested a code when entering and the email is correct but she has not received the code. can you help us with this?
                                                                                                              • Google Fonts Integration in Pagesense Popup Editor

                                                                                                                Hello Zoho Pagesense Team, We hope you're doing well. We’d like to submit a feature request to enhance Zoho Pagesense’s popup editor with Google Fonts support. Current Limitation: Currently, Pagesense offers a limited set of default fonts. Google Fonts
                                                                                                              • Add Popup Rejection Metrics to Reports

                                                                                                                Hello Zoho PageSense Team, We would like to request improved reporting for popup interactions. Current Limitation: PageSense currently provides conversion data, but there is no clear visibility into: Popup rejections Popup closes (✕ button clicks) Dismissals
                                                                                                              • Ability to Reset / Reinitialize Popup Cookies

                                                                                                                Hello Zoho PageSense Team, We would like to request the ability to manually reset popup cookies. Current Limitation: At the moment, it is not possible to initiate a new popup cookie from the our side. Visitors who rejected or closed a popup will not see
                                                                                                              • Control Popup Cookie Expiration Duration

                                                                                                                Hello Zoho PageSense Team, We would like to request an enhancement related to popup cookie management. Current Limitation: Currently, PageSense popup cookies remain active for 365 days, and this duration cannot be modified by us. If a visitor closes or
                                                                                                              • Clone / Export Popup Design Across PageSense Projects

                                                                                                                Hello Zoho PageSense Team, We hope you’re doing well. We would like to request an enhancement that allows popup designs to be reused across different PageSense projects. Problem Statement: Currently, Zoho PageSense allows popups to be duplicated only
                                                                                                              • Are there settings for hyperlinks?

                                                                                                                Clicking a hyperlinked cell in Sheet creates this little pop-up with the actual hyperlink inside. Is it possible to have a 1-click link where if you click the cell it opens the link directly with no pop-up?
                                                                                                              • Automatically include all ticket attachments in the ticket resolution email

                                                                                                                Hello Zoho Community, We are implementing Zoho Desk in a real customer-facing production environment and have run into a limitation that is becoming a blocking requirement for our clients. The problem When a ticket is closed or resolved, Zoho Desk sends
                                                                                                              • adding several team members to an Opportunity

                                                                                                                How can we add several team members to one opportunity for collaboration? I have researched and only found something called Deal Team which I cannot find in my CRM to configure.
                                                                                                              • Finding text within a ticket: Expand All or Search this Ticket

                                                                                                                The auto-collapse feature within a ticket is nice for screen scrolling, however it makes it difficult to find text within the ticket if the email is collapsed. In fact you cannot find text if it is collapsed. I would like to propose a feature that allows
                                                                                                              • Books & Desk. Client mapping

                                                                                                                Hi, I’ve been using Zoho Books for several years and am now looking to improve my customer service. I'm experimenting with Zoho Desk and want to sync and map my client data from Zoho Books. However, it seems that mapping requires both contacts to have
                                                                                                              • Bulk update Profile Permissions

                                                                                                                Dears, What should we do if we add new forms or reports and need to update more than 20 permissions? Updating them one by one feels pretty harsh, doesn’t it?
                                                                                                              • String handling

                                                                                                                If I cut a currency string from a quote and try and paste it into the Deal "Amount", it will fail unless I manually delete any commas. Dollar signs are no problem, but comma's seem to fail. Please correct this Input Validation error.
                                                                                                              • text length in list report mobile/tablet

                                                                                                                Is there a way to make the full text of a text field appear in the list report on mobile and tablet? With custom layouts, the text is always truncated after a certain number of characters.
                                                                                                              • email address somehow still not verified (?!)

                                                                                                                L.S. After creating a new email template in CRM I was about to send a group email to my clients, then Zoho CRM announced that they would change the sender address to some kind of Zoho-e-ddress because my email address "has not been verified". Not only
                                                                                                              • What's new in Zoho Sheet: Simplify data entry and collaboration

                                                                                                                Hello, Zoho Sheet community! Last year, our team was focused on research and development so we could deliver updates that enhance your spreadsheet experience. This year, we’re excited to deliver those enhancements—but we'll be rolling them out incrementally
                                                                                                              • WebDAV / FTP / SFTP protocols for syncing

                                                                                                                I believe the Zoho for Desktop app is built using a proprietary protocol. For the growing number of people using services such as odrive to sync multiple accounts from various providers (Google, Dropbox, Box, OneDrive, etc.) it would be really helpful
                                                                                                              • Consolidated report for multi-organisation

                                                                                                                I'm hoping to see this feature to be available but couldn't locate in anywhere in the trial version. Is this supported? The main aim to go to ERP is to have visibility of the multi-organisation in once place. I'm hopeful for this.
                                                                                                              • Feature Request - Allow Customers To Pick Meeting Duration

                                                                                                                Hi Bookings Team, It would be great if there was an option to allow customers to pick a duration based on a max and minimum amount of time defined by me and in increments defined by me. For example, I have some slots which are available for customers
                                                                                                              • Error Logs / Failure logs for Client Scripts Functions

                                                                                                                Hi Team, While we are implementing client scripts for the automation, it is working fine in few accounts but not working for others. So, it would be great if we can have error Logs for client scripts also just like custom functions. Is there any way that
                                                                                                              • Welcome to the Zoho ERP Community Forum

                                                                                                                Hello everyone, We are thrilled to launch Zoho ERP (India edition), a software to manage your business operations from end to end. We’ve created this community forum as a space for you to ask questions, comment answers, provide feedback, and share your
                                                                                                              • Support for Custom Fonts in Zoho Recruit Career Site and Candidate Portal

                                                                                                                Dear Zoho Recruit Team, I hope you're doing well. We would like to request the ability to use custom fonts in the Zoho Recruit Career Site and Candidate Portal. Currently only the default fonts (Roboto, Lato, and Montserrat) are available. While these
                                                                                                              • YouTube Live streaming? how to? Zoom has this feature, built-in. Can't find it on zoho meetings.

                                                                                                                YouTube Live streaming? how to? Zoom has this feature, built-in. Can't find it on zoho meetings.
                                                                                                              • Feature Request - A Way To Search Item Groups

                                                                                                                Hi Inventory Team, I can't find any way to filter or search by fields of Item Groups. It would be great to see that functionality added. I have a use case where a single product might come from 5 or more suppliers and each supplier's item is an Item in
                                                                                                              • Feature Reqeust - Include MPN In Selectable FIelds

                                                                                                                I have noticed that the MPN is not available to show in the list view of Items. Please consider adding it as EAN, UPC and ISBN are all available, so it doesn't make much sense to exclude this similar option. Thanks for considering my feedback.
                                                                                                              • Next Page