---
title: "Upsert Column Match Criteria"
method: POST
path: "/studio/v1/audiences/{audienceId}/actions/match-criteria"
tags: ["Audiences"]
---

# Upsert Column Match Criteria

`POST /studio/v1/audiences/{audienceId}/actions/match-criteria`

## Request

- Base URL: `https://api.zoominfo.com/gtm`
- URL: `https://api.zoominfo.com/gtm/studio/v1/audiences/{audienceId}/actions/match-criteria`
- Auth: OAuth 2
  - Authorization code: `https://login.zoominfo.com`
  - Token URL: `https://okta-login.zoominfo.com/oauth2/default/v1/token` scopes: `api:audience:manage`

Upserts match criteria for the audience's designated match column (the column used for enrichment matching).
Match criteria define how audience column values are mapped to ZoomInfo attributes (for example, mapping an "Email" column to `CONTACT_EMAIL`) for enrichment resolution.

If a request body is provided, the supplied match criteria are applied directly — each entry maps an audience `columnId` to a ZoomInfo attribute field.
If the request body is omitted or `matchCriteria` is not provided, the system attempts to auto-map match criteria using AI.
If the match column does not exist, it will be created automatically.

Existing match criteria on the audience's match column are replaced by the new values.
Returns `200` with the updated match column resource.
Returns `400` if a `columnId` does not exist in the audience or a `mappedTo` value is invalid.
Returns `404` if no audience matches the provided `audienceId`.

## Path parameters

- `audienceId` string, uuid, required

## Request body

- UpsertMatchCriteriaRequestJsonApiModel: JSON API model for upsert match criteria request.
  - `data` UpsertMatchCriteriaRequest, required: Upsert match criteria request resource.
    - `id` string, required: The unique identifier for the resource
    - `type` string, required: The type of the resource
    - `attributes` UpsertMatchCriteriaAttributes, required: Request attributes for upserting match criteria on the audience's designated match column. Match criteria define how audience column values are mapped to ZoomInfo attributes for enrichment matching. If omitted, auto-mapping is attempted for all eligible columns.
      - `matchCriteria` MatchCriteria[]: Array of match criteria to apply to the audience's match column. Each entry maps an audience `columnId` to a ZoomInfo attribute field (e.g., mapping an 'Email' column to `CONTACT_EMAIL`). If not provided, auto-mapping is attempted.
        - `columnId` string, required: The `columnId` of the audience column whose value is used as the match input.
        - `mappedTo` 'COMPANY_WEBSITE' | 'COMPANY_NAME' | 'ZOOMINFO_COMPANY_ID' | 'COMPANY_COUNTRY' | 'COMPANY_STATE' | 'COMPANY_CITY' | 'COMPANY_ZIP_CODE' | 'COMPANY_PHONE' | 'COMPANY_TICKER' | 'COMPANY_LINKEDIN_ID' | 'COMPANY_IP_ADDRESSES' | 'COMPANY_METRO_AREA' | 'COMPANY_LINKEDIN_URL' | 'COMPANY_FACEBOOK_URL' | 'COMPANY_TWITTER_URL' | 'COMPANY_GOOGLE_PLUS_URL' | 'COMPANY_YOUTUBE_URL' | 'COMPANY_LOCATION' | 'COMPANY_LOCATION_CODE' | 'CONTACT_FIRST_NAME' | 'CONTACT_LAST_NAME' | 'CONTACT_EMAIL' | 'JOB_TITLE' | 'DIRECT_PHONE' | 'MOBILE_PHONE' | 'CONTACT_STREET' | 'CONTACT_CITY' | 'CONTACT_STATE' | 'CONTACT_COUNTRY' | 'CONTACT_ZIP_CODE' | 'ZOOMINFO_CONTACT_ID' | 'CONTACT_MIDDLE_NAME' | 'CONTACT_LINKEDIN_URL' | 'CONTACT_TWITTER_URL' | 'CONTACT_LINKEDIN_COMPANY_ID' | 'CONTACT_ZOOMINFO_COMPANY_ID' | 'CONTACT_PARENT_ID' | 'CONTACT_HASHED_EMAILS' | 'CONTACT_LINKEDIN_PRIVATE_IDS', required

