Kaizen 185 - Subqueries in COQL API

Kaizen 185 - Subqueries in COQL API


Hello everyone!!

Welcome to another Kaizen week, where we discuss developer centric topics every Friday. This week, we have picked an interesting topic to discuss - Subqueries in COQL API.

Zoho CRM's CRM Object Query Language (COQL) is a powerful way to retrieve data from your CRM in a structured manner. With the release of COQL API version 7, we introduced a suite of enhancements, detailed in our previous Kaizen post. Today, we will cover one enhancement in detail—Subqueries.

Before the introduction of subqueries, filtering data dynamically across related modules required multiple API calls and additional code handling. Subqueries have fundamentally changed this, offering increased flexibility, reduced API consumption, and improved query performance. In today's Kaizen, we will explore what subqueries are, where and when to use them, their advantages, and a few practical use cases. We will also go through a few examples with different operators to help you understand COQL subqueries better.

What are Subqueries?

At its core, a subquery is a query nested within another query. This technique allows you to retrieve data from one module based on conditions derived from another related module. Think of it as a way to ask more sophisticated, multi-layered questions of your CRM data.
Imagine you're working on a CRM integration and need to find all Contacts associated with Accounts that have at least one Deal created in the last 30 days.

Before Subqueries:

Before subqueries, achieving this required multiple steps:
  1. Retrieve Account IDs from the Deals module where a Deal was created in the last 30 days - {"select_query": "SELECT Account_Name, Created_Time FROM Deals WHERE Created_Time >= '2025-01-01T00:00:00+05:30'"}
  2. Use these Account IDs in a second query to fetch associated Contacts - {"select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name in ('4876876000007481116', '4876876000007420031')"}
This requires writing extra code to store and use the Account IDs from the first query in the second query. This also means making multiple API calls, and handling responses separately. However, with Subqueries in COQL, this can now be achieved in a single query.

Using Subqueries:

With subqueries, you can achieve the same result in one single query!
{
  "select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name in (SELECT Account_Name FROM Deals WHERE Created_Time >= '2025-01-01T00:00:00+05:30')"
}
The Subquery (SELECT Account_Name FROM Deals WHERE Created_Time >= ...) retrieves Account IDs where a Deal was created in the last 30 days. The main query (SELECT Full_Name, Email FROM Contacts WHERE Account_Name IN (...)) fetches Contacts linked to those Accounts, all in one API call!
But there is a catch. Subqueries return only up to 100 records per query. If more than 100 matching records exist (e.g., over 100 Accounts with recent Deals in this case), the extra records are silently ignored. This can lead to incomplete results, so subqueries are best used when the filtered dataset is known to be small. Please head over to the Limitations section to learn about other limitations. 

Where to use Subqueries?

Subqueries in COQL are useful when there is a need to filter data dynamically based on conditions from other modules. Instead of fetching records separately and processing them, subqueries allow you to retrieve the required data in a single query.
Here are some common use cases where subqueries come in handy:

  • Segment accounts based on high-value Deal history: For instance, you can use subqueries to fetch accounts that have at least one high-value closed Deal. 
    { "select_query": "SELECT Account_Name FROM Accounts WHERE id in (SELECT Account_Name FROM Deals WHERE Amount > 100000 AND Stage = 'Closed Won')"}

  • Find Contacts whose Accounts have NEVER closed a deal: You can use subqueries in COQL to fetch Contacts that have no associated Deals. 
    {"select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name not in (SELECT Account_Name FROM Deals WHERE Stage != 'Closed Won')"}

  • Identify new Leads who haven’t been marketed to yet: For instance, if need to find all leads who were NOT part of a specific campaign, you can use Subqueries in COQL.
    {"select_query": "SELECT Full_Name, Email FROM Leads WHERE id not in (SELECT Leads FROM Campaigns WHERE Campaign_Name = 'T01')"}
    where Leads is a lookup up field in the Campaigns module.

  • Identify Deals Closed Outside a Specific Campaign: Similarly, to find all Deals that closed outside the “Q1 Marketing Blitz” campaign window, you can use the NOT BETWEEN operator with subqueries.
    { "select_query": "SELECT Deal_Name, Created_Time FROM Deals WHERE Closing_Date not between (SELECT Start_Date FROM Campaigns WHERE Campaign_Name = 'Q1 Marketing Blitz') and (SELECT End_Date FROM Campaigns WHERE Campaign_Name = 'Q1 Marketing Blitz')"}

