Retrieve per-variant time series data for an experience (A/B test).
POST /analytics/experience/{experienceId}/timeseries
Returns metric values over time for each variation in the experiment, segmented by variation name. Use this data to compare variant performance over time and compute signals like "win-day count" (how many periods a variant beat control).
Parameters
experienceId (path) — required. UUID of the experience.
granularity — optional time bucketing: hour, day (default), week, or month.
mode — cumulative (default, running totals) or noncumulative (per-bucket values).
metrics — optional array of metric enum values to include (see table below). Defaults to conversion_rate, net_revenue_per_visitor, gross_profit_per_visitor.
startTs — optional 10-digit epoch timestamp in seconds. Defaults to experience start date.
endTs — optional 10-digit epoch timestamp in seconds. Defaults to now or experience end date.
filters — optional analytics filters object. See below and the Filters Reference for available fields.
Available Metrics
Pass one or more of these enum values in the metrics array:
Value
Description
conversion_rate
Conversion rate
net_revenue_per_visitor
Revenue per visitor (RPV)
gross_profit_per_visitor
Profit per visitor (PPV)
aov
Average order value
n_visitors
Visitor count
n_orders
Order count
net_revenue
Total net revenue
Filters
This endpoint accepts the same filters as POST /analytics/resource/{experienceId}. Key filters include:
Field
Type
Description
deviceType
string
"any", "mobile", or "desktop"
visitorType
string
"any", "new", or "returning"
countryCodes
string[]
ISO 3166-1 alpha-2 codes, e.g. ["US", "GB"]
sourceSitesOrChannels
string[]
Traffic channel names (see Filters Reference)
userBehavior
object
Visitor behavior filter (see sub-fields below)
experimentProductsOnly
boolean
Only include products in the experiment (target products)
onlyProductIds
string[]
Shopify product IDs to include
onlyProductHandles
string[]
Shopify product handles to include
userBehavior sub-fields
All fields are optional booleans. Set to true to filter to only visitors who performed that action.
Field
Description
viewedProductPage
Visitor viewed a product page
viewedCollectionPage
Visitor viewed a collection page
addedToCart
Visitor added an item to cart
viewedCheckout
Visitor reached checkout
See the Filters Reference section for the full list of available filter fields.
Response Structure
The response contains a segments object keyed by variation name. Each segment has a data array of time-bucketed metric values. A variations array provides metadata including which variation is the control.
Each data point includes a dt field as a formatted date string (not Unix epoch). Format depends on granularity:
hour / day: "YYYY-MM-DD HH:mm:ss"
week / month: "YYYY-MM-DD"
Date Range Behavior
When startTs and endTs are omitted, the date range defaults to the experience's full lifetime (start date through end/pause date or now).
If the experience is paused or ended, the response is automatically truncated at the pause/end date — no data points are returned after that point.
If the provided startTs is before the experience start date, it is clamped to the experience start. Similarly, endTs is clamped to the experience end/pause date.
Retrieve analytics data for a specific experience, including metrics, variations, and optionally graph images.
This legacy GET endpoint is deprecated, intentionally limited to the original query-parameter contract, and kept only as a beta compatibility path. Use the POST variant on the same path for all new integrations. The GET endpoint will be removed when the beta version ends.
Valid view values are overview and audience. The value summary is not supported. When view=audience, you must also provide the audience query parameter.
The legacy start and end query parameters must be 10-digit Unix epoch timestamps in seconds, not milliseconds.
Response payloads include impact (object with est_monthly_revenue_increase: the projected 30-day revenue lift from the best non-control variation vs. control, or null when there is insufficient data) plus distribution and ordering helpers such as audienceOrder, histogram, kde, and cdf.
Authorizations
intelligems-access-tokenstringRequired
Intelligems external API access token.
Query parameters
graphsstringOptional
Comma-separated list of graph IDs to include in response. Only applicable for "view=overview" requests. Available options:
abandoned_cart_rate
abandoned_checkout_rate
add_to_cart_rate
avg_discount_per_all_orders
avg_discount_per_discounted_order
avg_product_revenue_per_unit
avg_units_per_order
checkout_address_submitted_rate
checkout_begin_rate
checkout_enter_contact_info_rate
conversion_rate
net_product_revenue_per_order
net_revenue_per_order
net_revenue_per_visitor
net_shipping_revenue_per_order
pct_orders_free_shipping
pct_subscription_orders
profit_per_order
profit_per_visitor
subscription_orders_per_visitor
subscription_product_revenue_per_order
subscription_profit_per_visitor
subscription_revenue_per_order
subscription_revenue_per_visitor
view_collection_page_rate
view_product_page_rate
graphOutputstring · enumOptional
Output format for graph images. 'png' (default) uploads to S3 and returns a URL. 'base64' returns the raw base64-encoded PNG data inline.
Default: pngPossible values:
viewstring · enumOptional
Resource view to analyze. Supported values are 'overview' for variation-level metrics and 'audience' for a breakdown by the selected audience dimension.
Default: overviewPossible values:
audiencestring · enumOptional
Audience breakdown dimension returned when view is audience. This field is required when view is audience. Use one of the supported audience fields such as device_type, visitor_type, or source_channel.
Possible values:
analyticsViewTypestring · enumOptional
Optional analytics view preset used by the backend when building the analysis request.
Possible values:
endstringOptional
Optional analysis end timestamp as a 10-digit Unix epoch string in seconds (not milliseconds).
startstringOptional
Optional analysis start timestamp as a 10-digit Unix epoch string in seconds (not milliseconds).
Responses
200
OK
application/json
get
/v25-10-beta/analytics/resource/{experienceId}
200
OK
post
Analyze analytics data for a specific experience using a POST request body for filters and request settings.
The legacy GET /analytics/resource/{experienceId} endpoint remains available only as a beta compatibility path for existing integrations. It is deprecated, limited to its original query-parameter contract, and will be removed when the beta version ends.
Valid view values are overview and audience. The value summary is not supported. When view is audience, you must also provide the audience field.
Use startTs and endTs in the request body to match the backend contract. These values must be 10-digit Unix epoch timestamps in seconds, not milliseconds. Use the filters object for all advanced filtering instead of query parameters.
Graphs
When requesting graphs via the graphs object, graphs.ids accepts an array of metric identifiers. Valid values are: conversion_rate, add_to_cart_rate, abandoned_cart_rate, abandoned_checkout_rate, checkout_begin_rate, checkout_enter_contact_info_rate, checkout_address_submitted_rate, view_product_page_rate, view_collection_page_rate, net_revenue_per_visitor, net_product_revenue_per_order, net_revenue_per_order, avg_units_per_order, avg_product_revenue_per_unit, profit_per_visitor, profit_per_order, pct_orders_free_shipping, net_shipping_revenue_per_order, subscription_orders_per_visitor, subscription_revenue_per_visitor, subscription_profit_per_visitor, subscription_product_revenue_per_order, avg_discount_per_discounted_order, avg_discount_per_all_orders, pct_subscription_orders, subscription_revenue_per_order.
Note: revenue_per_visitor is not a valid graph ID — use net_revenue_per_visitor instead.
Each graph object in the response includes id (string), key (the original metric key), type (chart type, e.g. "bar"), title (display title), and either url (CDN URL when outputFormat is "png") or data (base64-encoded PNG when outputFormat is "base64").
Additional Response Fields
Response payloads include impact (object with est_monthly_revenue_increase: the projected 30-day revenue lift from the best non-control variation vs. control, or null when there is insufficient data) plus distribution and ordering helpers: audienceOrder (segment display ordering when using audience view), histogram (order value distribution bins), kde (kernel density estimate curve), and cdf (cumulative distribution function curve). These are present alongside the primary metrics and variations arrays.
Authorizations
intelligems-access-tokenstringRequired
Intelligems external API access token.
Body
viewstring · enumOptional
Resource view to analyze. Supported values are 'overview' for variation-level metrics and 'audience' for a breakdown by the selected audience dimension.
Default: overviewPossible values:
audiencestring · enumOptional
Audience breakdown dimension returned when view is audience. This field is required when view is audience. Use one of the supported audience fields such as device_type, visitor_type, or source_channel.
Possible values:
analyticsViewTypestring · enumOptional
Optional analytics view preset used by the backend when building the analysis request.
Possible values:
endTsstringOptional
Optional analysis end timestamp as a 10-digit Unix epoch string in seconds (not milliseconds). Maps directly to the backend endTs field.
startTsstringOptional
Optional analysis start timestamp as a 10-digit Unix epoch string in seconds (not milliseconds). Maps directly to the backend startTs field.
Responses
200
OK
application/json
post
/v25-10-beta/analytics/resource/{experienceId}
200
OK
get
Retrieve a paginated list of experiences.
The response includes experiencesList plus the pagination fields page, limit, total, and totalPages.
Query Parameters
All query parameters are optional.
limit — integer, defaults to 20
page — integer (minimum 1), defaults to 1
status — one of started, paused, ended, pending
category — one of experiment, personalization
offset is not supported for this endpoint. Pagination is page-based (page + limit).
Each list item includes history — raw user-action records with broad action types (saveExperience, duplicateExperience, archiveCampaign, etc.) and full user objects. For lifecycle-only events (start, pause, end, delete, reset) with the performing user's email, see experienceActions. For config-deploy diffs, see ?includeChangeLog=true on GET /experiences/{experienceId}.
Compared with GET /experiences/{experienceId}, list items do not include experienceCustomMetrics, experienceIntegrations, experienceKeyMetrics, or shippingTestMethodDefinitions.
Authorizations
intelligems-access-tokenstringRequired
Intelligems external API access token.
Query parameters
categorystring · enumOptional
Filter by experience category. Omit to return all categories.
Possible values:
statusstring · enumOptional
Filter by lifecycle status. Omit to return all statuses.
The response body is wrapped in an experience key:
{"experience":{"id":"YOUR_EXPERIENCE_ID"}}
Compared with GET /experiences-list, this response includes experienceCustomMetrics, experienceIntegrations, experienceKeyMetrics, and shippingTestMethodDefinitions.
Tracking who changed what
This endpoint exposes two complementary audit trails:
experienceActions (always returned) — lifecycle state transitions (start, pause, end, delete, reset). Each entry includes a performedBy field with the email of the user who triggered the action, resolved from History records by matching action type and timestamp within a 5-minute window. performedBy is null when no matching History record is found.
changeLog (opt-in, see includeChangeLog below) — audit trail of deployed-config changes that touched this experience. Each entry groups diffs by entity type (experience, variations, offers, onsiteEdits, onsiteInjections, redirects, checkoutBlocks, audiences, pageTargeting) and carries the deployer's email via performedBy. Capped at the 20 most recent entries, newest first.
Query Parameters
All query parameters are optional.
includeChangeLog — boolean, defaults to false. When true, the response includes a top-level changeLog array on the experience.
Note on history
List items on GET /experiences-list include a history array containing raw user-action records with broader action types (saveExperience, duplicateExperience, archiveCampaign, etc.) and full user objects. The single-experience response does not include this history field — use experienceActions for lifecycle events and ?includeChangeLog=true for config-deploy diffs instead.
When true, include a top-level changeLog array on the experience containing per-deploy diffs of entities that were modified (experience, variations, offers, onsiteEdits, onsiteInjections, redirects, checkoutBlocks, audiences, pageTargeting). Each entry carries the deployer's email via performedBy. Capped at the 20 most recent deploys, newest first. Defaults to false.