Kaizen #72 - Portal #APIs [Part I]

Kaizen #72 - Portal #APIs [Part I]

Welcome back to another week of Kaizen everyone! 
This week, we will be discussing the Portals API in Zoho CRM.

What are Portals in Zoho CRM?

Portals in Zoho CRM allow businesses to extend access to their CRM to external stakeholders, such as customers, partners, vendors or franchisees. Portals allow users to view, edit and create records within the CRM, depending on their level of access and permissions. This helps businesses to manage customer and partner interactions, share information and improve communication. 

Sample Business Cases:

In Health care Industry - If you run a health care facility, you can provide your patients the access to their medical records using portals. Through the portal, the patients can have controlled access to their medical records like their appointments, tests done and medication prescribed. Patients can request appointments, provide updates to their information, and request copies of their medical records through the portal. 

In a consulting firm - If you run a consulting firm, you would want to keep your clients updated about the status of their projects in real time. To do this, you can create a portal and share it with your clients. The clients can view the status of their projects, including the progress, the budget, and the schedule. Clients can view the updates and provide feedback on the project through the portal. 

In the automobile industry - If you have an automobile shop, and you want to track the customer details, your sold vehicle details and service schedules, you can create a portal and share it with your customers. They can view and update their details and book for services using through the portal.

Creating a Portal via API

Let us consider the context of the automobile industry. To create a portal for your customers, you can use the Create Portal API.

Request URL : {api-domain}/crm/v4/settings/portals
Request Method : POST
Scope : ZohoCRM.settings.clientportal.ALL/CREATE

Sample Input

 {
    "portals": [
        {
            "name": "ZylkerAutomobiles"
        }
    ]
 }

Input Keys

 Key Description
 name Unique name of the portal. 

Sample Response

 {
    "portals": [
        {
            "code": "SUCCESS",
            "details": {
                "name": "ZylkerAutomobiles"
            },
            "message": "Portal created successfully with given name.",
            "status": "success"
        }
    ]
 }

Update Portal via API

You can update the portal name via Update Portal API. 
Request URL : {api-domain}/crm/v4/settings/portals/{portal-name}
Request Method : PUT
Scope : ZohoCRM.settings.clientportal.ALL/UPDATE

For instance, the following request renames the already created portal ZylkerAutomobiles to ZylkerAutos.

Sample Input 

 {
    "portals": [
        {
            "name": "ZylkerAutos"
        }
    ]
 }

Input Keys

 Key Description
 name Unique name of the portal. 

However, changing the portal name will also alter the portal URL. As a result, it is crucial to communicate this change to all existing portal users.

Get Portals via API

At any point, if you want to get the details of all the portals configured in your CRM account, use the Get Portal API.

Request URL : {api-domain}/crm/v4/settings/portals
Request Method : GET
Scope: ZohoCRM.settings.clientportal.ALL/READ

Sample Response:

 {
    "portals": [
        {
            "created_time": "2023-02-07T20:13:20+05:30",
            "modified_time": "2023-02-07T20:13:20+05:30",
            "modified_by": {
                "name": "Patricia Boyle",
                "id": "4876876000000327001"
            },
            "name": "ZylkerAutos",
            "active": true,
            "zaid": "10052946888",
            "created_by": {
                "name": "Patricia Boyle",
                "id": "4875876000000327001"
            }
        }
    ]
 }

Response Keys

 Key Description
 name The name of the portal
 active Represents whether the portal is active or not.
 zaid The unique id of the portal.

Now let us consider the case where you may want to extend the portal access to beyond your customers. There would be multiple user groups you may want to extend the access to, including the employees and partners. For instance, you may want to share the portal with your employees to give them access to customer information, sales data and service schedules. If you have partners, you may want to share the portal with them to keep them informed about the customer behaviors, sales data etc. Each of these groups may require to access to different types of data within the CRM.

