statsig · Schema

Statsig Experiment

An A/B test experiment configuration with defined groups, parameter values, allocation percentages, and analysis settings. Experiments enable controlled testing of product changes by splitting users into groups and measuring metric impacts.

Properties

Name Type Description
id string The unique identifier of the experiment.
name string The name of the experiment, used as the key for SDK evaluation.
description string A human-readable description of the experiment and what it tests.
hypothesis string The hypothesis being tested, describing the expected outcome of the experiment.
status string The current lifecycle status of the experiment.
groups array The experiment groups defining parameter values for each user segment.
allocation number The percentage of eligible users allocated to the experiment.
layerID string The layer this experiment belongs to, enabling parameter sharing and mutual exclusivity with other experiments.
targetingGateID string The feature gate used to filter which users are eligible for the experiment.
defaultValues object The default parameter values returned when a user is not allocated to the experiment.
primaryMetrics array The primary metrics used to evaluate the experiment hypothesis.
secondaryMetrics array Secondary metrics monitored during the experiment for guardrail and exploratory analysis.
tags array Tags for organizing and categorizing the experiment.
targetApps array Target applications this experiment is scoped to.
startedTime integer Timestamp in milliseconds since epoch when the experiment was started.
createdTime integer Timestamp in milliseconds since epoch when the experiment was created.
lastModifiedTime integer Timestamp in milliseconds since epoch when the experiment was last modified.
View JSON Schema on GitHub

JSON Schema

statsig-experiment-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.statsig.com/schemas/statsig/experiment.json",
  "title": "Statsig Experiment",
  "description": "An A/B test experiment configuration with defined groups, parameter values, allocation percentages, and analysis settings. Experiments enable controlled testing of product changes by splitting users into groups and measuring metric impacts.",
  "type": "object",
  "required": ["name"],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unique identifier of the experiment."
    },
    "name": {
      "type": "string",
      "description": "The name of the experiment, used as the key for SDK evaluation.",
      "minLength": 1,
      "maxLength": 256
    },
    "description": {
      "type": "string",
      "description": "A human-readable description of the experiment and what it tests.",
      "maxLength": 4096
    },
    "hypothesis": {
      "type": "string",
      "description": "The hypothesis being tested, describing the expected outcome of the experiment.",
      "maxLength": 4096
    },
    "status": {
      "type": "string",
      "description": "The current lifecycle status of the experiment.",
      "enum": ["setup", "active", "decision_made", "abandoned"]
    },
    "groups": {
      "type": "array",
      "description": "The experiment groups defining parameter values for each user segment.",
      "items": {
        "$ref": "#/$defs/ExperimentGroup"
      },
      "minItems": 2
    },
    "allocation": {
      "type": "number",
      "description": "The percentage of eligible users allocated to the experiment.",
      "minimum": 0,
      "maximum": 100,
      "default": 100
    },
    "layerID": {
      "type": "string",
      "description": "The layer this experiment belongs to, enabling parameter sharing and mutual exclusivity with other experiments."
    },
    "targetingGateID": {
      "type": "string",
      "description": "The feature gate used to filter which users are eligible for the experiment."
    },
    "defaultValues": {
      "type": "object",
      "description": "The default parameter values returned when a user is not allocated to the experiment.",
      "additionalProperties": true
    },
    "primaryMetrics": {
      "type": "array",
      "description": "The primary metrics used to evaluate the experiment hypothesis.",
      "items": {
        "$ref": "#/$defs/MetricReference"
      }
    },
    "secondaryMetrics": {
      "type": "array",
      "description": "Secondary metrics monitored during the experiment for guardrail and exploratory analysis.",
      "items": {
        "$ref": "#/$defs/MetricReference"
      }
    },
    "tags": {
      "type": "array",
      "description": "Tags for organizing and categorizing the experiment.",
      "items": {
        "type": "string"
      }
    },
    "targetApps": {
      "type": "array",
      "description": "Target applications this experiment is scoped to.",
      "items": {
        "type": "string"
      }
    },
    "startedTime": {
      "type": "integer",
      "description": "Timestamp in milliseconds since epoch when the experiment was started."
    },
    "createdTime": {
      "type": "integer",
      "description": "Timestamp in milliseconds since epoch when the experiment was created."
    },
    "lastModifiedTime": {
      "type": "integer",
      "description": "Timestamp in milliseconds since epoch when the experiment was last modified."
    }
  },
  "$defs": {
    "ExperimentGroup": {
      "type": "object",
      "description": "An experiment group that defines parameter values for a segment of allocated users.",
      "required": ["name", "size"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the group (e.g., control, test, variant_a).",
          "minLength": 1
        },
        "size": {
          "type": "number",
          "description": "The percentage of allocated users assigned to this group. All group sizes must sum to 100.",
          "minimum": 0,
          "maximum": 100
        },
        "parameterValues": {
          "type": "object",
          "description": "The parameter key-value pairs for users in this group.",
          "additionalProperties": true
        }
      }
    },
    "MetricReference": {
      "type": "object",
      "description": "A reference to a metric definition used in experiment analysis.",
      "required": ["name"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the metric."
        },
        "type": {
          "type": "string",
          "description": "The metric type (e.g., event_count, ratio, funnel, mean)."
        },
        "direction": {
          "type": "string",
          "description": "The expected direction of change for this metric.",
          "enum": ["increase", "decrease"]
        }
      }
    }
  }
}