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 GET

Response 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.