To accommodate the different needs and access levels of the different types of users, you may need to create multiple user groups in the portal. For example, you could create a user group for customers and another user group for employees. The business can then configure different permissions for each user group, allowing or restricting access to the relevant data in the CRM account. This way, each type of user will be able to access the information that is most relevant to them, without compromising the security and privacy of the rest of the data in the CRM account.

Get Portal User Types API

The Get Portal User Types API allows you to retrieve the user types available in the portal of your org. It is important to note that when you create a portal, the default user type Client Portal is added by default.

Request URL : {api-domain}/crm/v4/settings/portals/{portal_name}/user_type
Request Method : GET
Scope: ZohoCRM.settings.clientportal.ALL/READ

Sample Request : https://www.zohoapis.com/crm/v4/settings/portals/ZylkerAutos/user_type

Sample Response

 {
    "user_type": [
        {
            "created_time": "2023-02-08T11:56:16+05:30",
            "default": true,
            "modified_time": "2023-02-08T11:56:16+05:30",
            "personality_module": {
                "plural_label": "Contacts",
                "api_name": "Contacts",
                "id": "1306462000000000129"
            },
            "name": "Client Portal",
            "modified_by": {
                "name": "Patricia Boyle",
                "id": "1306462000083528405"
            },
            "active": true,
            "id": "1306462000001813022",
            "created_by": {
                "name": "Patricia Boyle",
                "id": "1306462000083528405"
            },
            "no_of_users": 1
        }
    ]
 }

Response Keys

 Key Description
 default Represents whether the user type is the default one for the portal.
 personality_module Details of the module for which the user type was configured.
 name The name of the user type.
 active Represents whether the user type is active or not.
 id The unique id of the user type.
 no_of_users The number of users in the portal assigned with this user type.

Invite users to Portal via API

Once the portal is created, you can invite the customers to join the portal using the Invite Users to Portal API. This provides the customers with access to the information regarding their automobile including the servicing details, and their information.

Request URL : {api-domain}/crm/v4/{personality_module}/{record_id}/actions/portal_invite
where, personality_module is the API name of the module for which the portal was created and record_id is the ID of the record that you want to invite to the portal
Request Method : POST
Scope: ZohoCRM.settings.clientportal.ALL/CREATE

Parameters

 Parameters Parameter Description
 user_type_id : integer, mandatory
 The id of the user type you want to assign the user with. 
 type : string, mandatory
 Represents whether the user is invited (invite) the first time or is re-invited(reinvite).
 language : string, optional
 The language code of the user you want to invite to the portal

Please note that for the client portal user type, you can invite only clients/customers and not users with the same email domain like your employees or partners. 

In this sample request, 1306462000000659009 is the record id of the customer in Contacts module, and 1306462000001813022 is the user type id.

Sample Response

 {
    "portal_invite": [
        {
            "code": "SUCCESS",
            "details": {
                "record_id": "1306462000000659009"
            },
            "message": "An Invite has been sent to the personality.",
            "status": "success"
        }
    ]
 }

Get Users of a User Type API

The Get Users of a User Type API enables you to retrieve the list of users available in a specific user type of a portal.

Request URL : {api-domain}/crm/v4/settings/portals/{portal_name}/user_type/{user_type_id}/users
Request Method : GET
Scope : ZohoCRM.settings.clientportal.ALL/READ

Parameters

 ParametersParameter Description
 type : string, optional
The type of user. Possible values are AllUsers, AllActiveUsers, ActiveUsers,  DeactiveUsers, NotConfirmedUsers, ConfirmedUsers, and ActiveConfirmedUsers.
 filter : JSON object, optional
To filter based on the value disabled on updation of email of the status_reason__s field in the Users module. The allowed comparators are equal and not_equal. Note that you must encode this JSON object.

The following request retrieves the details of users in your ZylkerAutos portal, with Client Portal user type.

Sample Response

 {
    "users": [
        {
            "personality_id": "1306462000000659009",
            "confirm": true,
            "status_reason__s": null,
            "invited_time": "2023-02-08T18:03:10+05:30",
            "module": "Contacts",
            "name": "Jennifer Spears",
            "active": true,
            "email": "jennifer.spears@abc.com"
        }
    ],
    "info": {
        "per_page": 200,
        "total_count": 1,
        "count": 1,
        "page": 1,
        "more_records": false
    }
 }

