Incoming Lead Email Intent Detection using Zia Assistant API in Zoho CRM

Incoming Lead Email Intent Detection using Zia Assistant API in Zoho CRM


Hello all! 
Welcome back to a fresh Kaizen week.
In this post, we will explore how Zia detects positive intent from incoming emails in the Leads module using the Zia Assistant API along with Workflow Rules and Custom Functions in Zoho CRM.

Use Case 

Problem

Sales teams often manage 1000+ leads in Zoho CRM. Sometimes, a lead sends an email showing clear buying interest such as:
  1. I want to buy your product.
  2. Please share pricing details.
  3. Can we schedule a demo?
These important emails can easily get buried among other emails and activities. As a result, sales representatives may respond after several days, and by that time, the lead may already move to a competitor. This leads to missed opportunities and revenue loss.

Solution

Using Workflow, Deluge, CRM Email APIs, and Zia Assistant API, incoming lead emails are automatically analyzed for purchase intent.

When a lead sends an email with strong buying interest:
  1. Workflow automatically triggers the custom function.
  2. The function fetches the latest incoming email.
  3. Zia Assistant analyzes the email intent and buying interest.
  4. If positive purchase intent is detected, CRM instantly performs multiple automated actions.
The system automatically:
  1. Marks the Lead as an Interested Lead.
  2. Creates a high-priority follow-up task.
  3. Adds a note to the lead record.
  4. Sends an alert email to the Lead owner.
  5. Sends an automatic acknowledgement reply to the Lead.


Result

Zero missed hot leads. Response time drops from days to minutes. Direct revenue protection, immediate follow-up for interested leads, and better customer engagement.

What sales teams need?

  1. Automatic monitoring of incoming lead emails.
  2. AI-based purchase intent detection instead of simple keyword matching.
  3. Automatic identification of hot leads.
  4. Immediate task creation for sales representatives.
  5. Instant alerts for faster follow-up.
  6. Automatic acknowledgement replies for better customer experience.
  7. Reduced chances of missing highly interested leads.


Prerequisites

1. Configure Mail Integration

Configure your mail with Zoho CRM. Without mail configuration, the workflow cannot detect incoming emails. Navigate to Setup → Channels → Email.
Configure one of the following:
  1. IMAP Integration
  2. POP Integration
  3. Zoho Mail Integration
  4. Microsoft 365 / Gmail Integration
Make sure:
  1. Incoming emails are synced successfully.
  2. Incoming emails are successfully appearing under the related Lead records in CRM.
  3. The sales representative mailbox is connected properly.

2. Enable Zia AI Configuration

Before using the Zia Assistant API inside the Deluge function, make sure that AI is enabled in Zoho CRM.
  1. To enable AI configuration, go to Setup → Zia → Models → Zoho Hosted LLM vendor. Note: In V8, only the Zoho Hosted LLM vendor is supported.

3. Connection 

Create a CRM connection with the required scopes. Navigate to Setup → Developer Space → Connections. Add the required OAuth scopes based on your use case.

Implementation steps

Step 1: Create Custom Fields

Navigate to Settings → Customization → Modules and Fields → Leads. Create the following custom fields for intent detection and automation.

Field Label

Field Type

Purpose

Hot Lead Flag

Checkbox

 Marks highly interested leads.

Email Intent

Picklist

 Stores detected intent such as Purchase Intent, General Inquiry, or Neutral.

Intent Detected Time

Date-Time

 Stores the last intent detection time.

Alert Sent

Checkbox

 Indicates whether an alert email was sent to the sales representative.

We will continue using the following existing Lead fields in this implementation:

    Existing Field

Purpose

Lead Status

 Updated to Interested when purchase intent is detected.

Rating

 Updated to Active for interested leads.

Owner

 Used to notify the assigned sales representative.

  

