Webform A/B Testing
Webform A/B testing is a testing approach that splits visitors between different form versions and compares performance metrics to determine the better-performing version.
GET Webform A/B Testing
Purpose
To retrieve all Webform A/B Testing configurations created for Webforms in your Zoho CRM organization. You can optionally filter the results based on the module or a specific base webform.
Endpoints
- GET /settings/AB_testing
Request Details
Request URL
{api-domain}/crm/{version}/settings/AB_testing
Header
Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52
Scope
ZohoCRM.settings.abtest.ALL
(or)
ZohoCRM.settings.abtest.READ
Parameters
- modulestring, optional
The API name of the module for which the Webform A/B Testing are created. Use this to filter results by module.
- base_formstring, optional
The base webform used in the A/B Testing. Use this to filter Webform A/B Testing by the ID of the base webform.
Sample Request
Copiedcurl "https://www.zohoapis.com/crm/v8/settings/AB_testing"
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
-X GETResponse JSON
The root key AB_testing is a JSON array containing one object per A/B Testing. Each object has the following keys:
- id string
Unique identifier of the A/B Testing.
- name string
Name of the A/B test.
- status string
Current lifecycle status of the A/B test.
Possible values:
- drafted: A preliminary configuration that has not yet been executed.
- scheduled: Scheduled to start at a future time.
- running: Currently in progress.
- paused: Temporarily on hold. While paused, the original (base) webform is served to all visitors.
- completed: The test has finished running.
- launched: A winning webform has been launched to replace the original.
- traffic integer
Overall percentage of visitors included in the A/B test.
- notify Boolean
Indicates whether an email notification will be sent to the user who created the A/B test (returned in created_by) with the winner details, once the test is completed.
- dynamic_allocation_by_zia Boolean
Indicates whether traffic is dynamically allocated based on form performance by Zia. When enabled, the system increases visitor allocation to better-performing variations during the test.
- created_time datetime
Date and time when the A/B test was created (ISO 8601).
- created_by JSON object
User who created the A/B test.
- id string
Unique ID of the user.
- name string
Display name of the user.
- module JSON object
CRM module the A/B test is configured for.
- id string
Unique ID of the module.
- api_name string
API name of the module (for example, Leads).
- base_form JSON object
Base (original) webform used in the A/B test.
- id string
Unique ID of the base webform.
- name string
Name of the base webform.
- traffic integer
Percentage of test traffic allocated to the base webform.
- winner Boolean
Indicates whether the base webform is the current winner of the A/B test.
- old_traffic integer
Previous traffic allocation (before the latest Zia dynamic reallocation). null if traffic has not been reallocated.
- variant_form JSON array
Variant webforms configured for this A/B test. Each variant object has the following keys:
- id string
Unique ID of the variant webform.
- name string
Name of the variant webform.
- traffic integer
Percentage of test traffic allocated to this variant.
- winner Boolean
Indicates whether this variant is the current winner.
- old_traffic integer
Previous traffic allocation for this variant, before Zia dynamic reallocation. null if traffic has not been reallocated.
- condition JSON object
Test-end criteria that determine when the A/B test stops.
- type string
The type of end condition. Possible values: duration, range, visits.
- period string
When type is duration, the unit of time. Possible values: days, weeks, months.
- unit integer
When type is duration, the number of periods for which the test runs. When type is visits, the total number of visitors after which the test ends.
- from datetime
When type is range, the start date/time of the test.
- to datetime
When type is range, the end date/time of the test.
- remaining integer
The number of periods (or visitors) remaining before the test ends.
- winner_configuration JSON object
Configuration that controls how the winner is handled once the test ends.
- announce_automatically Boolean
Whether the winning webform is automatically launched (used across all locations of the original form) once the test is completed.
- conversion_percentage_difference integer
Minimum conversion rate a variant must achieve to be eligible for automatic launch (returned when configured via the "Based on Condition" option).
- traffic_diversion JSON object
Details of the current traffic distribution across the base and variant webforms when advanced traffic diversion is in effect (for example, after Zia has dynamically reallocated traffic during a running test). Returns null when no diversion has been applied.
- complete_restart_info JSON object
Metadata about a restarted A/B test. If a completed A/B test has been restarted, this object holds information linking the current test to its previous run (for example, the previous test's ID and restart timestamp). Returns null when the test has not been restarted.
- suggestion JSON object
Zia-generated suggestion for the A/B test (for example, to extend the test duration or to launch the current leader with a specified confidence level). Returns null when no suggestion is available.
Sample Response
Copied{
"AB_testing": [
{
"created_time": "2026-01-11T18:42:18+05:30",
"dynamic_allocation_by_zia": false,
"complete_restart_info": null,
"module": {
"api_name": "Contacts",
"id": "4794410000000000129"
},
"suggestion": null,
"base_form": {
"winner": false,
"old_traffic": null,
"name": "ContactsWebform",
"id": "4794410000000743005",
"traffic": 34
},
"created_by": {
"name": "Patricia Boyle",
"id": "4794410000000642001"
},
"notify": false,
"traffic_diversion": null,
"condition": {
"unit": 30,
"period": "days",
"type": "duration",
"remaining": 29
},
"variant_form": [
{
"winner": false,
"old_traffic": null,
"name": "ContactsWebform",
"id": "4794410000000772128",
"traffic": 33
},
{
"winner": false,
"old_traffic": null,
"name": "ContactsWebform",
"id": "4794410000000772129",
"traffic": 33
}
],
"name": "contactwebformab",
"winner_configuration": {
"announce_automatically": false
},
"id": "4794410000000772127",
"status": "running",
"traffic": 100
},
{
"created_time": "2026-01-11T18:41:34+05:30",
"dynamic_allocation_by_zia": false,
"complete_restart_info": null,
"module": {
"api_name": "Contacts",
"id": "4794410000000000129"
},
"suggestion": null,
"base_form": {
"winner": false,
"old_traffic": null,
"name": "newportalwebfor",
"id": "4794410000000765193",
"traffic": 34
},
"created_by": {
"name": "Patricia Boyle",
"id": "4794410000000642001"
},
"notify": false,
"traffic_diversion": null,
"condition": {
"unit": 30,
"period": "days",
"type": "duration",
"remaining": 29
},
"variant_form": [
{
"winner": false,
"old_traffic": null,
"name": "newportalwebfor",
"id": "4794410000000772084",
"traffic": 33
},
{
"winner": false,
"old_traffic": null,
"name": "newportalwebfor",
"id": "4794410000000772085",
"traffic": 33
}
],
"name": "portalab",
"winner_configuration": {
"announce_automatically": false
},
"id": "4794410000000772083",
"status": "running",
"traffic": 100
},
{
"created_time": "2026-01-11T18:40:29+05:30",
"dynamic_allocation_by_zia": false,
"complete_restart_info": null,
"module": {
"api_name": "Leads",
"id": "4794410000000000125"
},
"suggestion": null,
"base_form": {
"winner": false,
"old_traffic": null,
"name": "newwebform",
"id": "4794410000000765145",
"traffic": 34
},
"created_by": {
"name": "Patricia Boyle",
"id": "4794410000000642001"
},
"notify": false,
"traffic_diversion": null,
"condition": {
"unit": 30,
"period": "days",
"type": "duration",
"remaining": 29
},
"variant_form": [
{
"winner": false,
"old_traffic": null,
"name": "newwebform",
"id": "4794410000000772023",
"traffic": 33
},
{
"winner": false,
"old_traffic": null,
"name": "newwebform",
"id": "4794410000000772024",
"traffic": 33
}
],
"name": "new",
"winner_configuration": {
"announce_automatically": false
},
"id": "4794410000000772022",
"status": "running",
"traffic": 100
}
]
}Possible Errors
- INVALID_DATA HTTP 400
The specified module name is invalid.
Resolution: Specify a valid module API name for the module query parameter. - PATTERN_NOT_MATCHED HTTP 400
The provided base_form value does not match the expected pattern.
Resolution: Specify a valid webform ID for the base_form query parameter. - NO_PERMISSION HTTP 403
Permission denied.
Resolution: You do not have permission to perform this action. Only users with Webforms A/B Testing permission can perform this action.