
Hello all!!
Welcome back to a fresh Kaizen week.
This week, we will continue with another Actions API -
Webhooks API in Zoho CRM.
Webhooks in Zoho CRM
A webhook allows Zoho CRM to send real-time information to another application the moment something important happens. Webhooks let CRM push data instantly to an external URL whenever the workflow condition is met.
Webhooks do not notify on every record event by default. They trigger only when specific automations, such as a Workflow Rule you configure, are executed. This helps for specific real-time automation needs, such as sending high-value leads to an external validation service.
Use case
Zylker, an IT solutions provider, uses Zoho CRM to manage all incoming leads. But not every new lead is ready for the Sales team right away. Not all leads need immediate follow-ups. For leads with a high Profit Score (80+), it usually means strong buying intent, but they may contain fake information.
Why does Zylker use Zoho CRM and send these leads to an external validation application?
Before Sales reaches out, Zylker wants to make sure these high-value leads have valid information. While CRM keeps the lead data organized, a specialized third-party validation systems check any fraudulent activities and confirm whether the email, phone number, or other details are real.
To do this quickly, Zylker uses Webhooks in Zoho CRM. The moment a lead crosses the 80+ score, Zoho CRM automatically sends the lead’s data to Zylker’s external validation system. This lets Zylker verify the lead in real time and send back a clean, accurate, sales-ready profile for the Sales team to follow up on.
From here, we will explain every part of Webhooks by showing how it looks in the Zoho CRM UI and how to do the same using the API. Each step will be shown side-by-side, so you can clearly see how the UI setup translates into the API request.
Configuring Webhooks for Zylker’s Use Case - UI Method
- Go to Setup
- Navigate to Automation
- Choose Actions -> Webhooks
- Click Configure Webhook
You will see the window shown below.
Webhook - UI view
The following sections explain what each field means in three parts:
- Basic fields to configure Webhook.
- Configuring Headers
- Configuring Body
Filling the basic Webhook details via UI
Filling the basic Webhook details via Create Webhook API
Request URL: {{api-domain}}/crm/v8/settings/automation/webhooks
Request Method: POST
Input JSON
{ "webhooks": [ { "name": "Push High Score Leads", "description": "Send leads with Profit Score > 80 to validation system.", "module": { "api_name": "Leads", "id": "5725767000000002175" }, "authentication": { "type": "general" }, "http_method": "POST" } ] }
|
Keys explanation
- name (mandatory): Name of your webhook.
- description: Add a short note about what this webhook does.
- module (mandatory): Select the module from where the external application listens the changes. In our case, select Leads module to push high-score leads.
- url (mandatory): Specify the external endpoint where CRM will send the data. This lets the external application see what CRM sends.
- Note: In this post, we have used an endpoint from Webhook.site
- authentication (mandatory): Specify authentication type for the webhook endpoint.
- Possible types:
- general: The receiving system does not require OAuth. You can pass OAuth tokens manually in headers.
- connections:
- OAuth-based integrations: Systems that use Zoho’s Connections.
- For our Zylker use case, we select General.
Note: In
Zoho CRM API V8, Webhooks currently support only General authentication. Connection-based authentication will be available in a future update.
- http_method (mandatory): Select a HTTP method that allows you to send structured data.
Possible values: POST, GET, PUT, DELETE
In our case, we use POST to create a new record in the external app with the necessary lead details, allowing the external system to run its validation checks.
HTTP methods and their supported parameters - Headers, Body, URL Parameters
HTTP Method | Headers | Body | URL Parameters |
POST | Module parameters Custom parameters
| Type: form-data
Module parameters Custom parameters User-defined parameters
Formats: null
Type: raw
Formats: Text, JSON, HTML, XML | Not Supported |
PUT | Module parameters Custom parameters
| Type: form-data
Module parameters Custom parameters User-defined parameters
Formats: null
Type: raw
Formats: Text, JSON, HTML, XML | Not Supported |
GET | Not Supported | Not Supported | - Module parameters
- Custom parameters
- User-defined parameters
|
DELETE | Not Supported | Not Supported | Module parameters Custom parameters User-defined parameters
|
Each HTTP method supports different parameter types. The above table shows which methods support Headers, Request Body, and URL Parameters. Detailed explanations of these parameter types are provided in the following section.
Creating a Webhook with Headers, Body, and URL Parameters
When a webhook is triggered in Zoho CRM, the data is sent to the external application as part of the HTTP request.
The data can be sent in three places:
- Headers
- Body (Form-Data or Raw)
- URL Parameters
Each part serves a different purpose.
Configuring Headers
UI - Configuration