Step 2: Set up Zoho CRM Connection

  1. Go to Settings → Developer Space → Connections.
  2. Click Create Connection
  3. Select your services.
  4. Name the connection: zohocrm (used in this post)
  5. Add the required scopes
  6. Click Create and Connect
  7. Authorize the connection

Step 3: Create the Custom function

  1. Go to Settings → Developer Space → Functions
  2. Click Create Function
  3. Display Name: Detect Positive Lead Intent
  4. Function Name: detectPositiveLeadIntent
  5. Category: Automation
  6. Return Type: void
  7. Add Argument: leadId: Leads.Lead Id Type: int
  8. Click Save
See the complete code here.

Step 4: Configure the Workflow Rule

  1. Go to Settings → Automation → Workflow Rules
  2. Click Create Rule
  3. Configure:
    1. Module: Emails
    2. Rule Name: Detect Positive Lead Intent
    3. Description: (optional) Triggers when incoming email is received for a Lead.
  4. Click Next
  5. WHEN: Execute this workflow rule based on: Select Incoming email → is → Received
  6. Click Done
  7. CONDITION: 
  8. Would you like to set conditions for email fields? → No
  9. Apply this rule to → Lead
  10. Which Leads would you like to apply this rule to? → All Leads

8. Click Done
9. INSTANT ACTIONS:
  1. Click Function
  2. Select your function: Detect Positive Lead Intent
  3. Map the argument: leadId → Select Lead → Lead Id
10. Click Save.

What happens inside the custom function?

At this stage, the workflow setup is complete. Whenever an email is received, the workflow automatically triggers the custom function. Now, let’s see what happens inside the function.
Instead of explaining the code line by line, we will look at the overall flow and understand how the system works step by step. The snippets below highlight only the important logic used in each stage.

Step 1:  Fetch the Lead & Owner details

The function receives the leadId from the workflow trigger and immediately fetches the full Lead record. It extracts the lead's name, company, email address, and the record owner's name, email, and ID.

leadData = zoho.crm.getRecordById("Leads", leadIdLong);
leadName = leadData.get("Full_Name");
company  = leadData.get("Company");
leadEmail = leadData.get("Email");
owner     = leadData.get("Owner");
ownerName = owner.get("name");
ownerEmail = owner.get("email");   // Alert will be sent here
ownerId = owner.get("id"); // Task will be assigned here

If no owner email is found, the function stops immediately.

Stage 2:  Fetch the latest incoming email

Why analyze only the latest email?

In this post, we use the latest email to identify the lead's current buying intent and trigger immediate sales actions. Analyzing the most recent customer email is sufficient for real-time purchase intent detection and faster follow-up. You can further customize this logic based on your specific business requirements. The function calls the Get Emails of a Record API to retrieve all emails associated with the Lead record. It then loops through the emails and identifies the latest email sent by the Lead by comparing the sender's email address with the Lead's email address.

emailsResp = invokeurl [ url: ".../Leads/{id}/Emails" ... ]; // Loop — find latest email sent by the Lead 
if(senderEmail.toLowerCase() == leadEmail.toLowerCase()) 
isIncoming = true; 
latestIncomingEmail = email; // keep the most recent 
}
Once the latest incoming customer email is identified, the function makes the View Email API call using the email's message_id to fetch the complete email body. The retrieved email content is then sent to Zia for intent analysis.

Stage 3: Zia analyzes the email

The email subject and body are sent to the Zia Assistant API with a carefully crafted prompt that instructs Zia to detect genuine purchase intent.
The prompt instructs Zia to look for strong purchase intent signals such as pricing requests, demo requests, free trial requests, implementation discussions, contract negotiations, budget approvals, and other buying-related conversations. 
Based on the email content, Zia returns either YES or NO. A YES response indicates that the lead is actively evaluating or interested in purchasing the product, while a NO response indicates that no clear purchase intent was detected.


