Hello Everyone!
This week, we’re bringing you a feature that notifies your team when articles in the Knowledge Base are set to expire to keep your content relevant and helpful for customers.
The Zoho Desk's Knowledge Base is an asset for customers to gain knowledge and help themselves navigate through the product or process of the firm or industry. Zoho Desk allows you to set expiry dates for articles to maintain up-to-date information. However, once an article expires, it’s removed from the Help Center, and notifications are only sent to the article owner by default.
But, what if they miss it?
This solution integrates with a scheduler to notify team members on the same day an article expires.
Here’s how you can implement the custom function within the schedule to notify your team when an article expires.
Prerequisites
I. Create a connection
1.1 Go to Setup(S) and choose Connections under Developer Space.
1.2 Click Create Connection.
1.3 Select Zoho Desk under Default Connection.
1.4 Set the connection name as deskconnection.
1.5 Under Scope, choose the below scope values:
1.6 Click Create and Connect.
1.7 Click Connect and click Accept.
Connection is created successfully.
II. Create a Schedule
1. Go to Setup, choose Schedules under Automation.
2. Under Schedules, click New Schedule.
3. Under Add Schedule, enter a Schedule Name and Description for the rule.
4. In the Execute on tab, set the Date and Time for the schedule to begin execution.
5. In the Repeat tab, select 'Every Day,' then choose 'Every [1] Days.' Select the days based on your preferences and set 'Ends' to 'Never'. Click Done. This will ensure the schedule runs on the selected days.
6. In the Functions section, click on Create Function.
7. Enter a Name and Description for the custom function.
8. In the script window, insert the Custom Function given below:
- // ----<<<< User Inputs >>>>----
- subjectOfNotificationEmail = "Zoho Desk - Article Expiry Notification"; // provide subject based on your preference
- commaSeperatedToAddresses = "email address1, email address2";//provide email addreses of team members
- currentDateString = zoho.currentdate.toString("yyyy-MM-dd");
- //Expiring/Expired Today
- fromString = currentDateString + "T00:00:00.000Z";
- toString = currentDateString + "T23:59:59.999Z";
- info "final url " + "https://desk.zoho.com/api/v1/articles?expiryTimeRange=" + fromString + "," + toString;
- //change .com based on your DC
- getArticle = invokeurl
- [
- url :"https://desk.zoho.com/api/v1/articles?expiryTimeRange=" + fromString + "," + toString
- //change .com based on your DC
- type :GET
- connection:"deskconnection"
- ];
- emailBody = "";
- if(getArticle != null && getArticle != "" && getArticle.get("data").size() > 0)
- {
- articlesList = getArticle.get("data");
- emailBody = emailBody + "<div> <b> List of articles expiring/expired today </b>";
- for each article in articlesList
- {
- webUrl = article.get("webUrl");
- title = article.get("title");
- emailBody = emailBody + "<div><br><a href='" + webUrl + "'>" + title + "</div>";
- }
- emailBody = emailBody + "</div> <br> <br>";
- }
- //Expiring Tomorrow
- currentDateString = zoho.currentdate.addDay(1).toString("yyyy-MM-dd");
- fromString = currentDateString + "T00:00:00.000Z";
- toString = currentDateString + "T23:59:59.999Z";
- info "final url " + "https://desk.zoho.com/api/v1/articles?expiryTimeRange=" + fromString + "," + toString;
- //change .com based on your DC
- getArticle = invokeurl
- [
- url:"https://desk.zoho.com/api/v1/articles?expiryTimeRange=" + fromString + "," + toString
- //change .com based on your DC
- type :GET
- connection:"deskconnection"
- ];
- if(getArticle != null && getArticle != "" && getArticle.get("data").size() > 0)
- {
- articlesList = getArticle.get("data");
- emailBody = emailBody + "<div> <b>List of articles expiring tomorrow </b>";
- for each article in articlesList
- {
- webUrl = article.get("webUrl");
- title = article.get("title");
- emailBody = emailBody + "<div><br><a href='" + webUrl + "'>" + title + "</div>";
- }
- emailBody = emailBody + "</div> <br> <br>";
- }
- //Expiring in 7 days
- currentDateString = zoho.currentdate.addDay(7).toString("yyyy-MM-dd");
- fromString = currentDateString + "T00:00:00.000Z";
- toString = currentDateString + "T23:59:59.999Z";
- info "final url " + "https://desk.zoho.com/api/v1/articles?expiryTimeRange=" + fromString + "," + toString;
- //change .com based on your DC
- getArticle = invokeurl
- [
- url :"https://desk.zoho.com/api/v1/articles?expiryTimeRange=" + fromString + "," + toString
- //change .com based on your DC
- type :GET
- connection:"deskconnection"
- ];
- if(getArticle != null && getArticle != "" && getArticle.get("data").size() > 0)
- {
- articlesList = getArticle.get("data");
- emailBody = emailBody + "<div><b> List of articles expiring in 7 days </b> ";
- for each article in articlesList
- {
- webUrl = article.get("webUrl");
- title = article.get("title");
- emailBody = emailBody + "<div><br><a href='" + webUrl + "'>" + title + "</div>";
- }
- emailBody = emailBody + "</div> <br> <br>";
- }
- info "emailBody" + emailBody;
- if(emailBody != "")
- {
- sendmail
- [
- from :zoho.adminuserid
- to :commaSeperatedToAddresses
- subject :subjectOfNotificationEmail
- message :emailBody
- ]
- info "mail sent";
- }
NOTE
In Line 2, Enter the Email Subject for the Notification.
In Line 3, Enter the email addresses of the team members you would like to notify.
In Lines 8,12,34,38,59,63, Replace ".com" with the domain extension based on your Data Center.
9. Click Save Script.
10. Click Save to save the custom function.
11. Click Save again to save the Schedule.
By this, you can ensure quick updates and seamless publishing, keeping your Knowledge Base relevant and your customers updated with the latest resources.
Stay tuned for more learnings on this forum.
Regards,
Lydia | Zoho Desk
Recent Topics
Global Sets for Multi-Select pick lists
When is this feature coming to Zoho CRM? It would be very useful now we have got used to having it for the normal pick lists.
Integración Books para cumplir la ley Crea y Crece y Ley Antifraude (VeriFactu)
Hola: En principio, en julio de 2025, entra en vigor la ley Crea y Crece y Ley Antifraude (VeriFactu). ¿Sabéis si Zoho va a cumplir con la ley para cumplir con la facturación electrónica conectada a Hacienda? Gracias
Ask the Experts #1
Hello everyone! It’s time to transform how you manage projects. Define the processes. Automate the tasks. Streamline the workflows. Let us dive into automation in Zoho Projects — from configuring workflows and custom functions to building triggers, using
How to overcome Zoho Deluge's time limit?
I have built a function according to the following scheme: pages = {1,2,3,4,5,6,7,8,9,10}; for each page in pages { entriesPerPage = zoho.crm.getRecords("Accounts",page,200); for each entry in entriesPerPage { … } } Unfortunately, we have too many entries
Checking if Creator has Change History
Like zForms - whenever an entry was updated there's an option to attached change history to email notif. Trigger -> Successful form submission
how to use validation rules in subform
Is it possible to use validation rules for subforms? I tried the following code: entityMap = crmAPIRequest.toMap().get("record"); sum = 0; direct_billing = entityMap.get("direct_billing_details"); response = Map(); for each i in direct_billing { if(i.get("type")
Adding contact role to a specific deal js sdk malfunctioning
i was trying to add the contact role to a specific deal contact but repeatedly i am getting this error: { "code": "SUCCESS", "details": { "statusMessage": { "code": "INVALID_DATA", "details": { "expected_data_type": "jsonobject" }, "message": "body",
Q3 Updates from Bigin!
Hey Biginners, Hope you’re doing great! As we approach the end of 2025, we truly hope Bigin has been a part of helping you build your dream business this year! We've been busy working behind the scenes to bring you features that make running your business
Client Script | Update - Introducing Subform Events and Actions
Are you making the most of your subforms in Zoho CRM? Do you wish you could automate subform interactions and enhance user experience effortlessly? What if you had Client APIs and events specifically designed for subforms? We are thrilled to introduce
{"errors":[{"id":"500","title":"Servlet execution threw an exception"}]}
Here's the call to move a file to trash. The resource_id is accurate and the file is present. header = Map(); header.put("Accept","application/vnd.api+json"); data = Map(); data_param1 = Map(); att_param1 = Map(); att_param1.put("status",51); data_param1.put("attributes",att_param1);
Converting Sales Order to Invoice via API; Problem with decimal places tax
We are having problems converting a Sales Order to an Invoice via API Call. The cause of the issue is, that the Tax value in a Sales Order is sometimes calculated with up to 16 decimal places (e.g. 0.8730000000000001). The max decimal places allowed in
Zoho Canvas - Custom templates for related lists
Hi, I see that the example pages load always one of our related lists in a custom template, but I dont know how to work with that: 1) How can i make my own custom templates for related lists? 2) Where and how can i check out existing custom templates?
Kaizen #147 - Frequently Asked Questions on Zoho CRM Widgets
Heya! It's Kaizen time again, folks! This week, we aim to address common queries about Zoho CRM Widgets through frequently asked questions from our developer forum. Take a quick glance at these FAQs and learn from your peers' inquiries. 1. Where can I
open word file in zoho writer desktop version
"How can I open a Microsoft Word (.doc or .docx) file in Zoho Writer if I only have the file saved on my computer and Zoho Writer doesn't appear as an option when I try 'Open with'? Is there a way to directly open the .doc file in Zoho Writer?"
Zoho PDF editor has a lot of issues.
Zoho PDF editor needs a lot of work. It hangs and glitches a lot. Deletes annotations and clearings randomly.
Syncing contacts on Android
I'm using the Zoho mail app on Android and although I can see my contacts from within the app, they're not synced to my native contact list and so I can't access them from within the native dialer. Is there any way that I can sync my contacts into my native address book? Regards, Martin
Zohom mail
Plz resolve the problem . I hope u understand .
Zoho sheet desktop version
Hi Zoho team Where can I access desktop version of zoho sheets? It is important as web version is slow and requires one to be online all the time to do even basic work. If it is available, please guide me to the same.
ZOHO SHEETS
Where can I access desktop version of zoho sheets? It is important to do basic work If it is available, please guide me to the same
Using Zoho Flow to create sales orders from won deal in Zoho CRM
Hi there, We are using Zoho Flow to create sales orders automatically when a deal is won in Zoho CRM. However, the sales order requires "Product Details" to be passed in "jsonobject", and is resulting in this error: Zoho CRM says "Invalid input for invalid
Is Zoho Sheet available for Linux ?
Is Zoho Sheet available for Linux ?
Bharat
a
how to disable staff selection Zoho Booking integrated to SalesIQ?
currently there is only one Consultant in my Zoho Bookings like this I integrate Zoho Bookings into Zoho SalesIQ to create a chatbot. Unfortunately, even though I only have one consultant for a consultation, the user have to pick the consultant. It will
Zoho Bookings No Sync with Outlook
Zoho Bookings appointments are showing on my Outlook Calendar but Outlook events are not showing on Zoho Bookings. How do I fix this?
End Date in Zoho Bookings
When I give my appointments a 30 minutes time I would expect the software not to even show the End Time. But it actually makes the user pick an End Time. Did I just miss a setting?
Custom confirmation message
How can I change the message that users see after they submit the booking form? I have to confirm some details before their appointment is officially "confirmed", so I want to change it where it doesn't say their appointment is "confirmed" but rather
Issue showing too many consultations in my workspace link.
Hi Team, I’ve set up two Workspaces to track meetings from different sources. So far, this has been working well, and the two Workspaces are differentiated without any issues. However, when I navigate to Consultations and share the link to my personal
Deluge sendmail in Zoho Desk schedule can't send email from a verified email address
I am trying to add a scheduled action with ZDesk using a Deluge function that sends a weekly email to specific ticket client contacts I've already verified the email address for use in ZDesk, but sendmail won't allow it in its "from:" clause. I've attached
unblock e-mail
please unblock my e-mails info@meatnews.gr and myrtokaterini@meatnews.gr
Changing Corporate Structure - How Best to Adapt Current and Future Zoho Instances
My current company is Company A LLC with a dba ("doing business as" - essentially an alias) Product Name B. Basically, Company A is the legal entity and Product Name B is what customers see, but it's all one business right now. We currently have a Zoho
How to Install Zoho Workdrive Desktop Sync for Ubuntu?
Hi. I am newbie to Linux / Ubuntu. I downloaded a tar.gz file from Workdrive for installing the Workdrive Desktop Sync tool. Can someone give me step by step guide on how to install this on Ubuntu? I am using Ubuntu 19.04. Regards Senthil
How to upload own video?
How can you upload your own video on your zoho website? I do not want to use another host, but i want to insert my own files. how can i do this?
Support new line in CRM Multiline text field display in Zoho Deluge
Hi brainstrust, We have a Zoho CRM field which is a Muti Line (Small) field. It has data in it that has a carriage return after each line: When I pull that data in via Deluge, it displays as: I'm hoping a way I can change it from: Freehand : ENABLED Chenille
Announcing new features in Trident for Windows (v.1.32.5.0)
Hello Community! Trident for Windows just got better! This update includes new features designed to improve and simplify email and calendar management—and it includes a feature you’ve been waiting for. Let’s dive into what’s new! Save emails in EML or
How to render either thumbnail_url or preview_url or preview_data_url
I get 401 Unauthorised when using these urls in the <img> tag src attribute. Guide me on how to use them!
Zoho CRM Calendar | Custom Buttons
I'm working with my sales team to make our scheduling process easier for our team. We primary rely on Zoho CRM calendar to organize our events for our sales team. I was wondering if there is a way to add custom button in the Calendar view on events/meeting
Create Lead Button in Zoho CRM Dashboard
Right now to create Leads in the CRM our team is going into the Lead module, selecting the "Create Lead" button, then building out the lead. Is there anyway to add the "Create Lead" button or some sort of short cut to the Zoho CRM Dashboard to cut out
Searching customer field
Hello, When entering a receipt, we select customer information. The customer information is synced with Zoho CRM. However, we can't find the customer information because it searches for words that begin with the entered value. It needs to search for words
Introducing Version-3 APIs - Explore New APIs & Enhancements
Happy to announce the release of Version 3 (V3) APIs with an easy to use interface, new APIs, and more examples to help you understand and access the APIs better. V3 APIs can be accessed through our new link, where you can explore our complete documentation,
Outgoing blocked: Unusual activity detected.
Hello i can't send email from g.morris@adm-part.com mail, can you please help me.
Next Page