Skip to content

Webhook Events

Each webhook delivery includes the event type in the X-Ttoolab-Event-Type header and in the JSON payload type field.

| Event type | Description | | :--------- | :---------- | | experiment.created | A new experiment was created | | experiment.started | An experiment started running (published) | | experiment.paused | An experiment was paused | | experiment.finished | An experiment was completed | | experiment.published | An experiment was published to the edge | | experiment.exposure | A visitor was exposed to an experiment variant | | experiment.conversion | A visitor triggered a conversion event | | experiment.winner_detected | A statistically significant winner was detected | | ces.response_created | A CES survey response was submitted | | feature_flag.created | A feature flag experiment was created | | feature_flag.updated | A feature flag was updated or published | | feature_flag.exposed | A visitor was exposed to a feature flag variant | | usage.limit_reached | A plan usage limit was reached | | billing.plan_changed | The tenant’s billing plan changed | | webhook.test | Test event from the dashboard |

Select which events to receive when creating or editing a webhook in the dashboard.

{
"id": "EVENT_ID",
"type": "experiment.conversion",
"projectId": "PROJECT_ID",
"tenantId": "TENANT_ID",
"createdAt": "2025-06-09T12:00:00.000Z",
"data": {}
}

The data object varies by event type.

{
"id": "EVENT_ID",
"type": "experiment.exposure",
"projectId": "PROJECT_ID",
"tenantId": "TENANT_ID",
"createdAt": "2025-06-09T12:00:00.000Z",
"data": {
"experimentId": "EXPERIMENT_ID",
"experimentKey": "hero-cta-test",
"variantId": "VARIANT_ID",
"variantKey": "variant-b",
"anonymousId": "550e8400-e29b-41d4-a716-446655440000",
"eventName": "$exposure",
"url": "https://example.com/pricing",
"payload": {}
}
}
{
"id": "EVENT_ID",
"type": "experiment.conversion",
"projectId": "PROJECT_ID",
"tenantId": "TENANT_ID",
"createdAt": "2025-06-09T12:00:05.000Z",
"data": {
"experimentId": "EXPERIMENT_ID",
"experimentKey": "hero-cta-test",
"variantId": "VARIANT_ID",
"variantKey": "variant-b",
"anonymousId": "550e8400-e29b-41d4-a716-446655440000",
"eventName": "purchase",
"url": "https://example.com/checkout/success",
"payload": {
"revenue": 99.90,
"order_id": "ORD-12345"
}
}
}
{
"id": "EVENT_ID",
"type": "feature_flag.exposed",
"projectId": "PROJECT_ID",
"tenantId": "TENANT_ID",
"createdAt": "2025-06-09T12:00:00.000Z",
"data": {
"experimentId": "EXPERIMENT_ID",
"experimentKey": "new-checkout-flag",
"variantId": "VARIANT_ID",
"variantKey": "on",
"anonymousId": "550e8400-e29b-41d4-a716-446655440000",
"eventName": "$exposure",
"url": "https://example.com/checkout",
"payload": {}
}
}

Use the id field (also sent as X-Ttoolab-Event-Id) to deduplicate deliveries. Store processed event IDs and skip duplicates.