Key Benefits of Using Subqueries

  • Reduces API calls and Credit consumption – Instead of fetching related data in multiple queries, subqueries fetch it in one go.
  • Less Data Processing – No need to store and process results from one query before making another.
  • Improved Query Efficiency – Filters and retrieves only relevant records dynamically.
  • Simplifies Integration Code – Removes extra loops and logic required to handle multiple queries.

Limitations of Subqueries in COQL

While subqueries improve performance and efficiency, they come with certain limitations:

  • Subqueries can only be used in the WHERE clause. You cannot use subqueries in SELECT or FROM.
  • There can be a maximum of 5 subqueries per query.
  • Only one column can be selected in a subquery. You cannot fetch multiple fields from the subquery.
  • Limited to 100 records per subquery. If more records are needed, or there could be more than 100 possible records in the subquery, consider using JOINs.

Credit Consumption Considerations

Please note that using subqueries does not introduce any change in credit consumption compared to regular COQL queries. Credit usage is determined by the number of records retrieved in the main query.
The following table outlines the credit consumption based on the number of records retrieved:

LIMIT (No: of records)
API credits consumed
1 - 200
1
201 - 1000
2
1001 - 2000
3

Subqueries vs. JOINs

A JOIN clause in COQL lets you retrieve fields from two (or more) related modules in a single query by linking them on a lookup field—no nested queries needed. It’s ideal when you need columns from both modules, ie., the parent module and the related modules, in the same response.

For example, consider a scenario where it's necessary to query all accounts that have associated Deal records created within the past month.
—without getting duplicate Account rows if an Account closed multiple Deals.

Subquery Approach:

{  "select_query": "SELECT Account_Name FROM Accounts WHERE id in (SELECT Account_Name FROM Deals WHERE Created_Time >= '2025-03-01T00:00:00+05:30')"}

The subquery first selects Account_Name from Deals where the Created_Time is within the past month. Then the main query fetches the Account_Name from Accounts, once per matching account.

JOINs Approach:

{ "select_query": "SELECT 'Account_Name.Account_Name', 'Account_Name.id' FROM Deals WHERE Created_Time >= '2025-03-01T00:00:00+05:30'"}

This JOIN COQL query queries the Deals module and pulls related fields from the Account_Name lookup (Account name and ID) for each Deal created in the last month. As a result, it returns duplicate rows for accounts that have multiple matching deals.

Sample Response:

Subquery
JOIN
 {
    "data": [
        {
            "Account_Name": "Chapmans",
            "id": "4876876000004946070"
        },
        {
            "Account_Name": "Customer Daily",
            "id": "4876876000005030168"
        },
        {
            "Account_Name": "Luma Infotech",
            "id": "4876876000007420031"
        },
        {
            "Account_Name": "Luma Biotech",
            "id": "4876876000007481116"
        }
    ],
    "info": {
        "count": 4,
        "more_records": false
    }
}




{
    "data": [
        {
            "Account_Name.id": "4876876000007481116",
            "Account_Name.Account_Name": "Luma Biotech",
            "id": "4876876000010128001"
        },
        {
            "Account_Name.id": "4876876000007481116",
            "Account_Name.Account_Name": "Luma Biotech",
            "id": "4876876000010128016"
        },
        {
            "Account_Name.id": "4876876000007420031",
            "Account_Name.Account_Name": "Luma Infotech",
            "id": "4876876000010128047"
        },
        {
            "Account_Name.id": "4876876000005030168",
            "Account_Name.Account_Name": "Customer Daily",
            "id": "4876876000010193006"
        },
        {
            "Account_Name.id": "4876876000004946070",
            "Account_Name.Account_Name": "Chapmans",
            "id": "4876876000010213010"
        }
    ],
    "info": {
        "count": 5,
        "more_records": false
    }
}