analysisPrompt = "You are an enterprise-grade B2B sales intent detection AI. Analyze the incoming lead email and determine whether the customer shows strong and genuine PURCHASE_INTENT. Strong purchase intent includes asking for pricing, quotation, demo, free trial, implementation, onboarding, integrations, contract discussion, deployment timelines, budget approval, commercial discussion, next steps, or clear evaluation of the product for business adoption. Ignore greetings, thank you emails, support requests, informational questions, casual discussions, or unrelated conversations. Respond ONLY with YES if the lead is highly likely to purchase or actively evaluate the product for buying decision. Otherwise respond ONLY with NO.\n\nSubject:" + emailSubject + "\n\nEmail Content: " + cleanBody;
ziaResponse = invokeurl [
    url: ".../zia/smart_prompt/assistant"
    type: POST
    parameters: requestPayload.toString()
    ...
];


Stage 4: Parse Zia's Response

The function extracts Zia's answer from the response and sets the decision flag:

aiResponse = ziaResponse.get("assistant").get("details").get("data");
aiResponse = aiResponse.trim().toUpperCase();
if(aiResponse.contains("YES"))
{
    hasPurchaseIntent = true;
}


Stage 5: Five actions triggered on Purchase Intent

If has PurchaseIntent is true, five actions fire in sequence:

i.Update lead fields:


updateMap.put("Hot_Lead_Flag", true);
updateMap.put("Lead_Status",   "Interested");
updateMap.put("Rating",        "Hot");
updateMap.put("Email_Intent",  "Purchase_Intent");
updateMap.put("Intent_Detected_Time", zoho.currenttime);


ii. Create a high-priority task assigned to the Owner:

taskMap.put("Subject",  "HOT LEAD: " + leadName + " wants to buy!");
taskMap.put("Priority", "High");
taskMap.put("Due_Date", zoho.currentdate);
taskMap.put("Owner", ownerId);


iii. Add a Note to the lead record:

noteMap.put("Note_Title",   "Zia: Purchase Intent Detected");
noteMap.put("Note_Content", "From: " + customerEmail +
"\nSubject: " + emailSubject +
 "\nKey content: " + noteContent);



iv. Send alert email to the record owner:

sendmail [
    from:    zoho.loginuserid
    to:      ownerEmail
    subject: "HOT LEAD ALERT: " + leadName + " wants to buy!"
    message: emailHtml   
];



v. Auto-reply to the lead:

sendmail [
    from:    zoho.loginuserid
    to:      leadEmail
    subject: "Thank you for your interest - We'll follow up shortly"
    message: autoReplyHtml
];


Note: The acknowledgement email is sent only when Zia detects purchase intent. No auto-reply is sent for general inquiries, informational emails, or emails without clear buying intent.

Output

1.Record owner receives an alert email for immediate follow-up:

Sending alert mail to the respective record owner

2. Customer receives an automatic acknowledgement reply:



Notes

  1. To achieve better purchase intent detection, use a clear and strong prompt in the Zia Assistant API.
  2. The accuracy of intent detection depends on how well the prompt defines the purchase intent signals.
  3. Zia analyzes the complete email context, not just specific keywords.
  4. Emails containing pricing requests, demo requests, quotation requests, onboarding discussions, implementation questions, or next-step discussions are more likely to be identified as strong purchase intent.
  5. General support questions, greetings, thank you emails, and informational discussions may not be classified as purchase intent.
  6. The quality of incoming email content directly impacts the intent analysis result.
  7. Make sure the sales representatives' emails are properly synced with Zoho CRM before triggering the workflow.
  8. For better results, avoid sending incomplete or empty email bodies to Zia Assistant API.
  9. Sometimes Zia Assistant may not detect intent perfectly, as the analysis is AI-based.
This automation converts incoming lead emails into actionable sales insights. Instead of manually checking hundreds of emails, Zia automatically detects purchase intent, identifies hot leads, creates follow-up tasks, updates CRM fields, and alerts the sales representative in real time.


We trust that this post meets your needs and is helpful. Let us know your thoughts in the comment section or reach out to us at support@zohocrm.com
Stay tuned for more insights in our upcoming Kaizen posts!

