Convert Goals API

Goals measure how well your site fulfills your target objectives. A goal represents a completed activity, called a conversion, that contributes to the success of your business. Examples of goals include making a purchase (for an ecommerce site), completing a game level (for a mobile gaming site), or submitting a contact information form (for a marketing or lead generation site). Read more information about Goals.

Operations 9

POST /accounts/{account_id}/projects/{project_id}/goals List goals within a project #
GET /accounts/{account_id}/projects/{project_id}/goals/{goal_id} Get details for a specific goal #
GET /accounts/{account_id}/projects/{project_id}/goals/{goal_key} Get goal details by its unique key #
POST /accounts/{account_id}/projects/{project_id}/goals/add Create a new conversion goal #
POST /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/update Update an existing conversion goal #
DELETE /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/delete Delete a conversion goal #
POST /accounts/{account_id}/projects/{project_id}/goals/bulk-update Update multiple goals at once #
POST /accounts/{account_id}/projects/{project_id}/goals/bulk-delete Delete multiple goals at once #
POST /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/clone Clone an existing conversion goal #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/convert-goals-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

convert-goals-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Convert Accounts Goals 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: Goals
  description: Goals measure how well your site fulfills your target objectives. A goal represents a completed activity, called a conversion, that contributes to the success of your business. Examples of goals include making a purchase (for an ecommerce site), completing a game level (for a mobile gaming site), or submitting a contact information form (for a marketing or lead generation site). Read more information about <a href="https://support.convert.com/hc/en-us/articles/204494109-Goals">Goals</a>.