Headers allow you to send
extra information along with your webhook request. These help when the external app needs extra data like auth tokens or CRM field values.
Zoho CRM supports two types of headers:
- Module Parameters - Dynamic values from CRM fields
- Custom Parameters - Static values you define
Module Parameters - dynamic CRM data
Module parameters allow you to send values from CRM fields inside the header. These values change depending on the record that triggered the webhook.
A module parameter consists of:
- Parameter Name - A unique header key that you define. It does not have to match the CRM field API name.
- Parameter Type - Defines the source of the data you are mapping. It can come from the selected CRM module such as Leads and Contacts, lookup fields, User fields such as Lead Owner, or Organization fields.
- Parameter Value - The merge field value. Example, ${!Leads.Created_By.id}
Note: If you decide to use Headers, then you must add at least one module_parameter. Otherwise CRM will show an error.
Example:
Parameter Name | Parameter Type | Parameter Value |
Lead_Email | Leads | Email |
Annual_Revenue | Leads | Annual Revenue |
Profit_Score | Leads | Profit Score |
Created_By | Created By | User Id |
Custom Parameters - static values
Custom parameters are key-value pairs that never change.
These are useful for:
- API version
- Tags like “zylker-crm”
Name | Value |
source | zylker-crm |
version | v1 |
Request URL: {{api-domain}}/crm/v8/settings/automation/webhooks
Request Method: POST
Input JSON
{ "webhooks": [ { . . . "http_method": "POST", "headers": { "module_parameters": [ { "name": "Lead_Email", "value": "${!Leads.Email}" }, { "name": "Annual_Revenue", "value": "${!Leads.Annual_Revenue}" }, { "name": "Profit_Score", "value": "${!Leads.Profit_Score}" }, { "name": "Created_By", "value": "${!Leads.Created_By.id}" } ], "custom_parameters": [ { "name": "source", "value": "zylker-crm" }, { "name": "version", "value": "v1" } ] } } ] }
|
When should Zylker use Headers?
For the 80+ Profit Score validation use case, Zylker can include module parameters such as Lead Email, Profit Score, and Lead ID, which are helpful for fraud-detection tools.
Similarly, Zylker can include custom parameters like source=zylker-crm and api_version=v1 to help the external system identify where the webhook originated.
Configuring the Body of a Webhook - form-data & raw formats
After setting up the basic details and Headers, the next step is to configure the Body.
The Body is where the main CRM record data is sent, which is different from the Header section that only carries metadata like auth tokens or quick identifiers.
Depending on your needs, the Body can be either Form-Data or Raw. The list below shows the supported options for each format.
- Form-Data:
- Module parameter
- Custom parameter
- User-defined format.
- Raw:
- Text - plain messages
- JSON - structured API payload
- HTML - formatted messages
- XML - traditional enterprise systems
Form-Data Body: key-value
UI - Configuration
Zoho CRM lets you build Form-Data using three types of parameters:
- Module Parameters
- Custom Parameters
- User Defined Parameters
Use Form-Data when the external app expects key-value pairs - similar to how HTML forms submit data.
Note:
- Headers are for sending supporting information that helps the external system understand the request - this can include auth details, source identifiers, or key CRM fields like email or score that help with quick categorization or filtering.
Why do Module and Custom parameters appear again in Form-Data?
The same Module Parameters and Custom Parameters are available in the Body because:
- Headers - Provide supporting details such as identifiers or quick-check values. For example, Lead ID, or source tags that help the external system check and route the request.
- Body - Contains the complete lead information that the external validation system needs to process.
Although the parameter names look the same (Module, Custom), their purpose changes:
Where parameters are used | Purpose | Example |
Headers | Metadata - OAuth,tags, and context | source: zylker-crm |
Form-Data (Body) | Main record data - actual lead details sent to the app. | lead_email=patricia@zylker.com |
So Zoho CRM gives you the same structure, but used differently depending on where the data is placed.
User-Defined Parameters
User-Defined parameters let you build custom, human-readable messages or templates. This parameter is available only in the Body, not in Headers.
Parameter Name | Parameter Value |
custom_message | New high-score lead: ${Leads.First Name}${Leads.Last Name} (Score: ${Leads.Profit Score}) |
This is very helpful if your external app expects a text message, notes, or a description field.
Configuring the Body of a Webhook - form-data via Create Webhook API
Request URL: {{api-domain}}/crm/v8/settings/automation/webhooks
Request Method: POST
Input JSON
{ "webhooks": [ { . . . "body": { "form_data_content": { "module_parameters": [ { "name": "Lead_Email", "value": "${!Leads.Email}" }, { "name": "Annual_Revenue", "value": "${!Leads.Annual_Revenue}" }, { "name": "Profit_Score", "value": "${!Leads.Profit_Score}" }, { "name": "Created_By", "value": "${!Leads.Created_By.id}" } ], "custom_parameters": [ { "name": "source", "value": "zylker-crm" }, { "name": "version", "value": "v1" } ], "user_defined_parameters": { "name": "custom_message", "value": "New high-score lead: ${!Leads.First_Name}${!Leads.Last_Name} (Score: ${!Leads.Profit_Score})" } }, "type": "form_data" }, . . . } ] }
|
Raw Body - JSON / XML / HTML / Text
Zoho CRM’s Webhook Body section allows you to send data to an external application in a Raw format. This is useful when the receiving system expects structured data in the following structure.
You can choose:
- Raw + Text
- Raw + JSON
- Raw + HTML
- Raw + XML
Raw + Text:
Text format is the simplest. You can type any text and insert merge fields.
UI - Configuration
When to use Text?
- When sending a simple message.
- When the external app only expects plain text.
Configuring the Body of a Webhook - Raw - "Text" via Create Webhook API
Request URL: {{api-domain}}/crm/v8/settings/automation/webhooks
Request Method: POST
Input JSON
{ "webhooks": [ { . . . "body": { "raw_data_content": "New high score lead: ${!Leads.First_Name} ${!Leads.Last_Name}, ${!Leads.Email}, ${!Leads.Annual_Revenue}, ${!Leads.Phone}, ${!Leads.Industry}, ${!Leads.Owner}", "format": "Text", "type": "raw" }, . . . } ] }
|
Raw + JSON:
This is the most common format for APIs. Use this when the receiving system expects structured JSON data.
UI - Configuration
Configuring the Body of a Webhook - Raw - "JSON" via Create Webhook API
Request URL: {{api-domain}}/crm/v8/settings/automation/webhooks
Request Method: POST
Input JSON
{ "webhooks": [ { . . . "body": { "raw_data_content": "{\n \"id\": \"${!Leads.id}\",\n \"full_name\": \"${!Leads.Last_Name}\",\n \"email\": \"${!Leads.Email}\",\n \"company\": \"${!Leads.Company}\",\n \"profit_score\": \"${!Leads.Profit_Score}\",\n \"owner\": \"${!Leads.Owner}\"\n}", "format": "JSON", "type": "raw" }, . . . } ] }
|
When to use JSON?
- When the external system expects structured data
- Easier validation
Raw + HTML:
HTML format is useful for sending stylized messages or formatted content.
UI - Configuration
Configuring the Body of a Webhook - Raw - "HTML" via Create Webhook API
Request URL: {{api-domain}}/crm/v8/settings/automation/webhooks
Request Method: POST
Input JSON
{ "webhooks": [ { . . . "body": { "raw_data_content": "<p><strong>New Lead Alert</strong></p>\n<p>Name: ${!Leads.Last_Name}</p>\n<p>Email: ${!Leads.Email}</p>\n<p>Company: ${!Leads.Company}</p>\n<p>Profit Score: ${!Leads.Profit_Score}</p>\n<p>Owner: ${!Leads.Owner}</p>", "format": "HTML", "type": "raw" }, . . . } ] }
|
When to use HTML?
- If the external system displays formatted output
Raw + XML:
Some legacy systems or enterprise applications prefer XML.
UI - Configuration
Configuring the Body of a Webhook - Raw - "XML" via Create Webhook API
Request URL: {{api-domain}}/crm/v8/settings/automation/webhooks
Request Method: POST
Input JSON
{ "webhooks": [ { . . . "raw_data_content": "<Lead>\n <Id>${!Leads.id}</Id>\n <Name>${!Leads.Last_Name}</Name>\n <Email>${!Leads.Email}</Email>\n <Company>${!Leads.Company}</Company>\n <ProfitScore>${!Leads.Profit_Score}</ProfitScore>\n<LeadOwner>${!Leads.Owner}</LeadOwner>\n</Lead>", "format": "XML", "type": "raw" }, . . . } ] }
|
When to use XML?
- With older systems
- When the receiving system only supports XML
Note:
- When you switch the webhook method in the UI, Zoho CRM changes the options you can configure:
GET Method
- Only URL Parameters are available
- Headers are hidden
- Body is hidden
- Because GET requests always send data through the URL and cannot carry a body.
DELETE Method
- Headers are available
- URL Parameters are available
- Body is still not supported
- DELETE requests can include headers, but Zoho CRM does not allow sending a body for DELETE webhooks.
- Date-time format:
Zoho CRM will format any Date or DateTime fields in your webhook according to the format you select.
UI - Configuration
API - Configuration
{ "webhooks": [ { "module": { "api_name": "Leads", "id": "5725767000000002175" }, "url_parameters": { "module_parameters": [ { "name": "Created_Time", "value": "${!Leads.Created_Time}" } ] }, "description": "Send leads with Profit Score > 80 to validation system.", "http_method": "GET", "name": "Push High Score Leads", "date_time_format": { "datetime_format": "mm-dd-yyyy HH:MM:SS", "date_format": "yyyy-mm-dd", "time_zone": "America/Los_Angeles" }, "authentication": { "connection_name": null, "type": "general" } } ] }
|
With this, we have covered what a
Webhook is in Zoho CRM, how to configure a basic Webhook, how to configure a Webhook with Headers, Body, and URL Parameters, how each component works, how to configure them using the UI, and how the same setup can be created through the
POST Webhooks API.
In Part 2, we will explain
- How to manage Webhooks using the GET, PUT, and DELETE Webhook APIs
- How to associate a Webhook with a Workflow
- How to perform real-time testing by creating records
- How an external application receives data from Zoho CRM via Webhook.
We hope this post helps you understand how to use Webhooks through the Zoho CRM Actions API -
Webhooks API.
Try it out, and let us know your experience in the comments section or reach out to us at
support@zohocrm.com.
Stay tuned for more insights in our upcoming Kaizen posts!
Cheers!
Recent Topics
Ability to add VAT to Retainer Invoices
Hello, I've had a telephone conversation a month ago with Dinesh on this topic and my request to allow for the addition of VAT on Retainer Invoices. It's currently not possible to add VAT to Retainer Invoices and it was mutually agreed that there is absolutely no reason why there shouldn't be, especially as TAX LAW makes VAT mandatory on each invoice in Europe! So basically, what i'm saying is that if you don't allow us to add VAT to Retainer Invoices, than the whole Retainer Invoices becomes
Zoho Bookings Forge: A hands-on workshop series
Hello all! We’re hosting a five-part, hands-on workshop series to help you optimize Zoho Bookings for your business. In these sessions, we’ll cover key features, practical use cases, and clear steps to get started or improve your current setup. Here are
Delete button
Hi, The delete button were hide into the three dot button. Can I display outside? why Zoho make this update?
Zoho Vault CLI for Developers and Automations
Hi everyone, If you're managing credentials in scripts, CI/CD pipelines, or automation workflows, Zoho Vault's Command Line Interface (CLI) can help you securely access and manage secrets directly from your terminal. Zoho Vault was launched in 2013 as
Zoho Subscriptions -- Zoho Commerce integration
Is there integration between Zoho Subscriptions and Zoho Commerce? I would like to create subscription plans in Zoho Subscritpions and list them for on my Zoho Commerce store.
Synching changes to Stripe when changes are made in Zoho Billing
We have a situation where we have merged customers in Zoho BIlling and then found out later that the payment in Stripe was not updated and still associated with the old customer record. The card gets updated and billed, but that payment is still associated
How can I link Products in a Deal Subform to the Products Module
Hello, I have a pricing subform on our Deals page and use a lookup field to associate a product with each line. I want to be able to look at a product page within the Products module and see a list of the deals connected to that product. I have this working
Help Center and SEO: Any Benefit to My Domain-Mapped Website Ranking?
First of, I love the Help Center which I've just decided to integrate into my website to replace its old-fashioned FAQs. So much more to achieve there now! Lots of new benefits to the site visitors and to me in terms of organizing and delivering all the
Business Hours with lunch break
Our business hours are: mon - fri 08:30 - 13:00, 15:00 - 18:30. How can I handle the lunch break? If I use 8:30 - 18:30 it obviously breaks SLA. Thanks
Enable Free External Collaboration on Notecards in Zoho Notebook
Hi Zoho Notebook Team, I would like to suggest a feature enhancement regarding external collaboration in Zoho Notebook. Currently, we can share notes with external users, and they are able to view the content without any issue. However, when these external
Zoho Commerce
Hi, I have zoho one and use Zoho Books. I am very interested in Zoho Commerce , especially with how all is integrated but have a question. I do not want my store to show prices for customers that are not log in. Is there a way to hide the prices if not
Multi-currency in Zoho CRM Forecast and Reports
As a company we have branches in 4 different countries with as many different currencies. Our Sales Teams would like to work with their local currency as much as possible. The Forecast module using only 1 currency is practically usable only by the sales
Zoho Projects Android and iOS app update: Conditional layout rules for Tasks
Hello everyone! Task conditional layout rules configured on the web app(projects.zoho.com) are now applied on the Zoho Projects Android and iOS app. Conditional layout rules can be set for the Add/ edit task form and it allows you to change the property
How to account for vat with postponed VAT accounting
Hi everyone, looking for some help with postponed VAT accounting, I use DHL express for my imports and they used to pay the VAT for me and then invoice me. I could then log this as a bill and the VAT element from import was recorded as input VAT, all
Zoho CRM WooCommerce Integrtation
Looking for a solution for my 50 client to show detailed analytics on source of traffic that led to events, leads, conversions. Hi all, I have not been able to find a workable guide or solution to how exactly step by step integrate the Zoho CRM with WooCommerce
500 internal server error on opening an iframe through a deluge script
Hi Team I am trying to open an external url in an iframe through my deluge script which is associated to a custom button . By doing this i am getting an "Internal Server Error" . Please can you help me with this.
Kaizen #225 - Making Query-based Custom Related Lists Actionable with Lookups and Links
Hello everyone! Welcome back to another post in the Kaizen series! This week, we will discuss an exciting enhancement in Queries in Zoho CRM. In Kaizen #190, we discussed how Queries bridge gaps where native related lists fall short and power custom related
Filter button in the Zoho Sheet Android App doesn't toggle on
I am a new Zoho Sheets user and experiencing a specific issue with the filter functionality in the Android mobile application. Detailed Issue Description: The filter icon appears correctly in the toolbar. Upon tapping the filter icon/button, the toggle
Project Notifcatiion Emails - Milestone
Hello: I cannot get myself, or most importantly my portal client user to recieve an email upon completion of a milestone. I have set up our 1st project. I have set up a test client user. (accepted the invitation and is listed in the system as a client
Zoho Forms - Feature Request - Year Field
Hi Zoho Forms Team, You currently have the following date and time fields: Date Time Date and Time Year and Month It would be useful if you could include a "Year" field For example a recent application I completed said "What year was your house built?"
Integrate Excel or Zoho Sheet functions / calculations to CRM product module
Hello Community, I hope someone more experienced can help me with this question. Our price / payment plan calculations are in an Excel spreadsheet and I would like to use all those functions / calculations in my Products module. So when we send a quote
Sync CRM Contacts to USER'S contacts on Office 365
I can see that the O365 sync is transferring contacts backwards and forwards between Zoho CRM and Office365. But it has created a separate address book in Office 365 called "Zoho CRM Contacts". This address book is not used by Office/Outlook's email function
Manage Every Customer Conversation from Every Channel inside Zoho SalesIQ
Your customers message you from everywhere. But are you really able to track, manage, and follow through on every conversation, without missing anything? With interactions coming in from websites, mobile apps, and messaging platforms like WhatsApp and
This project could not be synced because it is not associated with a primary client
When I go to ProjectName->Finance I receive a "This project could not be synced because it is not associated with a primary client" error. The project has been associated in ZohoCRM with the client. How can I set the primary client for this project. Other
Update latitude & longitude address field API
How do I update the coordinates of an address field from a widget? I can't modify the latitude and longitude of the address field. I think the problem is how I'm writing formdata variable. zoho_init.then(function (data) { var queryParams = ZOHO.CREATOR.UTIL.getQueryParams();
Zoho Forms - Feature Request - Past Into Scanning/OCR Field
Hi Zoho Forms Team, You recently introduced the OCR/Scanning field which I have found great use for with one client who receives work orders as a screenshot from one customer. I want to raise a feature request here which would make that field even more
inability to use different primary address on invoice per location
my company operates in two different locations with different email address. The problems then is the inability to edit the primary to suite the invoice for the second location.
Use Zoho Creator as a source for merge templates in Zoho Writer
Hello all! We're excited to share that we've enhanced Zoho Creator's integration with Zoho Writer to make this combination even more powerful. You can now use Zoho Creator as a data source for mail merge templates in Zoho Writer. Making more data from
Anyone in Australia using Zoho Books AND has their account with NAB?
Hi I have an account with both NAB and Suncorp. Suncorp transaction come in the next day however NAB transactions take 4-5 business days to appear. eg: A deposit made today in my Suncorp will be imported into Zoho tomorrow. A deposit made today to the NAB account will be imported maybe Saturday (Friday overnight). I have contacted both Zoho and NAB but noone seems to know why. I was just wondering if anyone else in Australia uses NAB and has this issue (or doesn't) maybe we could compare notes and
Detailed Balance Sheet for tax preparer
I'm using the free edition of Zoho Books. My tax preparer is asking for "detailed" Profit & Loss and Balance Sheet reports which include all the activity and transactions within the various categories. The default reports do not include these details.
Host Group Appointments Online in Zoho Bookings
Greetings from the Zoho Bookings team! We’re excited to announce a new enhancement to Group Booking that makes hosting online group events smoother and more professional than ever. You can now conduct online group events with auto-generated meeting links
Workdrive Collaboration with an External User
I would like to know if I can setup a collaboration space with an external user in workdrive or do I need to add them as a user on my system? If I need to add them, can I add them on Workdrive only and give limit access to our space only?
Marketing Tip #23: Help customers with how-to guides and usage tips
Customers don’t stop needing you after they place an order. Helping customers use your product correctly and confidently can improve satisfaction, reduce returns, and increase repeat purchases. Sharing simple how-to guides, usage tips, or care instructions
Powering Customer Support with our women
In Zoho Desk support, women make up 50% of our team. We see this as one of our strengths, reflecting the spirit of this year’s theme, "Give to Gain". Our women find their balance Women carry many responsibilities — they represent frontline support, lead
Function #25: Automatically generate purchase orders from a sales order
We kicked off the "Function Fridays" series with the goal of helping you automate your everyday accounting tasks. As we delve into today's post, I'm delighted to announce that we're here to present the 25th custom function in this series. While it is
Sales IQ chat is not working in signed android apk
I have integrated ZOHO sales IQ support chat and i have followed each step and its working fine in my development build but when i create signed APK for it. Chat does not work in it and showing awaiting for detail. I previously asked the same query but
How to add line breaks in zoho.cliq.postToUser(...) message?
In a CRM function using Deluge I'm sending this message and attempting to add some line breaks but they are ignored. Is there another way to add these breaks? My message: message: New urgent task\nDescription \nThis is a fake description.\n A new line?
Problem with CRM Connection not Refreshing Token
I've setup a connection with Zoom in the CRM. I'm using this connection to automate some registrations, so my team doesn't have to manually create them in both the CRM and Zoom. Connection works great in my function until the token expires. It does not refresh and I have to manually revoke the connection and connect it again. I've chatted with Zoho about this and after emailing me that it couldn't be done I asked for specifics on why and they responded. "The connection is CRM is not a feature to
Zoho Books Invoices Templates
It would be really helpful to have more advanced features to customise the invoice templates in Zoho Books. Especially I´m thinking of the spacing of the different parts of the invoice (Address line etc.). If you have a sender and receiver address in
In Lesson Video
Can anyone help me with this? I'm not sure what happened. It suddenly became like that. I tried to reupload. I tried create a new lesson. Still the same. Please help!
Next Page