Cheers!!!


    • 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

    Nederlandse Hulpbronnen


      • Recent Topics

      • Upcoming Change: Increased character limits for module and field labels

        To provide greater flexibility in customizing your CRM, we are increasing the maximum character limits for module labels and field labels in Zoho CRM. What's changing? Label Current Limit New Limit Module Label 25 characters 50 characters Subform Module
      • Change of Blog Author

        Hi, I am creating the blog post on behalf of my colleague. When I publish the post, it is showing my name as author of the post which is not intended and needs to be changed to my colleague's name. How can I change the name of the author in the blogs?? Thanks, Ramanan
      • SPAM (and some other) folders missing on three of my Zoho Mail accounts

        I have four email accounts with Zoho Mail. Three days ago, the Spam folder on three of these accounts vanished. It is gone on the Windows and Linux desktops as well as the web-based and Android versions, and I have tried it on multiple machines. The only
      • Using data from multiple sheets

        I am looking for a way to automate the process of taking multiple Zoho sheets and collating the data into one combined sheet (such that no duplicates occur). Currently I can only think of importing all the sheets into Excel and then running a macro to perform the task. Is there a simpler way offered by Zoho?
      • Cliq iOS can't see shared screen

        Hello, I had this morning a video call with a colleague. She is using Cliq Desktop MacOS and wanted to share her screen with me. I'm on iPad. I noticed, while she shared her screen, I could only see her video, but not the shared screen... Does Cliq iOS is able to display shared screen, or is it somewhere else to be found ? Regards
      • Error 1011 saving website personalisation — blocking all changes (corrupted "home_page.content" field)

        When trying to save changes under Settings → Brands → MY COMPANY → Website → Personalisation → Messenger, I receive the following error: "Either the request parameters are invalid or absent" upon checking on the developer console of the browser I get
      • Tip #7 - Siri shortcuts in Zoho CRM

        Hello Everyone, Here is a tip about the 'Siri Shortcuts' feature and how it works in the iOS version of the Zoho CRM mobile app. What are Siri shortcuts? Siri Shortcuts are quick actions across your apps on iOS. They can perform an action automatically
      • Automatic Department and Employee Sync Between Zoho One and Zoho People

        Dear Zoho Support, I'm writing to propose a valuable feature request that would streamline data management and improve user experience within the Zoho ecosystem: automatic synchronization between departments and employees in Zoho One and Zoho People.
      • Nothing triggers a Journey

        I have been on the phone with Zoho support and they claim their development team needs to investigate more. However, I've found this is a pretty standard answer after a call takes any amount of time. After that, it's days and even weeks before it actually
      • Manually Backorder Sales Order and/or Change Sales Order Status

        Is there an option to manually 'backorder' a sales order, or otherwise change it's status?  In some cases, we receive orders for products that are out of stock, but we already have issued POs to our suppliers for replenishment.   Ex- we created a PO on
      • Backorder process review - Automating Removal of Sales Order from "On Hold" When PO is Received

        Hello Zoho Inventory Team, Currently, sales orders in On Hold status are released only when the bill for the purchase order is created. In our workflow, it would be much more efficient if the sales order could automatically move out of On Hold as soon
      • Kaizen #254 - Building a Temporal Lead Score Decay System in Zoho CRM

        Hello, CRM Wizards! Welcome to a fresh week of Kaizen. In this post, we will build a temporal lead score decay system that works alongside your existing scoring rules by introducing percentage-based score decay driven solely by customer inactivity. By
      • Metadata API Access to Functions

        I think it would be incredibly helpful to have api access to every function's code. Our team primarily uses deluge functions to update fields across modules according to business logic. I would like to create a visual dependancy model for our CRM, but
      • API actions/approvals endpoint returns UNAPPROVABLE despite user having full permissions and being the assigned approver

        Hi Team, We are trying to programmatically approve a record via the CRM API but consistently receive an UNAPPROVABLE error, even though the same user can approve the record without issue from the UI. Endpoint called: POST https://www.zohoapis.com/crm/v6/{module}/{record_id}/actions/approvals
      • Get a realistic picture of your revenue with Forecast Adjustments in Zoho CRM

        #crm25q1 Dear Customers, We hope you're doing well! Today, we're here with an important enhancement for business decision makers: forecast adjustments. Let's get straight to it! With technology on the rise and CX at its core, businesses are constantly
      • I am not able to check in and checkout in zoho people even location access allowed

        This issue i am facing in mackbook air m1, I allowed location in chrome browser and i also tried in safari but getting similar issue. Please have a look ASAP.
      • WhatsApp Vendors Module

        Hello, so WhatsApp works with the below, mainly with the customer side modules. Can we get functionality on the vendor side modules, i.e., PO, Bills, Vendor Credits, Payments Made, Purchase Received? WhatsApp is often the preferred method of communication
      • Upload ticket attachments via Drag-&-Drop

        Hello, if you want to upload a file to the ticket attachment you need to click the button and use the file browser to select and upload the desired file. In many cases, it would be much more efficient if you could simply drag the file to the browser window...
      • Elevate your Radar experience: Best practices part 3

        In the Spotlight: Zoho Desk's Radar app Customer support requires human intelligence combined with emotional intelligence. How about these coupled with contextual intelligence? These elevate the customer support experience. When providing support through
      • Migrating my email from GMAIL to ZOHO MAIL..........

        I am a long time GMAIL user and I really only understand how they operate, but after reviewing your tutorials and forums online, it is quite unbelievable how much more and how much more streamlined ZOHO mail is, not to mention ZOHO's wonderful, more advanced capabilities. I do have several questions about transitioning over to ZOHO.  Primarily, where is the best place to start, what do I do first? And how hard is it actually to move all my business and personal accounts over here?  When I sign up
      • Unable to send message;Reason:553 Relaying disallowed. Invalid Domain

        Hi, Now when I try to reply to an email, I see the Unable to send message;Reason:553 Relaying disallowed. Invalid Domain voicemessagedownloader.com error. I tested sending an email when I set it up in the past and it worked. I have checked the Zoho Organization
      • RFID Scanner/Adapter Solution for barcode scanning

        Hello, We will be trialing using barcode scanning for item verification during our picking process. Using a phone or a tablet is awkward and uncomfortable. Are there any Zoho compatible RFID scanners, or an RFID device/adapter that will connect with a
      • Approval Process not retriggering after rejection when stage is manually changed back

        We have an Approval Process on the Opportunities module that triggers when Stage is changed to Negotiation (Execute on: Edit Only). On rejection, a field update action reverts Stage back to Proposal. The issue: after rejection, AE can manually changes
      • Free Webinar Alert! Workdrive + Office Suite in Zoho Workplace: Create, co-edit and collaborate

        Hello Zoho Community! Looking for a better way to create, manage, and collaborate on your business documents? Join our upcoming webinar to discover how Zoho WorkDrive and the Zoho Office Suite (Writer, Sheet, and Show) help teams to work together from
      • Updating Sales orders on hold

        Surely updating irrelevant fields such as shipping date should be allowed when sales orders are awaiting back orders? Maybe the PO is going to be late arriving so we have to change the shipment date of the Sales order ! Not even allowed through the api - {"code":36014,"message":"Sales orders that have been shipped or on hold cannot be updated."}
      • Two-Factor Authentication in Zoho Mail: Add an extra layer of security to your organization

        Account security is a critical aspect of managing any organization's email. With increasing risks of unauthorized access, a single password may not always be sufficient to keep accounts protected. Zoho Mail's Two-Factor Authentication (TFA) addresses
      • Dark Mode - Font Colors Don't Work

        When editing a document in Dark Mode and selecting font colors, they don't show up on screen.  Viewing/editing the same document in Light Mode shows them just fine.
      • API to post drafts for social media

        I we want to post draft posts to our zoho social account and then approve and schedule them within Zoho social. is this possible with for example: https://apis.zoho.com/social/v2/post TIA Jon
      • How to show product cards in your chatbot

        Hey everyone, If you are using Guided Conversations to help customers find products, you have probably run into this problem: the bot gives customers a list of options, but they still have no idea which one to pick. There will be no images, no specs,
      • Changing settings for auto logoff

        I've noticed that when I haven't used Cliq for a while, I have to re-enter my password. That is really clumsy, especially if you have a complicated password. Because it won't be filled in automatically. Is there a way to change that behaviour? We are
      • How do you create invoices before sending them through Zoho Invoice?

        Hi everyone, I'm curious how other businesses handle their invoicing workflow before sending invoices through Zoho Invoice. Do you: Create invoices directly inside Zoho? Prepare them first in another invoice tool or template? Use Excel or Word before
      • ZML Error/Bug

        Hi, I would like to request for your help regarding this kind of behavior. Requested_Start_Time & End_Time - date-time fields https://......#Page:PH_Calendar_Page?reqDate=08-04-2026 https://......#Page:PH_Calendar_Page?reqDate=07-31-2026 https://....#Page:PH_Calendar_Page?reqDate=08-03-2026
      • Item with name in different languate

        Hello, is there a way to have an item with its name in different languages? For example: I sell an item in different markets and I'd like to have a Proposal and the Invoice with the Item Name in a specific language. Rino Bertolotto Zoho Specialist, STESA srl
      • Migration of emails from Yandex to Zoho

        I am trying to migrate an yandex mail account to zoho mail account. I am confused with all the related articles/informations in the net. Could someone please outline the process to do it, just thinking about me as a novice with limited knowledge or experience. A couple of questions from the knowledge gained. 1. I believe we have to delete the yandex current MX from the website records and add Zoho MX. What happens to the emails as we remove the mail exchange record. Yandex stops updating emails and
      • Calling a function within another function

        Hello there, I have just found out that you can simply call up functions in other functions, regardless of the department. You can't create functions with the same name twice, even though you are in a different department. If you try it, you don't get
      • 【続々公開】Zoholics Japan 2026 セッション情報を更新しました!

        ユーザーの皆さま、こんにちは! Zoholics Japan 2026のセッション情報を続々と公開しています! 今年は3つのトラックで、Zohoの最新情報やAI活用、製品アップデート、 活用事例など、多彩なセッションをお届けします。 現在公開中のセッション(一部) ・Zoho CRM 製品アップデート ・Zoho CRM Plus 製品アップデート ・Zoho Community セッション ・Zoho Desk セッション ・中堅・成長企業の人事DX ~AI時代に何から始めるべきか?~ ・Zoho
      • New Ways to Personalize, Organize, and Share Your Notes

        We're excited to introduce a new set of enhancements in Zoho Notebook that make your note-taking experience cleaner, more flexible, and easier to share. With this update, you can create notes that automatically adapt to your device theme, browse your
      • Introducing spam detection for webforms: An additional layer of protection to keep your Zoho CRM clean and secure

        Greetings all, One of the most highly anticipated feature launches—Spam Detection in webforms—has finally arrived! Webforms are a vital tool for record generation, but they're also vulnerable to submissions from unauthenticated or malicious sources, which
      • Rich-text fields in Zoho CRM

        Moderation Update: During the initial release of Rich Text fields, it was supported only in the Enterprise and Ultimate editions. We have gradually extended Rich Text fields to all the paid editions of Zoho CRM. Hello everyone, We're thrilled to announce
      • Email-Data Synchronization with Zoho Analytics

        Hello, Enterprise Support Community! We're excited to announce the availability of Email Data Synchronization with Zoho Analytics! This highly requested enhancement allows you to sync email data from Zoho CRM into Zoho Analytics, making it easier to analyze
      • Next Page