Docs navigation

Docs / Connectors

CSV & JSON upload

No connector needed: export aggregate results from any tool and upload them directly on an experiment's Data sources tab. One row per variant × KPI (× segment); one file can mix aggregate and segment rows.

Upload a CSV

On the experiment's Data sources tab click Add evidence → CSV or JSON file and drop the file. Rows are validated before anything is stored; errors are reported as row N.field: message with row numbers matching your spreadsheet.

ColumnRequiredDescription
variant_keyYesVariant identifier matching the experiment's variants (e.g. control, variant_a).
kpi_nameYesKPI name matching a KPI declared on the experiment.
numeratorNoConversion count for proportion KPIs. Must appear together with denominator; numerator ≤ denominator.
denominatorNoSubjects exposed (the sample) for proportion KPIs.
valueNoPoint estimate for KPIs without counts (e.g. revenue per user). Either counts or a value is required.
sample_sizeNoSample size behind a value — enables inference for quantity and revenue KPIs together with std_dev.
std_devNoStandard deviation of a value; with sample_size it enables Welch's t-test for quantity and revenue KPIs.
segment_dimensionNoSet to make the row a segment result (e.g. device).
segment_valueNoThe segment's value (e.g. mobile). Rows without segment fields are aggregate results.
example.csv
variant_key,kpi_name,numerator,denominator,segment_dimension,segment_value
control,checkout_conversion,480,10000,,
variant_a,checkout_conversion,560,10000,,
control,checkout_conversion,210,4200,device,mobile
variant_a,checkout_conversion,262,4150,device,mobile
control,revenue_per_user,,,,
For quantity and revenue KPIs provide value (and ideally sample_size + std_dev). Evidence without variance gets no inferential statistics — the review flags it explicitly and caps confidence rather than inventing significance.

JSON upload

The same data can be posted as JSON (used by the file upload for .json files and by the API), with camelCase field names:

payload.json
{
  "sourceReference": "ga4-export-2026-08",
  "aggregateResults": [
    { "variantKey": "control",   "kpiName": "checkout_conversion", "numerator": 480, "denominator": 10000 },
    { "variantKey": "variant_a", "kpiName": "checkout_conversion", "numerator": 560, "denominator": 10000 }
  ],
  "segmentResults": [
    { "variantKey": "control", "kpiName": "checkout_conversion", "numerator": 210, "denominator": 4200,
      "segmentDimension": "device", "segmentValue": "mobile" }
  ]
}

Duplicate uploads are detected by content hash (or an explicit idempotencyKey) and return the existing import batch instead of duplicating evidence.