Why Subqueries Are Better in This Case:

  • No Duplicates: Subqueries ensure that each matching parent (Account) appears only once, even if multiple child records (Deals) match. This is perfect for deduplicated reporting or dropdown lists.
  • Cleaner Result: Easier to parse and use directly in UIs or aggregations where duplicates are not useful.
  • Lower Payload Size: Especially useful if you just want the Account info and don’t need Deal-level detail.
Both subqueries and JOINs allow you to retrieve related data, but when should you use one over the other?

Use Subqueries When:

  • You need to filter data based on related module conditions.
  • You do not need to fetch fields from multiple modules. ie., you want to query the inner lookup fields only in the WHERE clause, and not in any other clause.
  • You need deduplicated parent records.
  • The subquery has 100 or less records.

Use JOINs When:

  • You need to retrieve fields from multiple related modules in the same response. ie., you want to query the inner lookup fields in any clause other than the WHERE clause.
  • You are dealing with large datasets exceeding the subquery limit of 100 records.
  • You need detail per child record, even if it leads to duplicate parent values.

Operator support for Subqueries in COQL

When using subqueries in COQL, make sure to use the correct operators depending on whether the subquery returns multiple values or a single value.

Multi-Value Operators

These operators are to be used with the subqueries that return multiple values, which are then used in the main query. 
Operator
Description
Example use case and query
in
Checks if a value is present in a list of values returned by the subquery.
Fetch all Contacts whose Accounts have won high-value deals.

{"select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name in (SELECT Account_Name FROM Deals WHERE Stage = 'Closed Won' AND Amount > 100000)"}
not in
Excludes records where the value is present in the subquery result.
Fetch all Contacts whose Accounts have never closed a deal.

{ "select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name not in (SELECT Account_Name FROM Deals WHERE Stage = 'Closed Won')"}

Single-Value Operators

These operators require the subquery to return a single value. If the subquery returns multiple values, an error will occur. 
Operator
Description
Example use case 
=
Matches records where the field is equal to the subquery’s result.
Fetch Deals created on the same date as the latest deal.
!=
Retrieves records where the field is not equal to the subquery’s result.
Fetch Deals not created on the same date as the latest deal.
<, >, <=, >=
Compares a field with the single value returned by the subquery.
Fetch all Deals that closed before the latest high-value deal.
between
Ensures a field's value falls within a range.
Fetch all Deals closed between two specific deal closure dates.
not between
Excludes records within the range.
Fetch all Deals closed outside a specific date range.

Example 1: Using the IN operator to fetch Contacts linked to high-value Deals

{ "select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name in (SELECT Account_Name FROM Deals WHERE Amount > 100000 AND Stage = 'Closed Won')" }

Example 2: Using the NOT IN operator to fetch Contacts from Accounts that have never closed a Deal
{ "select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name not in (SELECT Account_Name FROM Deals WHERE Stage = 'Closed Won')"}

Example 3: Using the BETWEEN operator to identify Deals closed during a specific Campaign (Q1 Marketing Blitz)
{ "select_query": "SELECT Deal_Name, Created_Time FROM Deals WHERE Closing_Date between (SELECT Start_Date FROM Campaigns WHERE Campaign_Name = 'Q1 Marketing Blitz') and (SELECT End_Date FROM Campaigns WHERE Campaign_Name = 'Q1 Marketing Blitz')"}

Combine JOINs and Subqueries for Smarter Filtering

In many business scenarios, it is not enough to simply retrieve related fields via JOINs—you also need to dynamically filter data based on conditions from another module. This is where subqueries can be incredibly useful in conjunction with JOINs.