## Response `200`

Success

- ReadColumnJsonApiModel: JSON API model for read Column.
  - `data` ReadColumn, required: Column Read resource model.
    - `id` string, required: The unique identifier for the resource
    - `type` string, required: The type of the resource
    - `attributes` ReadColumnAttributes, required: Base attributes shared by all column types in an audience.
      - `name` string, required: Display name of the column shown in the UI and returned in row responses.
      - `dataType` 'TEXT' | 'BOOLEAN' | 'DATE' | 'STRING_LIST' | 'NUMBER_LIST' | 'EMAIL_LIST' | 'PHONE_LIST' | 'PHONE' | 'EMAIL' | 'LARGE_TEXT' | 'INTEGER' | 'DECIMAL' | 'OBJECT' | 'URL' | 'URL_LIST' | 'CHECKBOX' | 'PERCENT' | 'OPAQUE_IDENTIFIER' | 'ORDINAL_IDENTIFIER' | 'REFERENCE' | 'PICKLIST' | 'MULTIPICKLIST' | 'CURRENCY' | 'ZI_CONTACT_ID' | 'ZI_COMPANY_ID' | 'MARKUP'
      - `isDeletable` boolean, required: Whether this column can be deleted via the Delete Column endpoint. Read-only; set by the system.
      - `isEditable` boolean, required: Whether this column's value can be updated via the Update rows endpoint. Read-only; set by the system.
      - `isExportable` boolean, required: Whether this column's values can be included in data exports. Read-only; set by the system.
      - `isFilterable` boolean, required: Whether this column supports row filtering via the filterCriteria. Read-only; set by the system.
      - `isFrozen` boolean: Whether this column is pinned (frozen) to the left in grid views. Optional; defaults to `false`.
      - `isHidden` boolean: Whether this column is hidden from grid views. Optional; defaults to `false`.
      - `isSortable` boolean, required: Whether this column supports row sorting via the List Rows endpoint. Read-only; set by the system.
      - `columnType` 'CUSTOM' | 'CRM_SEARCH' | 'CRM' | 'CSV' | 'FORMULA' | 'ACCOUNT_AI' | 'CONNECTORS' | 'ROUTING' | 'SNOWFLAKE' | 'AI' | 'AGENT_TEAMS' | 'ZOOMINFO_COPILOT_SIGNALS' | 'ZOOMINFO_AUDIENCE' | 'ZOOMINFO_JOB_POSTINGS' | 'ZOOMINFO_WEBSIGHTS' | 'ZOOMINFO_CONTACT_CHANGES' | 'ZOOMINFO_TECHNOLOGIES' | 'ZOOMINFO_INTENT' | 'ZOOMINFO_SCOOPS' | 'ZOOMINFO_COMPANY' | 'ZOOMINFO_CONTACT' | 'ZOOMINFO_CUSTOM' | 'ZOOMINFO_MATCH' | 'ZOOMINFO_CONTACT_SEARCH' | 'SIGNALS_AUDIENCE_DEFAULT' | 'JSON_PARSER' | 'REFERENCE_MAPPER' | 'AUDIENCE_LOOKUP' | 'GRAPHQL_AUDIENCE_DEFAULT' | 'GRAPHQL' | 'ACCOUNT_LOOK_ALIKE' | 'CONTACT_LOOK_ALIKE' | 'ZOOMINFO_FEDERATED_SEARCH' | 'IN_MARKET_SCORE' | 'LOCATION_FIRMOGRAPHIC' | 'ZOOMINFO_SEARCH' | 'ZOOMINFO_SEARCH_AUDIENCE_DEFAULT', required
      - `prompt` string: Formula or AI prompt used to generate values for this column. Returned for `FORMULA` and `AI` columns.
      - `tool` 'AI_DATA_ANALYSIS' | 'AI_WEB_RESEARCH' | 'AI_CONVERSATION_INTELLIGENCE' | 'AI_EMAILER': Defines AI tool names used by AI columns and data dependency discovery.
      - `dataDependencies` ColumnContextInput[]: List of data dependencies that provide context to the AI model for this column. Returned for `AI` columns if data dependencies were specified.
        - `id` string, required: The `columnId` of an existing column in the audience whose values should be included as context for the AI when generating values for the column, OR the `id` of a knowledge base attribute configured.
        - `type` 'COLUMN' | 'KNOWLEDGE_BASE', required: Defines the type of context input used for AI column generation.
      - `scriptConfiguration` ScriptConfiguration: Optional script configuration returned for `FORMULA` columns. Contains the generated expression and its language.
        - `language` 'JAVASCRIPT', required: Supported expression languages for formula columns.
        - `expression` string, required: Generated formula expression evaluated for this column.
      - `matchCriteria` MatchCriteria[]: List of match criteria defining how rows are matched against ZoomInfo data. Returned for `ZOOMINFO_MATCH` columns.
        - `columnId` string, required: The `columnId` of the audience column whose value is used as the match input.
        - `mappedTo` 'COMPANY_WEBSITE' | 'COMPANY_NAME' | 'ZOOMINFO_COMPANY_ID' | 'COMPANY_COUNTRY' | 'COMPANY_STATE' | 'COMPANY_CITY' | 'COMPANY_ZIP_CODE' | 'COMPANY_PHONE' | 'COMPANY_TICKER' | 'COMPANY_LINKEDIN_ID' | 'COMPANY_IP_ADDRESSES' | 'COMPANY_METRO_AREA' | 'COMPANY_LINKEDIN_URL' | 'COMPANY_FACEBOOK_URL' | 'COMPANY_TWITTER_URL' | 'COMPANY_GOOGLE_PLUS_URL' | 'COMPANY_YOUTUBE_URL' | 'COMPANY_LOCATION' | 'COMPANY_LOCATION_CODE' | 'CONTACT_FIRST_NAME' | 'CONTACT_LAST_NAME' | 'CONTACT_EMAIL' | 'JOB_TITLE' | 'DIRECT_PHONE' | 'MOBILE_PHONE' | 'CONTACT_STREET' | 'CONTACT_CITY' | 'CONTACT_STATE' | 'CONTACT_COUNTRY' | 'CONTACT_ZIP_CODE' | 'ZOOMINFO_CONTACT_ID' | 'CONTACT_MIDDLE_NAME' | 'CONTACT_LINKEDIN_URL' | 'CONTACT_TWITTER_URL' | 'CONTACT_LINKEDIN_COMPANY_ID' | 'CONTACT_ZOOMINFO_COMPANY_ID' | 'CONTACT_PARENT_ID' | 'CONTACT_HASHED_EMAILS' | 'CONTACT_LINKEDIN_PRIVATE_IDS', required
    - `meta` ColumnMeta: Metadata for Column model.
      - `createdAt` string, date-time, required: The timestamp when the resource was created
      - `createdById` integer, required: Id of the user who created the resource
      - `createdByName` string, required: Name of the user who created the resource
      - `updatedAt` string, date-time, required: The timestamp when the resource was last updated
      - `updatedById` integer, required: Id of the user who last updated the resource
      - `updatedByName` string, required: Name of the user who last updated the resource

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `429`: Too Many Requests

---

[API](https://skmtc.dev/zoominfo/apis/gtm-studio-api-v1.md) - [All operations](https://skmtc.dev/zoominfo/apis/gtm-studio-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/zoominfo/apis/gtm-studio-api-v1/revisions/93a0bebaaac8?raw)
