Hello everyone!
Welcome back to another post in the Kaizen series!
In Kaizen #166, we discussed handling Variables in Queries and associating the query in Kiosk.
This week, we will discuss Serialization and Schema management in Queries. Business Scenario
Let's consider the same use case of Delivery Hub discussed in Kaizen #166.
Here, a tele-commerce platform uses Zoho CRM to manage sales and deliveries. When a customer provides their PIN code, the salesperson must confirm with the customer for a nearby post office for package pick-ups and drop-offs in Kiosk.
For this case, we wrote a query with the Source as REST API. When a PIN code was entered, the query dynamically retrieved the list of post offices in that area and displayed it on the Contact's detail page.
Let's take it a step further and see how we can serialize the response.
When you query by entering a PIN code, the response contains all post offices in that area including the ones that are non-operational.
To display only relevant data and leverage the capabilities of the Queries feature, you can serialize the response to display only those post offices that are operational(with the value "DeliveryStatus":"Delivery") along with the names of those post offices.
We will also see how Schema varies based on serialization.
Serialization
Serialization refers to the process of transforming complex data structures into a format that is more meaningful and relevant to your business needs. In Zoho CRM Queries, serialization affects how responses are formatted and what data is included.
Serialization offers the following:
- Response Customization: By serialization, you can manipulate the output of a query to focus on relevant fields. For example, if a query retrieves multiple post offices, serialization can filter these results to display only those marked as 'deliverable'.
- Schema Adjustment: When you serialize the response, the schema changes. This allows you to have only relevant data in the serialized output like the required fields, especially while querying a module with multiple relationships.
- User Experience: Serialization avoids unnecessary information clutter, giving the users only what they need, thereby improving their overall experience.
Example
Consider the example of Delivery Hub. For PIN 110042, the response contains a list of six post offices in that area.
{ Name: 'Badli (North West Delhi)' , Description: null , BranchType: 'Sub Post Office' , DeliveryStatus: 'Non-Delivery' , Circle: 'Delhi' , District: 'North West Delhi' , Division: 'Delhi North' , Region: 'Delhi' , Block: 'Delhi' , State: 'Delhi' , Country: 'India' , Pincode: '110042' }
1
:
{ Name: 'Delhi Engg. College' , Description: null , BranchType: 'Sub Post Office' , DeliveryStatus: 'Non-Delivery' , Circle: 'Delhi' , District: 'North West Delhi' , Division: 'Delhi North' , Region: 'Delhi' , Block: 'Delhi' , State: 'Delhi' , Country: 'India' , Pincode: '110042' }
{ Name: 'Pehlad Pur' , Description: null , BranchType: 'Branch Post Office' , DeliveryStatus: 'Delivery' , Circle: 'Delhi' , District: 'North West Delhi' , Division: 'Delhi North' , Region: 'Delhi' , Block: 'Delhi' , State: 'Delhi' , Country: 'India' , Pincode: '110042' }
3
:
{ Name: 'Samai Pur' , Description: null , BranchType: 'Sub Post Office' , DeliveryStatus: 'Delivery' , Circle: 'Delhi' , District: 'North West Delhi' , Division: 'Delhi North' , Region: 'Delhi' , Block: 'Delhi' , State: 'Delhi' , Country: 'India' , Pincode: '110042' }
4
:
{ Name: 'Shahbad Daulatpur' , Description: null , BranchType: 'Branch Post Office' , DeliveryStatus: 'Delivery' , Circle: 'Delhi' , District: 'North West Delhi' , Division: 'Delhi North' , Region: 'Delhi' , Block: 'Delhi' , State: 'Delhi' , Country: 'India' , Pincode: '110042' }
5
:
{ Name: 'Siraspur' , Description: null , BranchType: 'Branch Post Office' , DeliveryStatus: 'Delivery' , Circle: 'Delhi' , District: 'North West Delhi' , Division: 'Delhi North' , Region: 'Delhi' , Block: 'Delhi' , State: 'Delhi' , Country: 'India' , Pincode: '110042' } |
Now, we will use serialization to display only those post offices that deliver with the value DeliveryStatus = 'Delivery' .
You can serialize the response using JavaScript. Here is the code.
const postOffices = result[0]?.PostOffice;
// Ensure `postOffices` is iterable
const postOfficesArray = Array.isArray(postOffices)
? postOffices
: (postOffices ? Object.values(postOffices) : []);
const filteredResults = [];
// Filter and manually extract `Name` and `DeliveryStatus`
for (const office of postOfficesArray) {
if (office.DeliveryStatus === "Delivery") {
filteredResults.push({ Name: office.Name, DeliveryStatus: office.DeliveryStatus });
}
}
return filteredResults; |
Let's see how serialization brings a difference in the output.
Output when fetching all post offices
Serialized output displaying only the name and status of the post offices that deliver
As you can see, serialization makes the output less bloated and a lot more meaningful and relevant.
Schema Management
For every query, the schema is auto-generated. It outlines the structure of the retrieved data and helps identify the path of each field, its CRM field type, and the label.
You can modify the auto-generated schema to suit your requirements better. You can update field labels and types, which helps in presenting data in a more user-friendly way.
For example, if a query returns a field labeled "Deal Stage," you can rename it to "Current Status" for clarity when displaying results on dashboards or reports.
Let's look at the schema when fetching all post offices for a PIN code vs the schema of the serialized response.
Schema before serialization
Schema after serialization
You can see that serializing helps you achieve crisper results.
It shows the CRM field type of every field in the response and its label. You can further customize the schema by changing the field labels to suit your needs.
In the following image, the field label for DeliveryStatus is changed to Status in the serializer which is reflected in the schema.
We hope you found this post useful. Watch this space for more posts on interesting topics.
See you all next week!
Cheers!
-------------------------------------------------------------------------------------------------------------
Recent Topics
Subform Time field to string.
Good afternoon All. I have a Subform 'Delivery_Receiving_Hours' that captures Day (Dropdown), Time_Open (Time), and Time_Close (Time). I need to capture this data and send it to a multiline field in the CRM. The code, posted below, below will capture
workflow for bounced email gets triggered, but email is status = opened
Hello, I have a workflow that sends me an email if outgoing email are bounced. Now I got some kind of this emails, but the corrosponding contacts have status = open at the email. Why this bounce-workflow is triggered? Reports > Email Reports > Bounce
Data export
I need to export our customer's data and projects' data for our purpose but am unable to export full data i only get around 3160 projects and around 2k customer can you please help me to get full data, please
Adjusting Physical Inventory
Not getting very far with support on this one, they say they are going to fix it but nothings happened since November. Please give this a thumbs up if you would like to see this feature or comment if you have some insight. Use Case: Inventory set to be
QR codes in templates
I'm excited about the new QR code generator. I have included a QR code that contains the record ID setting "${ID}" as input data. In the report detail it works perfectly but when printing it in a template the code is not shown.
Zoho Marketing Plus : Un outil tout-en-un pour la création de pages, la collaboration et la gestion du calendrier marketing
Nous sommes ravis de vous présenter trois nouvelles fonctionnalités puissantes de Zoho Marketing Plus s’enrichit désormais d’un page web (l'éditeur de pages), qui vous permet de créer des pages attrayantes et à fort taux de conversion pour vos campagnes
Error 403: Forbidden When Updating Email Signature via API
Hi Zoho Desk team, First, congratulations again on the excellent Zoho API. But, I’m encountering an issue while attempting to update an email signature via the API. Whenever I make a request to update the signature, the response returns an HTTP 403 Forbidden
Como gerar gatilhos para pagamento de impostos no Zoho Books?
Olá Pessoal, boa tarde! Gostaria de saber como vocês estão escriturando os impostos a pagar no Zoho Books. Vi que temos a opção de Bills, porém se eu escriturar nesta aba do Zoho Books para gerar lembretes de tempo de vencimento por exemplo vai refletir
Grouping payments to match deposits
Is there a way to group multiple invoice payments together so they match credit card batches and grouped deposits in the bank account? Basically, we are creating invoices for each of our transactions, and applying a payment to each of the invoices. Our payments are either credit cards or checks. We want to be able to group payments together so when our bank account reflects a credit card batch made up of many transactions, or the deposit we took to the bank that has multiple checks from different
Employees can not add some expenses suddenly
Zoho expense was working fine and whenever there was a new merchant, it would automatically add and also the same auto added in Zoho Books (due to merchant-vendor sync) untill now. From today, it is having problems in searching the existing vendors and
Zoho email setup in office365
When i am trying to setup zoho mail setup using my domain in office365 and it is not working and it says that we couldn't log on to the incoming (IMAP) server and please check your email address and password and try again. I was able to login using my
iOS 10: Caller ID new feature?
Hi, in the update history of the iOS App (for iOS10) - v.3.2 - i found the point "caller identification" has this feature been deactivated again? i cannot find anything on my iphone on how to activate this feature. or does it just work from the beginning?
Recommendations to store meeting notes for easy access from Contacts, Accounts & Deals module records?
I would like your advice on how to achieve this use case for my organization. It’s related to where/how best to store meeting notes from a conversation with Contact(s) working at an Account (Company) in the context of a Deal. The ideal solution (from
Bank reconciliation. Match Transaction -filter
When matching an imported bank statement file we only get a match if it is an excact match on both amount and date. Then a suggestions comes up with a very broad selection regarding amount, and no default "between" dates. I can then go an manually adjust the filter, and have to put in from-to amounts and dates. How do I set a default from-to date? As an example, I would like the date to be +- 3 days, Thanks.
Added new staff but does not appear in other organization list
Hi, I added the new staff under Sales Manager in the contacts, but it does not appear in the other organization list where I need to create a contact, and I can't select the newly added Sales Manager
Integrating Calendly with Zoho Calendar in Zoho Mail
I moved my office into a business incubator space that uses Calendly for meeting management and events. Calendly doesn't have a integration with Zoho Calendar and vice versa. I was directed to Zapier for integration but it doesn't have an integration
Map fields from module X to a lookup field in subform in module Y
Hi there In the 1st screenshot attached, you can see a subform in myLeads module. You can see that there is a number already filled there - that is the 'Property ID' and it is a single line field. It is the 'Property ID' of an entry I have in another
🎄 Jingle, Mingle, and Automate: Spread Christmas Cheer with Zoho Desk Auto-Replies! 🎄
Hello Everyone! Welcome to this week's episode of the Community Learning Series. Christmas is in the air, and I’m sure we can all feel the jingle and the mingle of the season! The folks at Zylker Techfix are no exception—they’re busy with holiday plans
how to create a new line in string in Client Script?
I want to show an alert using client script, I need to add a new line in String, I assume I can use \n\n inside a string, but unfortunately it doesnt work ZDK.Client.showAlert("First Line \n\nI expect this is in second line");
Surely it's time Inline editing from views
I think the first request I found for in-line editing from grids was approximately 12 years ago - that post was locked because it was suggested Zoho sheetview solved the problem. However, it's now 2024, and in-line editing from grids is just a basic expectation.
Multi branding issue with sender addresses
Hello, I'm currently working on a project involving two (seperate) brands. Named 'Windeck' and 'Prolance'. They've chosen CRM Plus and I'm currently working on CRM, SalesIQ, Social and Marketing Automation. So far, I'm able to make enough separations
How to Replace an Assessment in a Job Opening on Zoho Recruit
Hi everyone, I’m currently using Zoho Recruit and would like to replace the assessment linked to a specific job opening. I want to remove the existing assessment and add a new one. What is the best way to do this without losing any important data or affecting
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
Email Campaigns overview page is missing SENT DATE and # people sent to!
I would like to see the date the email campaign was sent, so I can understand and track when each email campaign was sent. Right now, unless you go to a contact who received a campaign, you cannot see when the campaign was sent (!!!!!!). So, if my boss
Extracting data from cells in zoho sheets for zoho books
I am currently uploading my bank statment in excel format to zoho workdrive. I would like flow to extract certain data and send it to zoho books. Would scripting in zoho flow be able to help me with this? By this I mean should I attempt this in zoho flow
SEO recommendation of H1 tag for website tittle
The exact words are “ It is good practice to place the page title inside the H1tag.” Now I already have one H1 tag on my website but it is not website tittle. In the SEO recommendation that is clear too that I have h1 tag on my page. Now I don’t know
How to choose other payment methodes than creditcards
We have connected stripe as a payment provider in zoho books, booking, commerce and checkout. In stripe we selected al major payment methodes for Belgium (mainly bancontact). However, at checkout customers seems to have only the possibility to pay with
Pulling Specific Products from Sales Orders in Books to a CRM Record
We currently process orders directly through our website (woocommerce) as well as through manual sales orders in zoho books. When an order comes through the website, all of the individual products from that order show up in the CRM record of that customer.
Introducing Zia LLM: Zoho’s in-house Generative AI solution for CRM's AI capabilities
Hello everyone, We're excited to announce the launch of our in-house Large Language Model (LLM) by Zia to power our AI offerings. What is LLM? LLM stands for Large Language Model, a powerful AI technology that processes and generates human-like text based
How to call a Creator function which is in a different Creator application?
How to call a Creator function which is in a different Creator application?
Can the code in my "Successful form submission" WF be invoked from a function?
Can "Successful form submission" be invoked from a function? Data gets into a form manually and programatically. My code in "successful form submission" is good and I want to reuse it/call it, from another function which does Insert Into How to achieve
New Built In QR/Barcode Generator Print Settings
I'm trying out the new QR/Barcode generator field in Creator. I would think most people will want to print these, like I do. I am not seeing any way to control the height or width of the barcode for printing (inside the print/pdf template builder). The
Kaizen #169 - Serialization and Schema Management in Queries
Hello everyone! Welcome back to another post in the Kaizen series! In Kaizen #166, we discussed handling Variables in Queries and associating the query in Kiosk. This week, we will discuss Serialization and Schema management in Queries. Business Scenario
Introducing Keyboard Shortcuts for Zoho CRM
Dear Customers, We're happy to introduce keyboard shortcuts for Zoho CRM features! Until now, you might have been navigating to modules manually using the mouse, and at times, it could be tedious, especially when you had to search for specific modules
Feature Request: Notebooks within notebooks (Tree-like structure)
Dear Zoho! I already migrated all my stuff from Google Keep, Im really fond of Zoho Notebook so far. One thing that could make the service much more powerful is multi-level notebooks (or tree like structure). For example, entering into Notebook named
Introducing automation and utility conversations in WhatsApp marketing
We’re excited to announce the addition of two new features to our WhatsApp integration: Automation and Utility conversations. These enhancements will allow you to streamline your marketing efforts and engage with your customers more effectively by automating
Can't get authorization for Sandbox environment using the self client
Hello, After creating a self client, and following the client-credentials method (as it's not optimat to manually generate a code for every 10 minutes), after inputting the sandbox org id for SOID parameter, im getting the error: "error": "no_org". For
Create landing pages from Zoho Marketing Plus
Hey everyone, Over the last few months, we've introduced various features and enhancements to bolster the marketing capabilities of Zoho Marketing Plus and make it simpler for everyone. To that end, we're excited to announce that Zoho LandingPage is now
Custom service report or Zoho forms integration
Hello, So far the experience with Zoho FSM and the integration with Books has been good, however there are limitations with service reports. As with my business, many organisations send technicians to different types of jobs that call for a different
Email tracking subdomain
The Email Tracking configuration screen of the ZeptoMail asks for a subdomain. I have gone through the documentation but could not find more information about how that subdomain is used by ZeptoMail to track the emails. Can someone throw some light about
Next Page