Let’s say you're analyzing deal performance and want to pull a list of Deals that are:
  • Associated with Active Campaigns
  • Linked to Accounts in high-revenue Industries (Annual Revenue > 10,000,000)
  • You need to fetch details from the related modules—like Account name, Campaign name, and Contact email—in the same query
Why this can't be solved easily: While COQL supports JOINs for pulling data from related modules and subqueries for dynamic filtering, you can’t do all of this in one approach alone.
  • JOINs allow you to retrieve fields from related modules (like Contact_Name.Email )—but they do not let you dynamically filter using fields from those modules.
  • Subqueries, on the other hand, allow you to filter based on fields from related modules (like filtering Deals based on the Annual Revenue of the associated Account)—but you can’t fetch fields from multiple related modules using just a subquery.
So, if you need to both filter based on fields in a related module (like Accounts.Annual_Revenue) and retrieve fields from related modules (like Contact_Name.Email, Campaign_Source.Campaign_Name), you need both tools.

Solution: Combine JOINs and Subqueries in the Same Query
{"select_query": "SELECT Deal_Name, Amount, Account_Name, Campaign_Source, Contact_Name.Email FROM Deals WHERE (Campaign_Source.Status = 'Active') AND Account_Name.Industry in (SELECT Industry FROM Accounts WHERE Annual_Revenue > 10000000 GROUP BY Industry)"}

This query:
  • Uses JOINs to fetch:
    • Contact_Name.Email – from Contacts
  • Uses a subquery to apply dynamic filtering on Deals based on the Industry of Accounts with Annual Revenue > 10000000. COQL subqueries return a maximum of 100 records. If multiple accounts satisfying the criteria share the same industry, using GROUP BY Industry ensures only unique industry values are returned. This helps stay within the 100-record limit and avoids redundant filtering.
In the results, you get a deduplicated, filter-accurate list of Deals tied to Active Campaigns and high-value industries—with rich contextual fields in one API call.

You can even use JOINs inside subqueries. For instance, to fetch all deals from Optical Networking accounts managed by Jane (jane.doe@zohotest.com), and include key details about the deal, contact, account, and campaign:
{ "select_query": "SELECT Deal_Name, Amount, Account_Name, Contact_Name.Email, Campaign_Source FROM Deals WHERE Account_Name in (SELECT id FROM Accounts WHERE Industry = 'Optical Networking' AND Owner.email = 'jane.doe@zohotest.com')"}

By combining JOINs and subqueries, you can handle more complex, real-world business requirements in a single query. JOINs help you enrich your data with fields from related modules, while subqueries let you apply smart, condition-based filters across modules. 

Advanced Filtering: Nested Subqueries

For more advanced use cases, you can nest subqueries within subqueries to create complex filtering conditions.
Let's say Imagine you need to identify all Contacts associated with Accounts that meet two specific criteria:
  • The Account is in the "Retail" industry.
  • The Account has at least one associated Deal that is in the "Closed Won" stage and has a value greater than $50,000.
This scenario is common in sales and marketing, where you want to target high-potential customers within a specific industry. Here's how you can achieve this using a nested subquery in COQL:
{
  "select_query": "SELECT Full_Name, Email FROM Contacts WHERE Account_Name in (SELECT id FROM Accounts WHERE Industry = 'Communications' AND id in (SELECT Account_Name FROM Deals WHERE Stage = 'Closed Won' AND Amount > 50000))"
}
Innermost Subquery: (SELECT Account_Name FROM Deals WHERE Stage = 'Closed Won' AND Amount > 50000)
This subquery identifies all Account_Name values from the Deals module where the Stage is "Closed Won" and the Amount is greater than $50,000. Although the field name is Account_Name, it's a lookup to the Accounts module, so it returns the Account ID. This effectively isolates Accounts that have closed high-value deals.

Middle Subquery: (SELECT id FROM Accounts WHERE Industry = 'Retail' AND id IN (...))
This filters Accounts by the "Retail" industry and ensures that only those whose ID appears in the innermost subquery are selected.

