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
Desktop app doesn't support notecards created on Android
Hi, Does anybody have same problem? Some of last notecards created on Android app (v. 6.6) doesn't show in desktop app (v. 3.5.5). I see these note cards but whith they appear with exclamation mark in yellow triangle (see screenshot) and when I try to
Approval Button in Subform
Hi Team, I’m working on a subform-based requirement where users will submit requests, and these requests must go through approval by multiple team managers. Each line item in the subform needs to be individually approved or declined based on the user's
Setting checkbox value on template in Sign from Creator
Good day, Please help me understand how do I set a tick from a checkbox in Creator into a checkbox on a Sign template. Below is the only values on the Sign template and the code from Creator, "field_boolean_data": {}, "field_date_data": {}, "field_radio_data":
Zoho Projects - Unread Comment Icon
Hi Projects Team, It would be great if there was a notification I con on the comments icon so it's easy to see which tasks have new comments. Something like a red circle with a number of unread comments would be great. Thanks for considering my feed
Zoho Projects - Update Feed via API
Hi Projects Team, Please consider adding an API to allow update and retrieval of messages to the Feed. Thank you
Automated log-out/session end
I'm concerned about security of our data. Is it possible to set an automatic time-out for user sessions on Zoho CRM, after a certain period of inactivity or when the session reaches a certain duration (12 hours perhaps)?
Subform auto populate values
Hi Team, I’m trying to retrieve values from Zoho People using API functions and dynamically populate them into a subform. For example, I’ve created a form with several fields that users will fill out. Based on their input, I need to fetch records from
What is New in CRM Functions?
What is New in CRM Functions? Hello everyone! We're delighted to share that Functions in Zoho CRM have had a few upgrades that would happen in phases. Phase 1 An all new built-in editor for better user experience and ease of use. ETA: In a couple of days.
Gantt Chart - Zoho Analytics
Are there any plans to add Gantt Charts capabilities to Zoho Analytics?
WhatsApp Calling Integration via Zoho Desk
Dear Zoho Desk Team, I would like to request a feature that allows users to call WhatsApp numbers directly via Zoho Desk. This integration would enable sending and receiving calls to and from WhatsApp numbers over the internet, without the need for traditional
Identify long running sync jobs/tables
My sync process causes strain on my production database and I'd love some tools/alerts to help me identify which tables are taking the longest. The current screen only shows 3 tables at a time and truncates the last fetch time so that it is very cumbersome
Temporarily rate limited due to IP reputation.
We have suddenly started receiving the following Mail Delivery Status Notification: Diagnostic-Code: 4.7.650 The mail server [136.143.184.12] has been temporarily rate limited due to IP reputation. For e-mail delivery information, see https://aka.ms/postmaster
Associate emails from both primary and secondary contacts to deal
We need to associate emails from multiple contacts to a deal. Please advise how this can be achieved. At present, only emails from primary contacts can be associated. Thanks
New integration: Zoho Sign for Zoho Projects
Hey there! We’re excited to announce the brand-new Zoho Sign integration for Zoho Projects! With this integration, users can now send documents for signatures, track their progress, and manage approvals—all without leaving Zoho Projects. This bridges
Update to attachment display in ticket threads
This enhancement will provide faster access for support teams and end-users, significantly boosting productivity for everyone. Get ready for a more efficient and satisfying experience! Immediate benefits Faster ticket rendering reduces wait times and
Narrative 15: Blueprint - Automate, guide, and transform your support processes
Behind the scenes of a successful ticketing system: BTS Series Narrative 15: Blueprint - Automate, guide, and transform your support processes Even organizations that deliver quality products and services can face low customer satisfaction when their
Different MRP / Pricing for same product but different batches
We often face the following situations where MRP of a particular product changes on every purchase and hence we have to charge the customer accordingly. This can't be solved by Batch tracking as of now so far as I understand Zoho. How do you manage it as of now?
ZOHO BOOKS - RECEIVING MORE ITEMS THAN ORDERED
Hello, When trying to enter a vendor's bill that contains items with bigger quantity than ordered in the PO (it happens quite often) - The system would not let us save the bill and show this error: "Quantity recorded cannot be more than quantity ordered."
Refresh frequency
Dear Zoho Team, I really, truly appreciate that Zoho Books gets frequent updates. As a matter of fact this is how a good SaaS company should stay on top. However, I feel that I have to hit refresh almost every day. This was exciting at the beginning but
Refund
My plan expired today, and I updated my payment details with a new credit card. At the same time, I wanted to downgrade, but the system wouldn’t allow the downgrade until the payment details were updated. As a result, I was charged for the same plan before
Calling Function via REST API with API Key gives 401 using Zoho Developer
Hi, I created a couple of functions using the one month trial of Enterprise edition, which I was able to call using the API Key method from Postman and from an external site. Now that my trial has expired, I have created the same functions in the Developer
Error due to - 'Internal Exception' when uploading Sign-generated PDF file to workdrive via Deluge in Zoho CRM
Hi I wasnt getting this error a few days ago and my code had not changed, so I'm wondering if there's a Zoho bug somewhere? I am downloading a PDF file from a Zoho Sign url using invokeurl and then uploading it to a Workdrive folder using zoho.workdrive.uploadFile.
Embed CRM record images in email templates
I have email templates that I want to embed dynamic images in their body - not as an attachment. For the context, the image is a QR code individual to each contact. So there are couple of challenges for which I think there is no solution in CRM: 1/ I
Assign multiple departments to multiple helpcenters
Hi there! I have a reseller company for a software and I'm using Zoho Desk as my helpcenter and ticket management system. The software is great and I would like to make a suggestion! With multi-branding activated, your departments that visible in help
Zoho Desk Training
Hello, We've had Zoho desk for a while now, but we run into issues occasionally, and I was wondering if there was a customer who currently uses it and really enjoys the functionality, that would be wiling to chat with us?
PO Based Advance payment to Vendor
We recommend to introduce a provision at PO to make advance payment to vendors and auto apply that advance paid later at the time of Vendor Bill submission for that PO. This will help us track PO-wise Total Payments.
How to get Quickbooks Desktop Info into Zoho?
Our team has used Quickbooks desktop for years and is looking at switching to Zoho books in 2026. I want to bring all old sales history over since we use Zoho CRM. I can export Item sales history and generic sales orders from Quickbooks desktop. How do
ZeptoMail API Request
We tried to send mail using ZeptoMail using Django. Following is my payload {'from': {'address': 'abc@abc.com'}, 'to': [{'email_address': {'address': 'xyz@xyz.in', 'name': 'Bhavik'}}], 'subject': 'Report Name', 'htmlbody': '<p>Test</p>'} Following is
Mass import of documents into Zoho Writer
I'm using Google's word processor at the moment but feel that Zoho does a better job (on the online apps market). Iwant to move my documents (about 50-70) to Zoho but it seems to me that I have to import them seperately. Is it already possible to upload several documents at a time or is this a forthcoming feature? Cheers Rolli :?:
Add home page or dashboard in CRM customer portal
is it possible to add home page or dashboard in CRM customer portal?
User Tips: How to change the the label display name of a system defined field
Most users know how to change field label names via Settings > Modules & Fields but if you want to change the name of a system defined field you can’t as there is no “edit properties” option. However with a simple hack you can edit any system defined
Search not working!
I have items in my notebook tagged but when I search for a tag nothing comes up! Any fix for this?
Zoho CRM Community Digest - October 2025 | Part 1
Hello Everyone! Here's a quick recap of first two weeks of October! Product Updates: Zoho CRM Android App Update: Surveys, Blueprints, and Smarter Mobile Features! Zoho CRM’s Android app just got a useful upgrade. You can now share records, upload your
Automate onboarding emails with CRM Workflow and Accounts module
We’re a B2B SaaS company selling to public-sector organisations. Each organisation is stored as an Account in Zoho CRM, and each organisation typically has multiple associated Contacts. Our backend syncs product-usage data (setup status, user activity,
Important update: Enhanced security measures for account operations in Zoho Cliq
Greetings from the Zoho Cliq team! We’d like to share an important security update that has an influence on some admin actions such as password reset, MFA reset, and MFA backup code generation. What’s changing? With our latest security enhancements, these
Sales Receipts Duplicating when I run reports why and how do we rectify this and any other report if this happens
find attached extract of my report
No Functional Autosave or Manual Save Button
Application : Zoho Notebook So I wanted to try Zoho Notebook(On Ubuntu) as an application, I installed the application and went solving my LeetCode problems visually(Drawing mode), at one point the app just stopped saving anything... Every time I tried
Enterprise subscription support
My organization sells subscription services to enterprise customers, which is a different model from the consumer subscription model that Zoho Billing has been designed to support and I beleve this capability should be added. An enterprise subscription
Issue with Creator's IF logic
Hi, I found the following code produces unexpected results: if(-1.0 < 0.0000000) { info "True"; } else { info "False"; } if(-1.0 < 0.000000) { info "True"; } else { info "False"; } The output returned is: False True However, the
Need option to send Package PDF in shipment email (Shipment PDF is missing Lot info)
Is there any way to automatically attach the Package PDF instead of (or alongside) the Shipment PDF in the notification emails? We really need this feature because the default Shipment PDF creates a blind spot for our customers. It does not display Batch/Lot
Next Page