Fetch Experience Data

post

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.

  • modecumulative (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.

Authorizations
intelligems-access-tokenstringRequired

Intelligems external API access token.

Path parameters
experienceIdstring · uuidRequiredPattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Body
startTsstringOptional

Optional analysis start timestamp as a 10-digit Unix epoch string in seconds. Defaults to the experience start date.

endTsstringOptional

Optional analysis end timestamp as a 10-digit Unix epoch string in seconds. Defaults to now or the experience end date.

granularitystring · enumOptional

Time bucket granularity. Supported values: hour, day, week, month. Defaults to day.

Default: dayPossible values:
modestring · enumOptional

Time series mode. Use 'cumulative' for running totals or 'noncumulative' for per-bucket values. Defaults to cumulative.

Default: cumulativePossible values:
Responses
chevron-right
200

OK

application/json
post
/v25-10-beta/analytics/experience/{experienceId}/timeseries
200

OK

Deprecated
get

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
chevron-right
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
chevron-right
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.

Possible values:
limitinteger · min: 1 · max: 9007199254740991Optional

Maximum number of experiences per page.

pageinteger · min: 1 · max: 9007199254740991Optional

1-based page number for paginated results.

Responses
chevron-right
200

OK

application/json
get
/v25-10-beta/experiences-list
200

OK

get

Retrieve a single experience by ID.

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.

Authorizations
intelligems-access-tokenstringRequired

Intelligems external API access token.

Path parameters
experienceIdstring · uuidRequiredPattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Query parameters
includeChangeLogbooleanOptional

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.

Responses
chevron-right
200

OK

application/json
get
/v25-10-beta/experiences/{experienceId}
200

OK

Last updated

Was this helpful?