Main Query: SELECT Full_Name, Email FROM Contacts WHERE Account_Name IN (...)
Finally, the main query retrieves the Full_Name and Email of all Contacts whose Account_Name matches the id values returned by the middle subquery.

Info
Note: COQL supports a maximum subquery nesting depth of 5, and you can include up to 5 subqueries total within a single query. The nesting limit refers to subqueries embedded within the WHERE clause of another subquery. 
Subqueries in COQL are a game-changer for developers looking to build efficient, context-aware queries across modules—allowing dynamic filtering that was previously only possible with multiple API calls. While JOINs help you fetch rich, multi-module data in a single response, subqueries let you filter records based on conditions from related modules. And when you combine the two, you unlock a powerful mechanism to tackle real-world CRM business cases with precision and clarity.

For advanced use cases, don’t hesitate to nest subqueries—COQL allows up to five levels deep—giving you the flexibility to build truly nuanced filters. Mastering the balance between JOINs and subqueries is key to writing smarter, cleaner, and more performant queries.

We hope you found this guide useful in understanding and implementing COQL subqueries. If you have any questions or require further clarification, please don't hesitate to leave a comment below or reach out to us directly at support@zohocrm.com

Keep experimenting, and as always, happy querying!




    • Sticky Posts

    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #226: Using ZRC in Client Script

      Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
    • Kaizen #222 - Client Script Support for Notes Related List

      Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
    • Kaizen #217 - Actions APIs : Tasks

      Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
    • Kaizen #216 - Actions APIs : Email Notifications

      Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
    • Recent Topics

    • Zoho invoice doesn't support Arabic language

      I added a clause in the terms & conditions section in Arabic but it doesn't appear when I sent or print it.
    • Recurring Invoice Placeholder Not Updating Billing Period

      Hi, I’m using Zoho Invoice Free and want the billing period to update automatically in recurring invoices. In Item Description I tried: Billing Period: %(m-6)% %(y)% to %(m-1)% %(y)% but even if the invoice date is in 2026, it still shows the period based
    • Related list Mobile Device

      Hello, We use an the Zoho creator application to make reports linked to Accounts. On the computer: it's easy to go the Account and see all the created reports in the related list below On iPad/Phone ZOHO CRM APP: we cannot see the reports on those accounts
    • Can't update the company address in zoho invoice

      Dear Sir/Madam, I want to update the company address in Zoho Invoice but failed. It popped out a sentence "Invalid value passed for Website". Please advice how to solve this problem. Thank you.
    • Is there a plan to allow for the hierarchical organization of Customers / Companies in Zoho Billing?

      We have a few customers who have organizational structures that we haven't quite found a way to deal with in Zoho Billing. In CRM, these sub-companies (or subsidiaries or whatever you want to call them) all have another CRM account as the parent account.
    • 【Zoho CRM】作業リスト機能リリースのお知らせ

      ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中から、作業リスト機能リリースのお知らせ情報をご紹介します。 目次 作業リスト機能 概要 機能① 自分の未完了の活動 機能② 処理待ち 機能③ 自分の作業リスト 作業リスト機能 概要 営業チームでは、CRM内に業務やデータが分散しているため、管理が煩雑になりがちです。この断片化は、機会の見逃しや生産性の低下につながります。 作業リスト機能は、タブを横断する業務項目をひとつのカスタマイズ可能なダッシュボードに集約し、業務を効率的に管理できるようにします。
    • SalesIQとPageSenseの利用について

      初めての投稿で場違いだったらすいません。 弊社ではSalesIQを運用しているのですが、追加でPageSenseの導入もしたいと現場からの声があります。 両サービスともクッキー同意バナーが必要なサービスなのですが 弊社では同意無しに情報はとりませんという方針なので 2つ入れると2つバナーを出す必要がでてきます・・・ 両サービスを運用されてる方があれば運用状況とか教えてほしいです。 PageSenseについては詳細まで機能を理解してないなかでの質問です。
    • Parent-Child Tickets using API or Deluge

      Hi Everyone, We are looking at the parent-child ticketing features in Zoho Desk. We want to be able to create a parent ticket at customer level and nest child tickets underneath. The issue we are facing is to be able to automate this. I'm checking the
    • Closing connected ticket after closing WA conversation

      Hi, At the moment, once someone sends a message to our WA number, a corresponding ticket is automatically created. After the question is answered, our support department closes the chat/conversation. However, after that, the connected ticket is still
    • Note sync turn off

      Hi, Is it possible to turn off notes sync between task notes and the parent module? (Account/Deal)
    • Basic Plan Active but Survey Creation Still Limited to 3 Surveys

      I have an active Basic (Monthly) subscription (valid period: Dec 24, 2025 – Jan 24, 2026), but the system still limits survey creation to only 3 surveys, which matches Free plan behavior. The subscription appears active in Portal Information, however
    • 2025 in Review: Powering Field Services Forward—One Feature at a Time

      As 2025 draws to a close, it’s time to pause and reflect on a year of meaningful progress at Zoho FSM. This year was all about listening closely to our customers and partners, building with purpose, and continuously improving the way field service teams
    • API Support for Creating Invoices with Batch-Tracked Items

      Hi Zoho Community, I am working on an integration where we create invoices in ERPNext and push them to Zoho Books. I need to send batch-tracked items (batch numbers) when creating invoices. I could not find any reference in the Zoho Books API documentation.
    • New to automation - please help

      Hi there! We are new to automations in Zoho. We built out one automation campaign and it seems to be firing off for some people but others not. Please advise what's the best practice or if anything we should tweak. Thank you so much!
    • Unable to Create Zoho Booking via the Book Appointment API

      Its giving the below error {     "response": {         "errormessage": "Error setting value for the variable:customer_details\n null",         "status": "Error"     } } Request: POST Url: https://www.zohoapis.in/bookings/v1/json/appointment attached Zoho-oauthtoken
    • Task Details on task template

      When creating a task template in settings that task details seem to be missing. Is it not possible to set the details of a task, such as the priority, type, reminder settings, and custom field values?
    • Building Toppings #3 -Testing and publishing Bigin toppings

      Hey Biginners! In previous forum posts, we discussed what a Bigin topping is and explored the Bigin Developer Console's features. In this post, we're going to create a topping from scratch and discuss how to test and publish it. Our topping will automate
    • markdown files?

      How can I import a markdown file into a note?
    • Mail to Zoho Notebook

      In the Instuctiosn I faound as email add@notebook.app In my account I see add@eu.notebook.app What is correct please
    • Auto-Invite Users to Portals in Zoho CRM based on Conditions

      Hello Everyone, You can now automate portal invitations in Zoho CRM with the new Auto-Invite users feature in Portal management. No more manually enabling portal access one by one. With this enhancement, you can automatically send invites for users to
    • Growth You can Count On: Zoho Billing's 2025 Journey

      As we wrap up 2025, we’re reflecting on a year rooted in steady progress and meaningful growth for Zoho Billing. Every enhancement we have introduced was built to support scalable and reliable billing growth for your business. From launching the Enterprise
    • Need help with creating workflow with Bigin and Clickup

      Can you please help me with this? I am trying to create a workflow in Zoho Flow wherein a bigin Pipeline deal moves to Decision Closing, it will create a task and subtasks in Clickup, under the condition/filter that the Deal name contains the word Social
    • [Webinar] Automate generation of wills, trusts, POAs, and other estate planning documents with Zoho Writer

      Managing the lifecycle of the estate planning documents such as wills, trusts, and POAs, from client intake to final storage, can be complex and time-consuming. Join our live webinar to learn how Zoho Writer transforms this process by automating document
    • Create / Update Rule in TeamInbox when record is updated in ZohoCRM using flow?

      I'm currently evaluating options and trying to work out if the possible scenario is possible; If a record in ZohoCRM is updated, take 2 of the fields from that - lets call them 'OrderRef' and 'OrderTo'. Using flow, if a record is added or updated, add
    • Plans to allow more columns of monitoring, and monitoring not only your own channels?

      Are their any plans to allow more columns of monitoring, and monitoring not only your own channels? Here's why - I'm sure I'm not alone in that we sell other brands products, so not only am I interested in my own brand social channels, but also the social
    • Unwrapping the best practices for the Zoho Desk mobile app: Part 1

      In focus: Empowering the field and frontline customer support representatives Imagine having to carry your computer everywhere to respond to customers, handle escalations, and update your process. This series presents you with efficient tips to handle
    • dealing with post dated cheques

      Hi, can you help me please the best way to deal with this We sell an item of three months duration that is paid for with post dated cheques in monthly stages example - item is sold £3000 Cheque 1 is for £1000 due at time of sale (say Sept) cheque 2 is dated 25th of next month (Oct) cheque 3 is dated 25th of next month +1 (Nov) Now, with invoice number one it's simple - i send a standard invoice as usual But with the other two here's what i want zoho to do next month i want it to send an invoice on
    • Is there a way to sell in a practical method multiple subscriptions of the same product? i.e. domain names

      In evaluating Zoho Billing, a hurdle to adopting it is that Zoho Billing does not seem designed to support businesses that sell multiple subscriptions of the same product. In our case, we need to sell and manage several domain names per client. Am I right
    • Bug Report: "Name A-Z" sorting fails when Note titles start with an Emoji

      Hello, I recently migrated from Evernote (~2600 notes across 23 notebooks). I use emojis at the start of my note titles for visual organization. The Issue: When I set the view to Sort by: Name (A to Z), the sorting logic breaks for any note starting with
    • Copy & Paste not working

      I could create and save 10 new documents but when I go to copy and paste content (just text) into them, only 1 of 10 would save the content. It would appear to save the content but when I go back into the documents, they are empty.
    • Currency for Petty Cash

      Currencies for Petty Cash should be available
    • editing/applying online payments

      We have customers who pay part or all of an invoice and then cancel their service and want the payment as a credit to future work. It would be ideal if we could make it an excess payment and then void the invoice. I can't make it an excess payment because
    • Contacts per department

      Hello, Is it possible to limit Contacts to a Department? Thanks
    • This site can’t be reached mail.zoho.com took too long to respond

      In my office at any system, we couldnt able to login zoho email. it shows " This site can’t be reached mail.zoho.com took too long to respond". please fix it soon.
    • Can send email from zoho mail, but can't receive any.

      Hi, My domain is sattvameditationresort.com. I've updated MX records with those of Zoho. But i can't send any mails to this email id from gmail. I have checked the MX status with MXTOOLS, its showing the correct entry either. The error is as shown below:
    • My domain did not activate

      Hi, my domain (apsaindustrial.com.ar) did not activate, and the phone verification message never arrived. Please would you solve this problem? Thanks.
    • Host not found?

      Howdy! So i'm trying to add my custom domain for with the mail server. I have 100% control of my DNS and have tried every single option (TXT, CNAME, and even HTML) multiple times, ensuring i did it properly, to no luck. I get the same error message every
    • Auto End Chats After Customer Inactivity

      Hello Everyone, I may be missing something, but is there a way to auto-end chats when a customer has been inactive for an amount of time? I have several operators (we use a shared set of account with schedules for people... that's another story) but at
    • Report on opportunities showing only the last note added.

      Hi I need to create a report that shows the most recent note added to each opportunity. This is so management can see what the latest update is according to the assigned salesperson. One workaround is to use the status field but this implies added manual work and mistakes as the salesperson would have to copy the existing status to a note before adding the latest status... otherwise the activity history would be lost. My current workaround is a report on Notes with Opportunities as the related module.
    • Please add Zelle as an online payment option

      Hello, I would like to request Zelle be added to the online payment service providers for Zoho Invoice. Considering how ubiquitous Zelle has become as a way to pay people via the major banking institutions, I feel like many freelancers would benefit from
    • Next Page