Convert Experiences API
Convert Experiences provides a couple different experiences types. A/B, Split URL, Multivariate (MVT), Deploys, A/A and Multi-page (funnel) testing. To learn more, see Six experience types in Convert Experiences.
Convert Experiences provides a couple different experiences types. A/B, Split URL, Multivariate (MVT), Deploys, A/A and Multi-page (funnel) testing. To learn more, see Six experience types in Convert Experiences.
openapi: 3.1.0
info:
title: Convert Accounts Experiences API
description: 'Move your app forward with the Convert API. The Convert API allows
you to manage your Convert Experiences projects using code. The REST API is
an interface for managing and extending functionality of Convert. For
example, instead of creating and maintaining projects using the Convert
Experiences web dashboard you can create an experiment programmatically.
Additionally, if you prefer to run custom analysis on experiment results you
can leverage the API to pull data from Convert Experiences into your own
workflow. If you do not have a Convert account already, sign up for a free
developer account at https://www.convert.com/api/.
*[Convert API V1](/doc/v1) is still available and documentation can be found [here](/doc/v1) but using it is highly discouraged
as it will be phased out in the future*
'
version: 2.0.0
servers:
- url: https://api.convert.com/api/v2
description: Live API server
- url: https://apidev.convert.com/api/v2
description: DEV API server
- url: http://apidev.convert.com:5000/api/v2
description: DEV mocked API server
tags:
- name: Experiences
description: Convert Experiences provides a couple different experiences types. A/B, Split URL, Multivariate (MVT), Deploys, A/A and Multi-page (funnel) testing. To learn more, see <a href="https://support.convert.com/hc/en-us/articles/204494049">Six experience types in Convert Experiences.</a>
paths:
/accounts/{account_id}/projects/{project_id}/experiences:
post:
operationId: getExperiencesList
summary: List experiences within a project
description: 'Retrieves a list of all experiences (A/B tests, MVT, Split URL, Deployments, etc.) within a specific project.
Supports filtering by status, type, tags, and other criteria. Pagination is also supported.
The `include` parameter can fetch related data like `variations` or `goals`. The `expand` parameter can provide full objects for linked entities.
The Knowledge Base article "The Experience Overview Screen" describes the UI equivalent.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/GetExperiencesListRequest'
responses:
'200':
$ref: '#/components/responses/ExperiencesListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}:
get:
operationId: getExperience
summary: Get details for a specific experience
description: 'Retrieves comprehensive details for a single experience, identified by its `experience_id`.
This includes its configuration (name, type, URL, status), associated audiences, locations, goals, variations, and integration settings.
The `include` and `expand` parameters allow fetching more detailed related data.
The Knowledge Base article "Experience Summary" describes the UI equivalent of this data.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
- name: experience_id
description: The ID of the experience to be retrieved
in: path
required: true
schema:
type: integer
- name: report_token
in: header
required: false
description: Token to access the experience report in read-only mode.
schema:
type: string
- name: include
description: 'Array parameter that would mention extra fields to be included into the response; otherwise those fields would be excluded by default
Read more in the section related to [Optional Fields](#tag/Optional-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceIncludeFields'
- name: expand
description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.
Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceExpandFields'
responses:
'200':
$ref: '#/components/responses/ExperienceResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_key}:
get:
operationId: getExperienceByKey
summary: Get experience details by its unique key
description: 'Retrieves comprehensive details for a single experience, identified by its user-defined `experience_key` instead of its numerical ID.
This is useful when you have a human-readable key for an experience.
Functionality and parameters are otherwise similar to getting an experience by ID.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
- name: experience_key
description: The key of the experience to be retrieved
in: path
required: true
schema:
type: string
- name: include
description: 'Array parameter that would mention extra fields to be included into the response; otherwise those fields would be excluded by default
Read more in the section related to [Optional Fields](#tag/Optional-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceIncludeFields'
- name: expand
description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.
Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceExpandFields'
responses:
'200':
$ref: '#/components/responses/ExperienceResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/add:
post:
operationId: createExperience
summary: Create a new experience
description: 'Creates a new experience (e.g., A/B test, Split URL test, MVT, Deploy, A/A test, Multi-page Funnel) within a project.
Requires defining the experience name, type, status (usually ''draft''), and the URL for the Visual Editor or original page.
Variations, audiences, locations, goals, and other settings can be specified during creation.
The Knowledge Base article "Create a New Experience" outlines the UI process.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
- name: include
description: 'Specifies the list of optional objects which would be included in the response.
Read more in the section related to [Expanding Fields](#tag/Optional-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceIncludeFields'
- name: expand
description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.
Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceExpandFields'
requestBody:
$ref: '#/components/requestBodies/CreateExperienceRequest'
responses:
'201':
$ref: '#/components/responses/ExperienceResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/clone:
post:
operationId: cloneExperience
summary: Clone an existing experience
description: 'Creates a new experience as an identical copy of an existing one (specified by `experience_id`).
This is useful for iterating on a previous test or using an existing experience as a template.
The cloned experience starts in ''draft'' status and does not copy historical report data.
The Knowledge Base article "How to Clone an Experiment?" describes this.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
- name: experience_id
description: The ID of the experience to be cloned
in: path
required: true
schema:
type: integer
- name: include
description: 'Specifies the list of optional objects which would be included in the response.
Read more in the section related to [Expanding Fields](#tag/Optional-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceIncludeFields'
- name: expand
description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.
Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceExpandFields'
requestBody:
$ref: '#/components/requestBodies/CloneExperienceRequest'
responses:
'201':
$ref: '#/components/responses/ExperienceResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/update:
post:
operationId: updateExperience
summary: Update an existing experience
description: 'Modifies the configuration of an existing experience.
This can include changing its name, description, status (e.g., from ''draft'' to ''active'', or ''active'' to ''paused''), URL, traffic distribution, audiences, locations, goals, variations, and integration settings.
The Knowledge Base article "How Can I Change Variations After Experiment Started?" notes that variations cannot be added/removed after start, but other settings can be updated.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
- name: experience_id
description: The ID of the updated experience
in: path
required: true
schema:
type: integer
- name: include
description: 'Specifies the list of optional objects which would be included in the response.
Read more in the section related to [Expanding Fields](#tag/Optional-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceIncludeFields'
- name: expand
description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned.
Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)
'
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/ExperienceExpandFields'
requestBody:
$ref: '#/components/requestBodies/UpdateExperienceRequest'
responses:
'200':
$ref: '#/components/responses/ExperienceResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/delete:
delete:
operationId: deleteExperience
summary: Delete an experience
description: 'Permanently removes an existing experience and all its associated data from the project.
This action is irreversible. It''s generally recommended to archive experiences instead of deleting them to preserve historical data.
The Knowledge Base article "How Do I Archive / Delete an Experience?" highlights this.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
- name: experience_id
in: path
required: true
description: ID of the experience to be delete
schema:
type: integer
responses:
'200':
$ref: '#/components/responses/SuccessResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/report_token:
post:
operationId: getReportToken
summary: Manage report access token for an experience
description: 'Generates, regenerates, or deletes a unique token that allows read-only access to an experience''s report.
This is useful for sharing report data with stakeholders who do not have a Convert account or full project access.
The token has an expiration time.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
- name: experience_id
description: ID of the Experience
in: path
required: true
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/ExperienceReportTokenRequest'
responses:
'200':
$ref: '#/components/responses/ExperienceReportTokenResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/livedata:
post:
operationId: getExperienceLiveData
summary: Get live tracking events for a specific experience
description: 'Retrieves the last 100 tracking events (views, conversions, revenue) specifically for the given experience.
Useful for real-time monitoring and QA of a single active experience. Supports filtering by event type and goals.
The Knowledge Base article "Live Logs for Projects and Experiments in Convert" describes this feature.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
in: path
required: true
description: ID of the project into which the experience is stored
schema:
type: integer
- name: experience_id
in: path
required: true
description: ID of the Experience
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/GetExperienceLiveDataRequest'
responses:
'200':
$ref: '#/components/responses/LiveDataEventsListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/change-history:
post:
operationId: getExperienceHistory
summary: Get change history for a specific experience
description: 'Retrieves a historical log of all changes made to a specific experience.
This includes modifications to its settings, variations, audiences, goals, status, etc.
Provides an audit trail for the lifecycle of an experience, filterable by date and user.
The Knowledge Base article "Track User Changes with Change History" details this.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
in: path
required: true
description: ID of the project to which save/retrieved data is connected
schema:
type: integer
- name: experience_id
in: path
required: true
description: ID of the Experience
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/GetExperienceHistoryRequest'
responses:
'200':
$ref: '#/components/responses/ChangeHistoryListResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/trigger-screenshots:
post:
operationId: triggerExperienceScreenshots
summary: Trigger screenshot generation for experience variations
description: 'Initiates the process of generating or regenerating screenshots for the variations of a specified experience.
These screenshots are displayed in the Convert UI to help visualize the changes made in each variation.
The Knowledge Base article "Whitelist IPs for Screenshot Previews" is related as it lists IPs our service uses.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
in: path
required: true
description: ID of the project to which save/retrieved data is connected
schema:
type: integer
- name: experience_id
in: path
required: true
description: ID of the Experience
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/TriggerExperienceScreenshotsRequest'
responses:
'200':
$ref: '#/components/responses/SuccessResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/bulk-update:
post:
operationId: bulkExperiencesUpdate
summary: Update multiple experiences at once
description: 'Allows for changing the status (e.g., activate, pause, archive) of multiple experiences within a project simultaneously.
Requires a list of experience IDs and the target status.
The Knowledge Base article "Bulk Actions on Experiences" describes this UI feature.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/BulkUpdateExperiencesRequest'
responses:
'200':
$ref: '#/components/responses/BulkSuccessResponse'
default:
$ref: '#/components/responses/ErrorResponse'
/accounts/{account_id}/projects/{project_id}/experiences/bulk-delete:
post:
operationId: bulkExperiencesDelete
summary: Delete multiple experiences at once
description: 'Permanently removes multiple experiences from a project in a single operation.
Requires a list of experience IDs. This action is irreversible.
The Knowledge Base article "Bulk Actions on Experiences" describes this UI feature.
'
tags:
- Experiences
parameters:
- name: account_id
in: path
required: true
description: ID of the account that owns the retrieved/saved data
schema:
type: integer
- name: project_id
description: ID of the project to which save/retrieved data is connected
in: path
required: true
schema:
type: integer
requestBody:
$ref: '#/components/requestBodies/BulkDeleteExperiencesRequest'
responses:
'200':
$ref: '#/components/responses/BulkSuccessResponse'
default:
$ref: '#/components/responses/ErrorResponse'
components:
schemas:
ReportingSegmentsCountry:
type: string
description: 'The two-letter ISO 3166-1 alpha-2 country code of the visitor, determined by IP geolocation.
Used for segmenting reports by country to analyze geographical performance.
Knowledge Base: "How Do I Target by Geographic Location Like City, Region or Country?".
'
maxLength: 2
minLength: 2
ExperienceCreateUpdateLocations:
type: array
description: A list of Location IDs to associate with the experience. The experience will run on pages/conditions defined by these locations (according to `settings.matching_options.locations`).
items:
type: integer
SimpleLocationExpandable:
anyOf:
- type: integer
description: Location ID
- $ref: '#/components/schemas/SimpleLocation'
ReportingSegmentsSource:
type: string
description: 'The traffic source that brought the visitor to the site (e.g., ''google'', ''facebook.com'', ''direct'', ''newsletter'').
Derived from `utm_source` URL parameters or the HTTP referrer. Enables report segmentation by traffic source.
Knowledge Base: "How Do You Fill Medium, Keyword and Source Name?".
'
enum:
- campaign
- search
- referral
- direct
- ai_tool
RuleElement:
oneOf:
- $ref: '#/components/schemas/GenericTextMatchRule'
- $ref: '#/components/schemas/GenericNumericMatchRule'
- $ref: '#/components/schemas/GenericBoolMatchRule'
- $ref: '#/components/schemas/GenericTextKeyValueMatchRule'
- $ref: '#/components/schemas/GenericNumericKeyValueMatchRule'
- $ref: '#/components/schemas/GenericBoolKeyValueMatchRule'
- $ref: '#/components/schemas/CookieMatchRule'
- $ref: '#/components/schemas/CountryMatchRule'
- $ref: '#/components/schemas/LanguageMatchRule'
- $ref: '#/components/schemas/GoalTriggeredMatchRule'
- $ref: '#/components/schemas/SegmentBucketedMatchRule'
- $ref: '#/components/schemas/DayOfWeekMatchRule'
- $ref: '#/components/schemas/HourOfDayMatchRule'
- $ref: '#/components/schemas/MinuteOfHourMatchRule'
- $ref: '#/components/schemas/BrowserNameMatchRule'
- $ref: '#/components/schemas/OsMatchRule'
- $ref: '#/components/schemas/WeatherConditionMatchRule'
- $ref: '#/components/schemas/VisitorTypeMatchRule'
- $ref: '#/components/schemas/JsConditionMatchRule'
discriminator:
propertyName: rule_type
mapping:
url: '#/components/schemas/GenericTextMatchRule'
url_with_query: '#/components/schemas/GenericTextMatchRule'
query_string: '#/components/schemas/GenericTextMatchRule'
campaign: '#/components/schemas/GenericTextMatchRule'
keyword: '#/components/schemas/GenericTextMatchRule'
medium: '#/components/schemas/GenericTextMatchRule'
source_name: '#/components/schemas/GenericTextMatchRule'
avg_time_page: '#/components/schemas/GenericNumericMatchRule'
city: '#/components/schemas/GenericTextMatchRule'
country: '#/components/schemas/CountryMatchRule'
region: '#/components/schemas/GenericTextMatchRule'
days_since_last_visit: '#/components/schemas/GenericNumericMatchRule'
language: '#/components/schemas/LanguageMatchRule'
pages_visited_count: '#/components/schemas/GenericNumericMatchRule'
goal_triggered: '#/components/schemas/GoalTriggeredMatchRule'
visit_duration: '#/components/schemas/GenericNumericMatchRule'
cookie: '#/components/schemas/CookieMatchRule'
visitor_type: '#/components/schemas/VisitorTypeMatchRule'
visits_count: '#/components/schemas/GenericNumericMatchRule'
bucketed_into_experience: '#/components/schemas/GenericBoolMatchRule'
bucketed_into_segment: '#/components/schemas/SegmentBucketedMatchRule'
local_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule'
local_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule'
local_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule'
project_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule'
project_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule'
project_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule'
browser_name: '#/components/schemas/BrowserNameMatchRule'
browser_version: '#/components/schemas/GenericTextMatchRule'
os: '#/components/schemas/OsMatchRule'
user_agent: '#/components/schemas/GenericTextMatchRule'
is_desktop: '#/components/schemas/GenericBoolMatchRule'
is_mobile: '#/components/schemas/GenericBoolMatchRule'
is_tablet: '#/components/schemas/GenericBoolMatchRule'
js_condition: '#/components/schemas/JsConditionMatchRule'
page_tag_page_type: '#/components/schemas/GenericTextMatchRule'
page_tag_category_id: '#/components/schemas/GenericTextMatchRule'
page_tag_category_name: '#/components/schemas/GenericTextMatchRule'
page_tag_product_sku: '#/components/schemas/GenericTextMatchRule'
page_tag_product_name: '#/components/schemas/GenericTextMatchRule'
page_tag_product_price: '#/components/schemas/GenericNumericMatchRule'
page_tag_customer_id: '#/components/schemas/GenericTextMatchRule'
page_tag_custom_1: '#/components/schemas/GenericTextMatchRule'
page_tag_custom_2: '#/components/schemas/GenericTextMatchRule'
page_tag_custom_3: '#/components/schemas/GenericTextMatchRule'
page_tag_custom_4: '#/components/schemas/GenericTextMatchRule'
weather_condition: '#/components/schemas/WeatherConditionMatchRule'
generic_text_key_value: '#/components/schemas/GenericTextKeyValueMatchRule'
generic_numeric_key_value: '#/components/schemas/GenericNumericKeyValueMatchRule'
generic_bool_key_value: '#/components/schemas/GenericBoolKeyValueMatchRule'
ReportingSegmentsFilters:
type: object
description: 'A collection of filters used to segment experience report data based on various visitor attributes and traffic sources.
Applying these filters allows for deeper analysis of how different user groups interact with experience variations.
Knowledge Base: "Using Basic and Advanced Post segmentation".
'
properties:
devices:
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsDeviceCategories'
nullable: true
browsers:
description: Filter report data for visitors using one or more specified web browsers.
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsBrowser'
nullable: true
countries:
description: Filter report data for visitors from one or more specified countries (using 2-letter ISO codes).
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsCountry'
nullable: true
visitor_types:
description: Filter report data for 'new' or 'returning' visitors.
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsVisitorType'
nullable: true
campaigns:
description: Filter report data for visitors attributed to one or more specified marketing campaign names (from `utm_campaign`).
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsCampaign'
nullable: true
custom_segments:
description: Filter report data for visitors belonging to one or more specified custom Convert Audience segments (by segment ID).
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsCustomSegment'
nullable: true
sources:
description: Filter report data for visitors from one or more specified traffic sources (e.g., 'direct', 'search', 'referral').
type: array
items:
$ref: '#/components/schemas/ReportingSegmentsSource'
nullable: true
VisitorTypeMatchRulesTypes:
type: string
enum:
- visitor_type
LocationTriggerTypes:
type: string
default: upon_run
description: 'Specifies the mechanism that activates an experience when its location rules are met:
- `upon_run`: (Default) The experience activates as soon as the Convert tracking script loads and evaluates that the visitor matches the location''s rules (e.g., URL match). This is the standard behavior for most A/B tests.
- `manual`: The experience only activates when explicitly triggered by a JavaScript call (`window._conv_q.push({ what: ''triggerLocation'', params: { locationId: ''...'' } })`). Gives precise programmatic control over activation.
- `dom_element`: The experience activates upon a specific user interaction (e.g., ''click'', ''hover'', ''in_view'', ''change'') with a defined DOM element (identified by a CSS `selector`). Useful for testing changes related to interactive elements.
- `callback`: The experience activates when a custom JavaScript `callback` function (provided in `js`) calls the `activate()` function passed to it. Allows for complex asynchronous activation logic, e.g., after an API response or a specific SPA state change.
Note: For
# --- truncated at 32 KB (240 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/convert/refs/heads/main/openapi/convert-experiences-api-openapi.yml