Response Keys

 Key Description
 personality_id The id of the module for which the portal was created.
 confirm Represents whether the user is a confirmed user or not.
 status_reason__s The reason the user is disabled.
 module The API name of the module for which the user type was created.
 name The full name of the contact.
 active Represents whether the user type is active or not.
 email The email ID of the contact of that user type.

We will discuss more on user types and users in next week's post. We hope you found this post useful. 
Write to us at support@zohocrm.com if you have any questions.
    • Recent Topics

    • No option for pick up in Zoho Books / Inventory but yes on commerce

      Is it planned to release soon on books/inventory?
    • Accessing Zoho form enteries via API

      Hi As a user I can view enteries to a form at: https://forms.zoho.com/<myOrganisation>/report/<myReportName>/records/web How do I access these entries via API? I don't have any problem with scope and getting tokens. But I have no idea what the API call
    • Blueprint Issue - Being able to set a subform field as mandatory

      I'm creating a blueprint. My record involves a subform which is only shown once field is set but the field gets set in step two of the process. My problem - I can't save the record as the subform field is set to mandatory - If I unset the mandatory field,
    • Blueprint - Mandatory file upload field

      Hi, File upload (as we as image upload) field cannot be set as mandatory during a blueprint transition. Is there a workaround? Setting attachments as mandatory doesn't solve this need as we have no control over which attachments are added, nor can we
    • Zoho Books - Include Quote Status in Workflow Field Triggers

      Hi Zoho Books team, I recently tried to create a Workflow rule based on when a Quote is Accepted by the customer. This is something which I thought would be very easy to do, however I discovered that Status is not listed as a field which can be monitored
    • Zoho Books - Show Related Sales Orders on Quotes

      Hi Books team, I've noticed that the Quotes don't show show the related Sales Order. My feature request is to also show related Sales Orders above the Quote so it's easy to follow the thread of records in the sales and fulfilment process. Below screenshot
    • Add VAT/Tax line to bank adjustments

      When categorising transactions and matching bank feeds with transactions such as customer payments, we use the "Add Adjustment" to add things like fees/bank fees. It would be useful to choose a VAT/Tax rate here. Whilst there is a bank charges option when adding a payment, this goes into the default bank charges account. We use the adjustments so that we can choose the account and separate our fees. We use different card providers and Worldpay charges VAT so we are stuck. We cannot integrate with
    • New Menu Layout Feedback

      I'd really like to see the banking item back on the top of the menu. I'm sure part of it is just because that's what I'm accustomed to. However, for a bookkeeping program, I think there's a logic to having banking be on top. Not a giant issue, but something
    • How to use Rollup Summary in a Formula Field?

      I created a Rollup Summary (Decimal) field in my module, and it shows values correctly. When I try to reference it in a Formula Field (e.g. ${Deals.Partners_Requested} - ${Deals.Partners_Paid}), I get the error that the field can’t be found. Is it possible
    • Form Accessibility

      Hi, is there an update on the accessibility standard of Zoho forms? Are the forms WCAG 2.1 AA compliant? 
    • Cannot schedule report delivery

      The only 'send option' available when exporting reports is 'immediately' The option to schedule the report is missing.
    • adding attachment in sendmail script where attachment is in a CRM field

      Hi all, I have a custom field of type 'File Upload' in one of my modules in my CRM. I want to include the file in that field as an attachment to an email - which is done from a button on  the 'Results' module. I have created a script and a button to initiate an email from that module. The Deluge scripting window has allowed me to add arguments for all the fields I need to use except for the one file upload type field. My script currently looks like the below (content of the email omitted). As you
    • [Free Webinar] Learning Table Series - AI-Enhanced Insurance Claim Management in Zoho Creator

      Hello Everyone! We’re excited to invite you to another edition of Learning Table Series, where we showcase how Zoho Creator empowers industries with innovative and automated solutions. Struggling with lengthy claim processes, a lack of visibility into
    • Not sure how to use credits to my account

      Hi I have a $50 credit to my account. I'm just wondering how I can apply that to either a current invoice or to try a new service. Any advice would be great, thanks. Kind Regards Chris
    • Control who sees Timeline and Interactions in Zoho CRM through Profiles

      The feature has been enabled for all DCs (except US, EU, and IN DCs). We will be rolling it out to the other DCs in the upcoming days. Dear All, In a CRM, not all users would require access to the history of a record. For instance, a Marketing Operations
    • Zoho Desk Integration - Add the option to send the estimate from the Zoho Desk Ticket Integration

      Hi, Currently in the Zoho Desk integration, the user is able to create an estimate from a ticket, once the estimate is created the user can see the estimate under the ticket (see screenshot below), but is not able to send that estimate from Zoho Desk.
    • Utilisation de Zoho en conformité avec l’article 286 du Code général des impôts (CGI)

      Cher(e) client(e), Conformément à l’article 286 du Code général des impôts (CGI) impose aux entreprises assujetties à la TVA d’utiliser des systèmes de caisse ou de gestion commerciale certifiés lorsqu’elles enregistrent des ventes à des particuliers.
    • CRM Validation Rules Support Only Single Condition

      Simply put, CRM validation rules support only a single condition for each field on "All Records". You also cannot specify additional validation rules on the same field because it has already been used in an existing validation rule. The ONLY solution
    • Unapproved Leaves are hard to distinguish in Attendance View

      This is a an unapproved leave request It appears in the Attendance view without any visual indicator if its approved or not For a whole day request this might be manageable but for hourly requests it gets very hard to know which are approved, which are
    • Performance Appraisal Probation Period

      Hello All,  Is there any possible way to create an appraisal cycle for new staff members, at the end of probation period? Many thanks!
    • Zoho Creatorの一括操作における処理の同期/非同期について

      現在、Creatorのレポート機能を利用して、複数のレコードに対して一括で処理を実行しようとしていますが、処理の実行順序について確認したいことがあります。 レポート内の複数レコードに一括で処理を実行した際、処理は同期的に行われるのでしょうか?それとも非同期的に行われるのでしょうか? 【同期処理の場合】 レコード①に対する処理が開始され、終了後にレコード②に対する処理が開始され、最後にレコード③に対する処理が実行されるように、処理が順番に行われる場合。 【非同期処理の場合】 レコード①、レコード②、レコード③の処理が一斉に開始され、それぞれ並行して処理が行われ、全処理が終了する場合。
    • Mail Delivery Failed

      Good morning,   I have just set up an account with 5 users, however each time a message is sent to 1 user a m'mail delivery failed' message is generated. See below.   Any ideas   Thanks   Rob   This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: robb@thesmartgroup.ae mailbox is full: retry timeout exceeded ------ This is a copy of the message,
    • Delete commerce website

      I need to delete a commerce website, but the only option is to click on settings, REQUEST DELETE, choose an urgency notice, add a message....AND THEN nothing, no way to send the request. Why is nothing simple!?!?!  I just want to delete the store.  The
    • Adding external users to Zoho Social under Zoho ONE licence - how to best achieve this

      My client has a small business, and we are looking to implementing Zoho ONE with a single flexible user licence as that is all they really need and offers the best pricing for the range of modules we eventually wish to set them up with, one of which will
    • Has anyone built a custom AI support agent inside Zoho (SalesIQ/Zobot)?

      Hi all, I’ve been experimenting with building my own AI support assistant and wanted to see if anyone here has tackled something similar within Zoho. Right now, I’ve set up a Retrieval-Augmented Generation (RAG) pipeline outside of Zoho using FAISS. It
    • This mobile number has been marked spam. Please contact support.

      Problem Description: One of our sales agents in our organization is unable to sign in to Zoho Mail. When attempting to log in, the following message appears: This mobile number has been marked as spam. Please contact support at as@zohocorp.com @zohocorp
    • What’s New in Zoho Inventory | April 2025

      Hello users, April has been a big month in Zoho Inventory! We’ve rolled out powerful new features to help you streamline production, optimise stock management, and tailor your workflows. While several updates bring helpful enhancements, three major additions
    • When Zoho Tables Beta will be open to EU data center

      Hello all, We in EU are looking at you all using and testing and are getting jealous :) When we will be able to get into the beta also? We don't mind testing and playing with beta software. Thank you!
    • Pass current date to a field using Zoho Flow

      I am trying to generate an invoice automatically once somebody submits a record in Zoho CRM. I get an error in the invoice date. I have entered {{zoho.currentdate}} in the Date field. When I test the flow, I get "Zoho Books says "Invalid value passed
    • API: Mark Sales Order as Open + Custom Status

      Hi, it's possible to create Custom Status (sub-status actually) states for the Sales Order. So you have Open, Void. Then under Open you can have Open, and create one called Order Paid, Order Shipped, etc etc...which is grouped under Open. I can use the
    • Multi-Unit Inventory with Flexible Unit Selection (Purchase in One Unit, Sell in Another)

      We need multi-unit inventory management in Zoho Books with the flexibility to choose units (e.g., Box or Piece) at the time of purchase or sale. For example, if 1 Box = 10 Pieces, we should be able to record purchases in Boxes but sell either in Boxes
    • Zoho Quartz Screen Recording

      Hello, can we get access to Quartz, please, as a standalone solution? It would be great for creating training videos for current and future staff on how to use Zoho software according to our company requirements. Thank you
    • This domain is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details

      This is the error i keep getting when trying to use my Zoho Domain Mail. This domain is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details Find attached. I hope this can be resolved very quickly so i can go on and make
    • Tip 26: How to hide the "Submit" button from a form

      Hi everyone, Hope you're staying safe and working from home. We are, too. By now, we at Zoho are all very much accustomed to the new normal—working remotely. Today, we're back with yet another simple but interesting tip--how to hide the Submit button from your forms. In certain scenarios, you may want to hide the submit button from a form until all the fields are filled in.  Use case In this tip, we'll show you how to hide the Submit button while the user is entering data into the form, and then
    • filter broke my data

      I uploaded a file recently from Sheets and it has top 2 rows frozen, with table headers in second row and each one is filterable. somehow my first 2 columns became unfiltered and no matter what I do I cannot reapply the filter?? also didn't realize they
    • Email address for forwarding is not saving and there's no confirmation ema

      Steps to reproduce: 1. Enter my forward email in the email forward section of the account 2. Click save 3. See a notification stating saved successfully 4. Refresh the page, no forward email is saved 5. No email confirmation received at the forwarding
    • How do I move Notes around within a Group?

      It says here: " You can now sort notes by title (alphabetically), or by date modified and date created. You can even organize your notes by dragging and dropping them into a particular order. To sort your notes, simply go to Settings and tap “Sort By.” Please note: all sort settings will be saved and synced across devices, except for custom sorting. Custom sorting will be device specific."However, I am unable to 'custom sort' in either Notebook for Mac or on the Web. In addition, I can't find the
    • javax.mail.authenticationfailedexception 535 authentication failed

      Hi, I am facing 535 authentication failed error when trying to send email from zoho desktop as well as in webmail. Can you suggest to fix this issue,. Regards, Rekha
    • Pocket from Mozilla is closing shop. Don’t lose your favorites . Move them to Zoho Mail Bookmarks now! 📥🔖

      The end of Pocket shouldn't mean the end of your important links and content. Easily import them into Zoho Mail's Bookmarks and continue right where you left off. You can bring over your entire Saves, Collections, and tags just the way they are. Bookmarks
    • Zoho Sign: need to leave document pending for up to a year, or maybe there's a better way?

      I have zoho one, maybe there's a better way to do this with another service than sending a zoho sign template from zoho crm. At the end of the day this requirement is due to regulations, no matter how dumb it may seem. I'm just looking for a way of getting
    • Next Page