paths:
  /accounts/{account_id}/projects/{project_id}/goals:
    post:
      operationId: getGoalsList
      summary: List goals within a project
      description: 'Retrieves a list of all conversion goals defined for a specific project.

        Goals are used to measure the success of experiences (e.g., purchases, sign-ups, page views).

        Supports filtering by status, type, name, and pagination.

        The Knowledge Base article "Goals" describes various goal types like ''Visit a specific page'', ''Revenue goal'', ''Click on a link'', etc.

        '
      tags:
      - Goals
      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/GetGoalsRequest'
      responses:
        '200':
          $ref: '#/components/responses/GoalsListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}:
    get:
      operationId: getGoal
      summary: Get details for a specific goal
      description: 'Retrieves detailed information about a single conversion goal, identified by its `goal_id`.

        This includes its name, type (e.g., ''visits_page'', ''revenue'', ''clicks_link''), configuration settings (like URL for page visit goals, or CSS selector for click goals), and triggering rules.

        The `include` parameter can fetch additional data like usage statistics.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be retrieved
        schema:
          type: integer
      - name: include
        description: 'Specifies the list of optional fields which would be included in the response.


          Otherwise, the fields that can be passed through this parameter would not be included in the response.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GoalOptionalFields'
      responses:
        '200':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_key}:
    get:
      operationId: getGoalByKey
      summary: Get goal details by its unique key
      description: 'Retrieves detailed information about a single conversion goal, identified by its user-defined `goal_key`.

        Useful if you have a human-readable key for a goal. Otherwise, similar to getting a goal by ID.

        '
      tags:
      - Goals
      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: goal_key
        in: path
        required: true
        description: Key of the goal to be retrieved
        schema:
          type: string
      - name: include
        description: 'Specifies the list of optional fields which would be included in the response.


          Otherwise, the fields that can be passed through this parameter would not be included in the response.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GoalOptionalFields'
      responses:
        '200':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/add:
    post:
      operationId: createGoal
      summary: Create a new conversion goal
      description: 'Defines a new conversion goal within a project.

        Requires specifying the goal name and type (e.g., ''visits_page'', ''revenue'', ''clicks_link'', ''submits_form'', ''code_trigger'').

        Depending on the type, additional settings are needed, such as the target URL for a page visit goal, or the CSS selector for a click goal.

        The Knowledge Base article "Goals" (Use a goal template section) lists various types.

        '
      tags:
      - Goals
      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 goal is to be stored
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/CreateGoalRequest'
      responses:
        '201':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/update:
    post:
      operationId: updateGoal
      summary: Update an existing conversion goal
      description: 'Modifies the configuration of an existing conversion goal.

        This can include changing its name, type, status (active/archived), or specific settings like the target URL or triggering rules.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be updated
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/UpdateGoalRequest'
      responses:
        '200':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/delete:
    delete:
      operationId: deleteGoal
      summary: Delete a conversion goal
      description: 'Permanently removes a conversion goal from a project.

        This action is irreversible. If the goal is in use by active experiences, consider archiving it instead.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be deleted
        schema:
          type: integer
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/bulk-update:
    post:
      operationId: bulkGoalsUpdate
      summary: Update multiple goals at once
      description: 'Allows for changing the status (e.g., active, archived) of multiple goals within a project simultaneously.

        Requires a list of goal IDs and the target status.

        '
      tags:
      - Goals
      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/BulkUpdateGoalsRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/bulk-delete:
    post:
      operationId: bulkGoalsDelete
      summary: Delete multiple goals at once
      description: 'Permanently removes multiple goals from a project in a single operation.

        Requires a list of goal IDs. This action is irreversible.

        '
      tags:
      - Goals
      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/BulkDeleteGoalsRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/clone:
    post:
      operationId: cloneGoal
      summary: Clone an existing conversion goal
      description: 'Creates a new goal as an identical copy of an existing one (specified by `goal_id`).

        Useful for creating a similar goal with minor modifications or for templating.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be deleted
        schema:
          type: integer
      - name: include
        description: 'Specifies the list of optional fields which would be included in the response.


          Otherwise, the fields that can be passed through this parameter would not be included in the response.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GoalOptionalFields'
      responses:
        '201':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    BaseRuleWithBrowserNameValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Browser name used for matching
            type: string
            enum:
            - chrome
            - microsoft_ie
            - firefox
            - microsoft_edge
            - mozilla
            - opera
            - safari
    BaseRuleWithSegmentBucketedValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: ID of the segment used for matching
            type: number
    Pagination:
      type: object
      properties:
        current_page:
          description: The current page number being displayed from the paginated set.
          type: integer
          minimum: 1
        items_count:
          description: The total number of items available across all pages for the current filter criteria.
          type: integer
          minimum: 0
        items_per_page:
          description: The number of items included in the current page of results (matches `results_per_page` from the request).
          type: integer
          minimum: 0
        pages_count:
          description: The total number of pages available for the current filter criteria and `results_per_page` setting.
          type: integer
          minimum: 0
    GenericTextKeyValueMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithStringValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/GenericTextKeyValueMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/TextMatchingOptions'
      - $ref: '#/components/schemas/GenericKey'
    DayOfWeekMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithDayOfWeekValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/DayOfWeekMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/NumericMatchingOptions'
    WeatherConditionMatchRulesTypes:
      type: string
      enum:
      - weather_condition
    GenericBoolMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithBooleanValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/BoolMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/ChoiceMatchingOptions'
    CreateSubmitsFormGoal:
      allOf:
      - $ref: '#/components/schemas/SubmitsFormGoal'
      required:
      - name
      - type
      - settings
    TextMatchingOptions:
      type: string
      enum:
      - matches
      - regexMatches
      - contains
      - endsWith
      - startsWith
    MinuteOfHourMatchRulesTypes:
      type: string
      enum:
      - local_time_minute_of_hour
      - project_time_minute_of_hour
    SortDirection:
      type: object
      properties:
        sort_direction:
          type: string
          nullable: true
          default: desc
          description: 'The direction for sorting the list results, based on the `sort_by` field.

            - `asc`: Ascending order (e.g., A-Z, 1-10, oldest to newest).

            - `desc`: Descending order (e.g., Z-A, 10-1, newest to oldest).

            Defaults to `desc` (newest/highest first) if not specified.

            '
          enum:
          - asc
          - desc
    GenericTextKeyValueMatchRulesTypes:
      type: string
      enum:
      - generic_text_key_value
    BaseRuleWithMinuteOfHourValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Minute of hour used for matching
            type: number
            minimum: 1
            maximum: 60
    TextMatchRulesTypes:
      type: string
      enum:
      - url
      - url_with_query
      - query_string
      - campaign
      - keyword
      - medium
      - source_name
      - city
      - region
      - browser_version
      - user_agent
      - page_tag_page_type
      - page_tag_category_id
      - page_tag_category_name
      - page_tag_product_sku
      - page_tag_product_name
      - page_tag_customer_id
      - page_tag_custom_1
      - page_tag_custom_2
      - page_tag_custom_3
      - page_tag_custom_4
      - visitor_id
    GoalStatuses:
      type: string
      description: 'The current status of a goal:

        - `active`: The goal is active and will track conversions for experiences it''s attached to.

        - `archived`: The goal is archived and will not track new conversions. Its historical data remains accessible in reports for experiences that previously used it. Archived goals can often be cloned or unarchived.

        Knowledge Base: "Benefits of Archiving Unused Goals, Locations, and Audiences."

        '
      enum:
      - active
      - archived
    GenericBoolKeyValueMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithBooleanValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/GenericBoolKeyValueMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/ChoiceMatchingOptions'
      - $ref: '#/components/schemas/GenericKey'
    CreateAdvancedGoal:
      allOf:
      - $ref: '#/components/schemas/AdvancedGoal'
      required:
      - triggering_rule
      - name
      - type
    BaseRuleWithOsValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Operating System name used for matching
            type: string
            enum:
            - android
            - iphone
            - ipod
            - ipad
            - windows
            - macos
            - linux
    ScrollPercentageGoalSettings:
      type: object
      additionalProperties: false
      properties:
        percentage:
          type: number
          description: The scroll depth percentage (e.g., 25, 50, 75, 100) that a visitor must reach on a page for this goal to trigger. The page(s) are defined in the goal's `triggering_rule`.
      required:
      - percentage
    BaseRuleWithStringValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: The value used to match against 'rule_type' using 'matching'
            type: string
    GenericNumericKeyValueMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithNumericValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/GenericNumericKeyValueMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/NumericMatchingOptions'
      - $ref: '#/components/schemas/GenericKey'
    BulkUpdateGoalRequestData:
      type: object
      description: Request body for bulk updating the status of multiple goals.
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/BulkGoalsIds'
        status:
          $ref: '#/components/schemas/GoalStatuses'
      required:
      - id
      - status
    OnlyCount:
      type: object
      properties:
        onlyCount:
          type: boolean
          description: 'If set to `true` in a list request, the response will only contain the total count of matching items (`extra.pagination.items_count`)

            and will not include the actual item data. Useful for quickly getting totals without fetching full datasets.

            '
    RuleObject:
      type: object
      nullable: true
      description: 'Defines the logical structure for combining multiple rule conditions. It uses a nested OR -> AND -> OR_WHEN structure.

        - The top-level `OR` array means if *any* of its contained AND blocks evaluate to true, the entire rule set is true.

        - Each object within the `OR` array has an `AND` array. For this AND block to be true, *all* of its contained OR_WHEN blocks must evaluate to true.

        - Each object within the `AND` array has an `OR_WHEN` array. For this OR_WHEN block to be true, *any* of its individual `RuleElement` conditions must evaluate to true.

        This structure allows for complex logical expressions like `(CondA AND CondB) OR (CondC AND CondD)`.

        '
      properties:
        OR:
          description: An array of AND-blocks. The overall rule matches if any of these AND-blocks match.
          type: array
          items:
            type: object
            properties:
              AND:
                description: An array of OR_WHEN-blocks. This AND-block matches if all its OR_WHEN-blocks match.
                type: array
                items:
                  type: object
                  properties:
                    OR_WHEN:
                      description: An array of individual rule elements. This OR_WHEN-block matches if any of its rule elements match.
                      type: array
                      items:
                        $ref: '#/components/schemas/RuleElement'
    VisitorTypeMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithVisitorTypeValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/VisitorTypeMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/ChoiceMatchingOptions'
    DayOfWeekMatchRulesTypes:
      type: string
      enum:
      - local_time_day_of_week
      - project_time_day_of_week
    JsConditionMatchRulesTypes:
      type: string
      enum:
      - js_condition
    LanguageMatchRulesTypes:
      type: string
      enum:
      - language
    CreateGaGoal:
      allOf:
      - $ref: '#/components/schemas/GaGoal'
      required:
      - name
      - type
    BaseMatch:
      type: object
      properties:
        negated:
          description: 'If `true`, the logical result of the match is inverted.

            For example, if `match_type` is ''contains'' and `value` is ''apple'', `negated: true` means the rule matches if the attribute *does not* contain ''apple''.

            '
          type: boolean
    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'
    GenericNumericMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithNumericValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/NumericMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/NumericMatchingOptions'
    GenericTextMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithStringValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/TextMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/TextMatchingOptions'
    CookieMatchingOptions:
      type: string
      enum:
      - matches
      - regexMatches
      - contains
      - endsWith
      - startsWith
      - exists
      - doesNotExist
    ErrorData:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        fields:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
    RevenueGoalSettings:
      type: object
      additionalProperties: false
      properties:
        triggering_type:
          type: string
          description: 'How this revenue goal is triggered:

            - `manual`: The goal is triggered by a specific JavaScript call (`_conv_q.push(["pushRevenue", ...])`) on the purchase confirmation page, which includes revenue amount and product count. The `triggering_rule` should be empty or not set.

            - `ga`: Convert attempts to automatically capture revenue data from a standard Google Analytics E-commerce tracking implementation when the `triggering_rule` (e.g., matching the confirmation page URL) is met.

            '
          enum:
          - manual
          - ga
      required:
      - triggering_type
    CountryMatchRulesTypes:
      type: string
      enum:
      - country
    HourOfDayMatchRulesTypes:
      type: string
      enum:
      - local_time_hour_of_day
      - project_time_hour_of_day
    GoalsListResponseData:
      type: object
      description: Response containing a list of conversion goals defined within a project, along with pagination details if applicable.
      properties:
        data:
          $ref: '#/components/schemas/GoalsList'
        extra:
          $ref: '#/components/schemas/Extra'
    BaseRuleWithGoalTriggeredValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: ID of the goal used for m

# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/convert/refs/heads/main/openapi/convert-goals-api-openapi.yml