Accelerate Github code reviews with Zoho Cliq Platform's link handlers

Accelerate Github code reviews with Zoho Cliq Platform's link handlers



Code reviews are critical, and they can get buried in conversations or lost when using multiple tools. With the Cliq Platform's link handlers, let's transform shared Github pull request links into interactive, real-time code reviews on channels. Share PR links in any reviewer groups or channels to get approval or receive review comments instantly.

Pre-requisites:

  • Connection creation :

  • Creation of form function

    • To create a form function, navigate to Bots & Tools and select "Functions."

    • On the right side, click "Create Function" and name it "addCommentPullRequest."

    • Set the Function Type to "Form." The purpose of this function will be explained in Step 4.

Step 1: Create an extension and add a link handler

  • After successfully logging into Cliq, hover over the top right corner and click on your profile. Then navigate to Bots & Tools > My Extensions.
  • On the right side, click the Create Extension button.
  • To learn more about extensions and their purposes, refer to the Introduction to Extensions.
  • Create an extension using your preferred name. Please specify the following details: the extension name, a description (to help users understand the extension's purpose), and an image to identify it.
  • Under the link handlers section, enter github.com to configure the extension to preview links for that domain.
  • Bundle the newly created form function - addCommentPullRequest, as it is mandatory to include at least one component to an extension, and then click Create.

 

Step 2: Configuring the preview handler

  • After creating an extension, a popup will appear that provides an overview, which includes information about the extension. It will also list the connectors, showing the components bundled with the extension and their associated app keys.
  • Additionally, handlers will allow you to configure access, customize settings, and manage links within the extension.
  • Navigate to handlers, scroll down, and under link handlers, hover over to preview handler.

  • The Preview Handler expands a rich response when a URL is shared in a conversation. Click edit code and copy and paste the script below.
Script
  1. pullRequest_url = url;
  2. owner = pullRequest_url.getSuffix(".com/").getPrefix("/");
  3. pullRequest_ID = pullRequest_url.substring(pullRequest_url.lastIndexOf("/pull/") + 6);
  4. repositoryName = pullRequest_url.substring(pullRequest_url.indexOf("github.com/") + 11,pullRequest_url.lastIndexOf("/pull/"));
  5. // Fetch PR details from GitHub API
  6. getPRDetails = invokeurl
  7. [
  8. url :"https://api.github.com/repos/" + repositoryName + "/pulls/" + pullRequest_ID
  9. type :GET
  10. connection:"githubforcliq"
  11. ];
  12. // Parse API response
  13. pr_title = getPRDetails.get("title");
  14. pr_author = getPRDetails.get("user").get("login");
  15. changed_files = getPRDetails.get("changed_files");
  16. arguments = Map();
  17. arguments.put("pullRequest_ID",pullRequest_ID);
  18. arguments.put("repositoryName",repositoryName);
  19. arguments.put("owner",owner);
  20. arguments.put("pr_title",pr_title);
  21. arguments.put("pr_author",pr_author);
  22. arguments.put("changed_files",changed_files);
  23. // Build preview response
  24. response = {"title":"Pull Request -" + pr_title,"type":"link","provider_url":pullRequest_url,"faviconlink":"https://zoho.com/sites/default/files/cliq/images/githubmark.png","thumbnail_url":"https://zoho.com/sites/default/files/cliq/images/githubmark.png","fields":{"data":{{"label":"Author","value":pr_author},{"label":"Files Changed","value":changed_files}}},"actions":{{"hint":"Approve a pull request instantly","style":"+","label":"Approve","type":"button","params":arguments},{"hint":"Add review comments to the pull request","label":"Add a comment","type":"button","params":arguments}}};
  25. return response;

Step 3: Configuring the action handler

  • We have refined the response of the pull request URL when it is shared in a Cliq conversation. Now, we need to define the actions to be performed when the buttons in the unfurled response are clicked.
  • This can be configured in the action handler. To locate it, navigate to the extension handlers. Scroll down to find the link handlers section, then hover over to the action handler.
  • The action handler executes actions when the buttons in the unfurled card are clicked. Click "Edit Code" and copy and paste the script below.
Script
  1. label = target.get("label");
  2. pullRequest_ID = target.get("params").get("pullRequest_ID");
  3. repositoryName = target.get("params").get("repositoryName");
  4. owner = target.get("params").get("owner");
  5. response = Map();
  6. if(label.equals("Approve"))
  7. {
  8. params = Map();
  9. params.put("event","APPROVE");
  10. headers = Map();
  11. headers.put("Content-Type","application/json");
  12. approvePullRequest = invokeurl
  13. [
  14. url :"https://api.github.com/repos/" + owner + "/" + repositoryName.getSuffix("/") + "/pulls/" + pullRequest_ID + "/reviews"
  15. type :POST
  16. parameters:params + ""
  17. headers:headers
  18. detailed:true
  19. connection:"githubforcliq"
  20. ];
  21. info approvePullRequest;
  22. responseCode = approvePullRequest.get("responseCode");
  23. if(responseCode == 200)
  24. {
  25. pull_request_url = approvePullRequest.get("responseText").get("pull_request_url");
  26. pr_title = target.get("params").get("pr_title");
  27. pr_author = target.get("params").get("pr_author");
  28. changed_files = target.get("params").get("changed_files");
  29. response = {"card":{"title":"✅ Pull Request Approved","theme":"modern-inline"},"buttons":{{"label":"View Pull Request","hint":"","type":"+","action":{"type":"open.url","data":{"web":pull_request_url}}}},"text":"*Pull Request* :" + pr_title + "\n*Author* : " + pr_author + "\n*Files changed*:" + changed_files};
  30. return response;
  31. }
  32. else
  33. {
  34. banner = {"text":"Pull request approval failed!","status":"failure","type":"banner"};
  35. return banner;
  36. }
  37. }
  38. else
  39. {
  40. return {"type":"form","title":"Add Review Comment","name":"addComment","button_label":"Add","inputs":{{"label":"Review Comment","name":"comment","placeholder":"Leave a note for the author or your team","min_length":"0","max_length":"500","mandatory":true,"type":"textarea"},{"name":"pullRequest_ID","value":pullRequest_ID,"type":"hidden"},{"name":"repositoryName","value":repositoryName,"type":"hidden"},{"name":"owner","value":owner,"type":"hidden"}},"action":{"type":"invoke.function","name":"addCommentPullRequest"}};
  41. }
  42. return Map();
 

Step 4: Handling the form submit handler to add comments to a pull request

  • When clicking the "Add a comment" button, a form will be triggered to allow users to add comments in the specified multi-line input text field. This form should be submitted using the form functions in Cliq.
  • To create this function, navigate to Bots & Tools > Functions. On the right side, click "Create Function" and name the function "addCommentPullRequest." Choose the Function Type as "Form."
  • After that, click "Save & Edit Code" and paste the script provided below. 
Script : addCommentPullRequest - Form Submit Handler
  1. response = Map();
  2. formValues = form.get("values");
  3. pullRequest_ID = formValues.get("pullRequest_ID");
  4. repositoryName = formValues.get("repositoryName");
  5. owner = formValues.get("owner");
  6. comment = formValues.get("comment");
  7. params = Map();
  8. params.put("body",comment);
  9. params.put("event","COMMENT");
  10. headers = Map();
  11. headers.put("Content-Type","application/json");
  12. addComment = invokeurl
  13. [
  14. url :"https://api.github.com/repos/" + owner + "/" + repositoryName.getSuffix("/") + "/pulls/" + pullRequest_ID + "/reviews"
  15. type :POST
  16. parameters:params + ""
  17. headers:headers
  18. detailed:true
  19. connection:"githubforcliq"
  20. ];
  21. info addComment;
  22. responseCode = addComment.get("responseCode");
  23. if(responseCode == 200)
  24. {
  25. banner = {"text":"Comment added to the pull request","status":"success","type":"banner"};
  26. return banner;
  27. }
  28. else
  29. {
  30. banner = {"text":"Unable to add review comments!","status":"failure","type":"banner"};
  31. return banner;
  32. }
  33. return Map(); 

Note :

You need to configure the app link to get a rich, unfurled response for the GitHub PR links posted in any chat. Refer to the link below to configure the unfurl link in Zoho Cliq.

🔄 Workflow explanation  

With this custom solution, GitHub Pull Requests can be shared instantly in any chat, group, or channel to get them reviewed by designated reviewers or top collaborators of the repository.
 

💼 Business benefits  

  • Faster review cycles – Reduces turnaround time by bringing PRs directly into team conversations.
  • Improved code quality – Promotes timely feedback from key collaborators and senior reviewers.
  • Increased developer visibility – Ensures pull requests don’t go unnoticed or remain idle.
  • Streamlined collaboration – Centralizes communication around code changes, reducing context-switching. 
No more gaps between the coding lifecycle and collaboration. Implementing rich previews for GitHub pull requests speeds up the development process, leading to better visibility, quicker feedback, and more substantial code ownership.

We're here to help, so don't hesitate to reach out to support@zohocliq.com with any questions or if you need assistance in crafting even more tailored workflows.


      • Sticky Posts

      • Customer payment alerts in Zoho Cliq

        For businesses that depend on cash flow, payment updates are essential for operational decision-making and go beyond simple accounting entries. The sales team needs to be notified when invoices are cleared so that upcoming orders can be released. In contrast,
      • Automating Employee Birthday Notifications in Zoho Cliq

        Have you ever missed a birthday and felt like the office Grinch? Fear not, the Cliq Developer Platform has got your back! With Zoho Cliq's Schedulers, you can be the office party-cipant who never forgets a single cake, balloon, or awkward rendition of
      • Accelerate Github code reviews with Zoho Cliq Platform's link handlers

        Code reviews are critical, and they can get buried in conversations or lost when using multiple tools. With the Cliq Platform's link handlers, let's transform shared Github pull request links into interactive, real-time code reviews on channels. Share
      • App Spotlight : PagerDuty for Zoho Cliq

        App Spotlight brings you hand-picked apps to enhance the power of your Zoho apps and tools. Visit the Zoho Marketplace to explore all of our apps, integrations, and extensions. In today's fast-paced world, seizing every moment is essential for operational
      • Automate your status with Cliq Schedulers

        Imagine enjoying your favorite homemade meal during a peaceful lunch break, when suddenly there's a PING! A notification pops up and ruins your moment of zen. Even worse, you might be in a vital product development sprint, only to be derailed by a "quick

        • Recent Topics

        • Kaizen# 209 - Answering Your Questions | All About Client Script

          Hello everyone! Welcome back to another exciting Kaizen post! Thanks for all your feedback and questions. In this post, let's see the answers to your questions related to Client Script. We took the time to discuss with our development team, carefully
        • Email Integration - Zoho CRM - OAuth and IMAP

          Hello, We are attempting to integrate our Microsoft 365 email with Zoho CRM. We are using the documentation at Email Configuration for IMAP and POP3 (zoho.com) We use Microsoft 365 and per their recommendations (and requirements) for secure email we have
        • Search in Zoho Community Not Working

          I realize this is a bit of a meta topic, but the search for the various Zoho Communities appears to not be working. I'm under the impression that they run on some version of the Zoho Desk platform, so I'm posting this here.
        • I need to do crud with snippet html

          I need to implement a form with an improved user interface. I would like to use snippets to build a CRUD that allows me to create and update records. How could I achieve this using snippets?
        • Allow Stripe Credit Card and Stripe ACH payment methods to be enabled separately on an invoice.

          I need to be able to pick at the invoice level whether Stripe Credit Card and/or Stripe ACH payment methods are available. Currently, I'm not able to select from the two Stripe payment methods individually on an invoice. However, there are some larger
        • Enhancements to finance suite integrations

          Update: Based on your feedback, we’ve updated the capabilities for integration users. In addition to the Estimates module, they can now create, view, and edit records in all the finance modules including Sales Order, Invoices, Purchase Order. We're also
        • Meeting impossible to use when sharing screen

          he Meeting tool in Brazil is practically unusable when sharing anything, whether it’s a presentation or simple navigation. When accessed via Cliq, the situation gets even worse: even basic calls fail to work properly, constantly freezing. And as you are
        • Connecting two modules - phone number

          Hi, I’d like some guidance on setting up an automation in Zoho CRM that links records between the Leads module and a custom module called Customer_Records whenever the phone numbers match. Here’s what I’m trying to achieve: When a new Lead is created
        • Resume Harvester: New Enhancements for Faster Sourcing

          We’re excited to share a set of enhancements to Resume Harvester that make sourcing faster and more flexible. These updates help you cut down on repetitive steps, manage auto searches more efficiently, and review candidate profiles with ease. Why we built
        • Incorrect “correct” password on email client apple mail

          I have troubleshot this account several times. I have deleted and re added account. It keeps saying incorrect password. Can you check that it is not locked on your end?
        • Is it possible to lock editing subform rows?

          Ideally editing would only be locked after the form has been updated but I still want them to be able to add new subform records at any time and they should be able to delete rows from the subform. It is a named subform if that's relevant however the
        • "Spreadsheet Mode" for Fast Bulk Edits

          One of the challenges with using Zoho Inventory is when bulk edits need to be done via the UI, and each value that needs to be changed is different. A very common use case here is price changes. Often, a price increase will need to be implemented, and
        • What is the maximum file size of a video upload in Zoho chat?

          Can I upload a 20 mb video file and share it with my colleagues? 
        • The Social Wall: September 2025

          Hello everyone, As we step into the fall season, some major updates are on the horizon. Meanwhile, here are the exciting updates we rolled out this September. Approvals in iOS Managing approvals just got more seamless on mobile. With this update, the
        • Update a field in ALL all calls under a contact

          HI guys! I have written some deluge code to update a field in my calls after i have comepleted the call, i need this field to update in all my scheduled calls as well that are comeing up. I just cant seem to get it to work, i have put teh code below,
        • MS Teams Meeting to Zoho CRM

          Has anyone figured out a good way to push MS Teams meeting info on a trigger of "meeting end" to Zoho CRM? We're looking for a way to take attendees of a meeting and meeting duration and push it into Zoho CRM after the meeting has ended. If I can just
        • In place field editing for candidates

          Wondering about any insight/best practices for efficiently updating candidate records while reviewing them in a Job Opening pipeline. We can do in-field editing (e.g. update job title or City) only when we have the full candidate record open, however
        • Automatic Matching from Bank Statements / Feeds

          Is it possible to have transactions from a feed or bank statement automatically match when certain criteria are met? My use case, which is pretty broadly applicable, is e-commerce transactions for merchant services accounts (clearing accounts). In these
        • Verifying Zoho Mail Functionality After Switching DNS from Cloudflare to Hosting Provider

          I initially configured my domain's (https://roblaxmod.com/) email with Zoho Mail while using Cloudflare to manage my DNS records (MX, SPF, etc.). All services were working correctly. Recently, I have removed my site from Cloudflare and switched my domain's
        • Fat Download of Ulaa Browser

          I just observed that Ulaa Browser is offering an one-capsule big download. These days it is a custom to offer a small bootstrap downloader and based on user customization options an appropriate download completes. And this is particularly common with
        • 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.)
        • Changing the Default Search Criteria for Finding Duplicates

          Hey everyone, is it possible to adjust the default search criteria for finding and merging duplicate records? Right now, CRM uses some (in my opinion nonsensical) fields as search criteria for duplicate records which do nothing except dilute the results.
        • Billing Management: #8 Usage Billing in Logistics & Delivery Services

          The logistics and delivery industry thrives on movement and precision. Every delivery completed, every kilometre driven, and every ton transported is a measurable activity. However, billing often lags behind. Many logistics companies still rely on fixed-rate
        • Create custom rollup summary fields in Zoho CRM

          Hello everyone, In Zoho CRM, rollup summary fields have been essential tools for summarizing data across related records and enabling users to gain quick insights without having to jump across modules. Previously, only predefined summary functions were
        • Zoho sheet for desktop

          Hi is zoho sheets available for desktop version for windows
        • Tags for New Tickets

          Hi there, When creating a new ticket, there is currently no way to choose a tag you would like to associate with the new ticket. Being able to associate a tag while creating a new ticket will be very beneficial as it will save time and flow well with
        • Default Sorting on Related Lists

          Is it possible to set the default sorting options on the related lists. For example on the Contact Details view I have related lists for activities, emails, products cases, notes etc... currently: Activities 'created date' newest first Emails - 'created
        • Experience effortless record management in CRM For Everyone with the all-new Grid View!

          Hello Everyone, Hope you are well! As part of our ongoing series of feature announcements for Zoho CRM For Everyone, we’re excited to bring you another type of module view : Grid View. In addition to Kanban view, List view, Canvas view, Chart view and
        • Zoho Desk: No Incoming email

          Is Zoho Desk services down? No incoming email reflect to desk tickets.
        • Mapping a new Ticket in Zoho Desk to an Account or Deal in Zoho CRM manually

          Is there any way for me to map an existing ticket in Zoho desk to an account or Deal within Zoho CRM? Sometimes people use different email to put in a ticket than the one that we have in the CRM, but it's still the same person. We would like to be able
        • The present is a "present"

          The conversation around mental health has been gaining attention in recent years. Even with this awareness, we often feel stuck; the relentless pace of modern life makes us too busy to pause, reflect, and recharge. In the world of customer support, this
        • Zoho CRM - Widgets | Update #3 : Introducing SDK V1.5 along with new ZDK Methods and ZRC Support

          Hello everyone! Widgets in Zoho CRM just got a big upgrade! With the release of SDK v1.5, developers can now create more immersive widget experiences. This update elevates Widget development with new ZDK methods for easier interactivity and ZRC support
        • How to update "Lead Status" to more than 100 records

          Hello Zoho CRM, How do I update "Lead Status" to more than 100 records at once? To give you a background, these leads were uploaded or Imported at once but the lead status record was incorrectly chosen. So since there was a way to quickly add records in the system no matter how many they are, we are also wondering if there is a quicker way to update these records to the correct "Lead Status". I hope our concern makes sense and that there will be a fix for it. All the best, Jonathan
        • Unusual activity detected, account blocked

          I am unable to send emails and am getting the error "Outgoing blocked: Unusual activity detected. To unblock your account, please and submit a request. Learn more.". I am unsure as to why this is happening since all my activity is legitimate, mainly confirmation
        • Unlock agreement intelligence with Zoho Sign's latest AI updates

          Hello! If you've been struggling with long, complex agreements and spending way too much time on them, here's exactly what you'll want to hear: Zoho Sign now integrates with OpenAI's ChatGPT to make agreement management smarter and simpler. Acting like
        • Unable to Send Emails – Outgoing Mail Blocked (Error 554 5.1.8)

          Description: Hello Zoho Support Team, I am facing an issue with my Zoho Mail account ( admin@osamarahmani.tech ). Whenever I try to send an email, I get the following error: 554 5.1.8 Email Outgoing Blocked I would like to clarify that I have not done
        • Issue connecting Zoho Mail to Thunderbird (IMAP/SMTP authentication error)

          Dear Zoho Support, I am trying to configure my Zoho Mail account on Thunderbird, but I keep getting authentication errors. Account: info@baktradingtn.com Domain: baktradingtn.com Settings used: IMAP: imap.zoho.com, Port 993, SSL/TLS, Normal Password SMTP:
        • Payment issue with Mail Lite plan – personal NIF not accepted as payment info

          Hello, I have already contacted Zoho Support by email regarding this, but since I haven’t received any reply yet, I’m sharing it here as well to see if the community can help. I’m facing a payment issue for my Mail Lite plan. I have a personal account
        • Customer payment alerts in Zoho Cliq

          For businesses that depend on cash flow, payment updates are essential for operational decision-making and go beyond simple accounting entries. The sales team needs to be notified when invoices are cleared so that upcoming orders can be released. In contrast,
        • {"code":1038,"message":"JSON is not well formed"}

          Today this began failing: sales_order_data = zoho.books.createRecord("salesorders",books_organization_ID,order_data); with this error message. {"code":1038,"message":"JSON is not well formed"} This code has been running for two years. Here is the input
        • Next Page