diff --git a/frontend/src/metabase-lib/metadata/Field.ts b/frontend/src/metabase-lib/metadata/Field.ts
index df429c930041682ef2d88ac53024a6d62bde2a8a..6869d187688c9cef040ce5daff59ffa72fd5f73a 100644
--- a/frontend/src/metabase-lib/metadata/Field.ts
+++ b/frontend/src/metabase-lib/metadata/Field.ts
@@ -11,30 +11,30 @@ import type {
 } from "metabase-types/api";
 import type { Field as FieldRef } from "metabase-types/types/Query";
 import {
-  isDate,
-  isDateWithoutTime,
-  isTime,
-  isNumber,
-  isNumeric,
+  isAddress,
   isBoolean,
-  isString,
-  isSummable,
-  isScope,
   isCategory,
-  isAddress,
   isCity,
-  isState,
-  isZipCode,
-  isCountry,
+  isComment,
   isCoordinate,
-  isLocation,
+  isCountry,
+  isDate,
+  isDateWithoutTime,
   isDescription,
-  isComment,
   isDimension,
+  isEntityName,
+  isFK,
+  isLocation,
   isMetric,
+  isNumber,
+  isNumeric,
   isPK,
-  isFK,
-  isEntityName,
+  isScope,
+  isState,
+  isString,
+  isSummable,
+  isTime,
+  isZipCode,
 } from "metabase-lib/types/utils/isa";
 import { getFilterOperators } from "metabase-lib/operators/utils";
 import { getFieldValues } from "metabase-lib/queries/utils/field";
@@ -488,6 +488,10 @@ class FieldInner extends Base {
     return this.dimension().foreign(foreignField.dimension());
   }
 
+  isVirtual() {
+    return typeof this.id !== "number";
+  }
+
   /**
    * @private
    * @param {number} id
diff --git a/frontend/src/metabase-lib/metadata/utils/fields.ts b/frontend/src/metabase-lib/metadata/utils/fields.ts
index c9e1367893a8024e1cc96a54f072423aa6ed5849..545df4ffccf9f12234691ad9bc01a1f6783ce4fa 100644
--- a/frontend/src/metabase-lib/metadata/utils/fields.ts
+++ b/frontend/src/metabase-lib/metadata/utils/fields.ts
@@ -49,7 +49,3 @@ function getFieldIdentifier(field: Field): number | string {
 
   return id || name;
 }
-
-export function isVirtualFieldId(id: Field["id"]) {
-  return typeof id !== "number";
-}
diff --git a/frontend/src/metabase-lib/mocks.ts b/frontend/src/metabase-lib/mocks.ts
index b07fe64d73dd76fd4cb62c3f4d4257239730cff8..1915d7f5164b5d1d2a6513edacae8a0722d79ff7 100644
--- a/frontend/src/metabase-lib/mocks.ts
+++ b/frontend/src/metabase-lib/mocks.ts
@@ -16,7 +16,6 @@ import Question from "metabase-lib/Question";
 import NativeQuery from "metabase-lib/queries/NativeQuery";
 import StructuredQuery from "metabase-lib/queries/StructuredQuery";
 import Query from "metabase-lib/queries/Query";
-import { UiParameter } from "metabase-lib/parameters/types";
 
 export type NativeSavedCard = SavedCard<NativeDatasetQuery>;
 export type NativeUnsavedCard = UnsavedCard<NativeDatasetQuery>;
@@ -141,14 +140,3 @@ export function getComposedModel(
 
   return question;
 }
-
-export const createMockUiParameter = (
-  opts?: Partial<UiParameter>,
-): UiParameter => ({
-  id: "1",
-  name: "text",
-  type: "string/=",
-  slug: "text",
-  fields: [],
-  ...opts,
-});
diff --git a/frontend/src/metabase-lib/parameters/constants.ts b/frontend/src/metabase-lib/parameters/constants.ts
index 45475c9e223addb3bca266a6091e7c5a7dfe7cb3..d448c56810420c018b5b70af4526dc83040d5826 100644
--- a/frontend/src/metabase-lib/parameters/constants.ts
+++ b/frontend/src/metabase-lib/parameters/constants.ts
@@ -32,7 +32,7 @@ export const PARAMETER_OPERATOR_TYPES = {
     {
       type: "string/=",
       operator: "=",
-      name: t`Dropdown`,
+      name: t`Is`,
       description: t`Select one or more values from a list or search box.`,
     },
     {
diff --git a/frontend/src/metabase-lib/parameters/mock.ts b/frontend/src/metabase-lib/parameters/mock.ts
index e09816fbc63719f79b45c27f8bb51a20d708f523..68e6a3f163dfe84b90d5be32a802a53b71766edb 100644
--- a/frontend/src/metabase-lib/parameters/mock.ts
+++ b/frontend/src/metabase-lib/parameters/mock.ts
@@ -7,5 +7,8 @@ export const createMockUiParameter = (
   slug: "slug",
   name: "Name",
   type: "string/=",
+  values_query_type: "list",
+  values_source_type: null,
+  values_source_config: {},
   ...opts,
 });
diff --git a/frontend/src/metabase-lib/parameters/utils/parameter-fields.ts b/frontend/src/metabase-lib/parameters/utils/parameter-fields.ts
index 60238fffa54739dbb50e71fb2f1915e4a4c33b71..11eb28f375d2e3de9ddc9528e0a6b751a191d41f 100644
--- a/frontend/src/metabase-lib/parameters/utils/parameter-fields.ts
+++ b/frontend/src/metabase-lib/parameters/utils/parameter-fields.ts
@@ -1,4 +1,4 @@
-import { isVirtualFieldId } from "metabase-lib/metadata/utils/fields";
+import Field from "metabase-lib/metadata/Field";
 import {
   FieldFilterUiParameter,
   UiParameter,
@@ -10,7 +10,7 @@ export const hasFields = (
   return (parameter as FieldFilterUiParameter).fields != null;
 };
 
-export const getFields = (parameter: UiParameter) => {
+export const getFields = (parameter: UiParameter): Field[] => {
   if (hasFields(parameter)) {
     return parameter.fields;
   } else {
@@ -19,5 +19,5 @@ export const getFields = (parameter: UiParameter) => {
 };
 
 export const getNonVirtualFields = (parameter: UiParameter) => {
-  return getFields(parameter).filter(field => !isVirtualFieldId(field.id));
+  return getFields(parameter).filter(field => !field.isVirtual());
 };
diff --git a/frontend/src/metabase-lib/parameters/utils/parameter-source.ts b/frontend/src/metabase-lib/parameters/utils/parameter-source.ts
index 3d04f6c013f34696a14d711add8676908dba8e7e..5f2663948de44dd987b7bcd00f17e7f379a571bd 100644
--- a/frontend/src/metabase-lib/parameters/utils/parameter-source.ts
+++ b/frontend/src/metabase-lib/parameters/utils/parameter-source.ts
@@ -17,7 +17,7 @@ export const isValidSourceConfig = (
 export const getDefaultSourceConfig = (
   sourceType: ValuesSourceType,
   sourceValues?: string[],
-) => {
+): ValuesSourceConfig => {
   switch (sourceType) {
     case "static-list":
       return { values: sourceValues };
diff --git a/frontend/src/metabase-lib/parameters/utils/template-tags.ts b/frontend/src/metabase-lib/parameters/utils/template-tags.ts
index 60a687e3dd8d7c243b2d7cc182161e298264c18c..9cab3d669649f745b9271defe1e979e4b351a728 100644
--- a/frontend/src/metabase-lib/parameters/utils/template-tags.ts
+++ b/frontend/src/metabase-lib/parameters/utils/template-tags.ts
@@ -38,6 +38,9 @@ export function getTemplateTagParameter(tag: TemplateTag): ParameterWithTarget {
     name: tag["display-name"],
     slug: tag.name,
     default: tag.default,
+    values_query_type: "list",
+    values_source_type: null,
+    values_source_config: {},
   };
 }
 
diff --git a/frontend/src/metabase-lib/parameters/utils/template-tags.unit.spec.js b/frontend/src/metabase-lib/parameters/utils/template-tags.unit.spec.js
index 9c91b3c79e641e1086018de0c72ab43d64975b21..f0c798ae6b48440c17e515b447e9c9b4f19b035a 100644
--- a/frontend/src/metabase-lib/parameters/utils/template-tags.unit.spec.js
+++ b/frontend/src/metabase-lib/parameters/utils/template-tags.unit.spec.js
@@ -122,6 +122,9 @@ describe("parameters/utils/cards", () => {
           slug: "a",
           target: ["variable", ["template-tag", "a"]],
           type: "foo",
+          values_query_type: "list",
+          values_source_type: null,
+          values_source_config: {},
         },
         {
           default: undefined,
@@ -130,6 +133,9 @@ describe("parameters/utils/cards", () => {
           slug: "b",
           target: ["variable", ["template-tag", "b"]],
           type: "string/=",
+          values_query_type: "list",
+          values_source_type: null,
+          values_source_config: {},
         },
         {
           default: undefined,
@@ -138,6 +144,9 @@ describe("parameters/utils/cards", () => {
           slug: "c",
           target: ["variable", ["template-tag", "c"]],
           type: "number/=",
+          values_query_type: "list",
+          values_source_type: null,
+          values_source_config: {},
         },
         {
           default: undefined,
@@ -146,6 +155,9 @@ describe("parameters/utils/cards", () => {
           slug: "d",
           target: ["variable", ["template-tag", "d"]],
           type: "date/single",
+          values_query_type: "list",
+          values_source_type: null,
+          values_source_config: {},
         },
         {
           default: undefined,
@@ -154,6 +166,9 @@ describe("parameters/utils/cards", () => {
           slug: "e",
           target: ["dimension", ["template-tag", "e"]],
           type: "foo",
+          values_query_type: "list",
+          values_source_type: null,
+          values_source_config: {},
         },
       ];
 
diff --git a/frontend/src/metabase-types/api/mocks/parameters.ts b/frontend/src/metabase-types/api/mocks/parameters.ts
index ce15e59058072abcfbf72d80d0a5bd8eda7b2801..ec11c75415ea5e8d39d8a647565e4aef7e4ec027 100644
--- a/frontend/src/metabase-types/api/mocks/parameters.ts
+++ b/frontend/src/metabase-types/api/mocks/parameters.ts
@@ -5,5 +5,8 @@ export const createMockParameter = (opts?: Partial<Parameter>): Parameter => ({
   name: "text",
   type: "string/=",
   slug: "text",
+  values_query_type: "none",
+  values_source_type: null,
+  values_source_config: {},
   ...opts,
 });
diff --git a/frontend/src/metabase-types/api/parameters.ts b/frontend/src/metabase-types/api/parameters.ts
index ff3330c1b06953624a17a5143e8c86c783109a3c..618b9e4783474efa0f249b62c23c0fc72726e757 100644
--- a/frontend/src/metabase-types/api/parameters.ts
+++ b/frontend/src/metabase-types/api/parameters.ts
@@ -42,10 +42,13 @@ export interface Parameter {
   filteringParameters?: ParameterId[];
   isMultiSelect?: boolean;
   value?: any;
-  values_source_type?: ValuesSourceType;
-  values_source_config?: ValuesSourceConfig;
+  values_query_type: ValuesQueryType;
+  values_source_type: ValuesSourceType;
+  values_source_config: ValuesSourceConfig;
 }
 
+export type ValuesQueryType = "list" | "search" | "none";
+
 export type ValuesSourceType = null | "card" | "static-list";
 
 export interface ValuesSourceConfig {
diff --git a/frontend/src/metabase/dashboard/actions/parameters.js b/frontend/src/metabase/dashboard/actions/parameters.js
index 003e8cdbc3c925f081fd40025f5573836f524c4a..a495e45c4e631164200bb6c51e9b7daf29de1bc4 100644
--- a/frontend/src/metabase/dashboard/actions/parameters.js
+++ b/frontend/src/metabase/dashboard/actions/parameters.js
@@ -194,6 +194,19 @@ export const setParameterIsMultiSelect = createThunkAction(
   },
 );
 
+export const SET_PARAMETER_QUERY_TYPE =
+  "metabase/dashboard/SET_PARAMETER_QUERY_TYPE";
+export const setParameterQueryType = createThunkAction(
+  SET_PARAMETER_QUERY_TYPE,
+  (parameterId, queryType) => (dispatch, getState) => {
+    updateParameter(dispatch, getState, parameterId, parameter => ({
+      ...parameter,
+      values_query_type: queryType,
+    }));
+    return { id: parameterId, queryType };
+  },
+);
+
 export const SET_PARAMETER_SOURCE_TYPE =
   "metabase/dashboard/SET_PARAMETER_SOURCE_TYPE";
 export const setParameterSourceType = createThunkAction(
diff --git a/frontend/src/metabase/dashboard/components/DashboardSidebars.jsx b/frontend/src/metabase/dashboard/components/DashboardSidebars.jsx
index b757a135d172d5d4e70f49f667b8a826bb02de2a..b38f8796cb40750bbf5bef5d2c3d0a00cc307bc8 100644
--- a/frontend/src/metabase/dashboard/components/DashboardSidebars.jsx
+++ b/frontend/src/metabase/dashboard/components/DashboardSidebars.jsx
@@ -27,6 +27,7 @@ DashboardSidebars.propTypes = {
   setParameterName: PropTypes.func.isRequired,
   setParameterDefaultValue: PropTypes.func.isRequired,
   setParameterIsMultiSelect: PropTypes.func.isRequired,
+  setParameterQueryType: PropTypes.func.isRequired,
   setParameterSourceType: PropTypes.func.isRequired,
   setParameterSourceConfig: PropTypes.func.isRequired,
   setParameterFilteringParameters: PropTypes.func.isRequired,
@@ -59,6 +60,7 @@ export function DashboardSidebars({
   setParameterName,
   setParameterDefaultValue,
   setParameterIsMultiSelect,
+  setParameterQueryType,
   setParameterSourceType,
   setParameterSourceConfig,
   setParameterFilteringParameters,
@@ -124,6 +126,7 @@ export function DashboardSidebars({
           onChangeName={setParameterName}
           onChangeDefaultValue={setParameterDefaultValue}
           onChangeIsMultiSelect={setParameterIsMultiSelect}
+          onChangeQueryType={setParameterQueryType}
           onChangeSourceType={setParameterSourceType}
           onChangeSourceConfig={setParameterSourceConfig}
           onChangeFilteringParameters={setParameterFilteringParameters}
diff --git a/frontend/src/metabase/parameters/components/ParameterSettings/ParameterSettings.tsx b/frontend/src/metabase/parameters/components/ParameterSettings/ParameterSettings.tsx
index 1e0dd14780a8c6d7c6ecdc2a743a9f372c4c74da..e89a395635e1d404fffae9628569a6d38449494a 100644
--- a/frontend/src/metabase/parameters/components/ParameterSettings/ParameterSettings.tsx
+++ b/frontend/src/metabase/parameters/components/ParameterSettings/ParameterSettings.tsx
@@ -2,14 +2,18 @@ import React, { ChangeEvent, useCallback } from "react";
 import { t } from "ttag";
 import InputBlurChange from "metabase/components/InputBlurChange";
 import Radio from "metabase/core/components/Radio";
-import { ValuesSourceConfig, ValuesSourceType } from "metabase-types/api";
+import {
+  ValuesQueryType,
+  ValuesSourceConfig,
+  ValuesSourceType,
+} from "metabase-types/api";
 import { UiParameter } from "metabase-lib/parameters/types";
 import { getIsMultiSelect } from "../../utils/dashboards";
 import {
   canUseCustomSource,
   isSingleOrMultiSelectable,
 } from "../../utils/parameter-type";
-import ParameterSourceSettings from "../ParameterSourceSettings";
+import ValuesSourceSettings from "../ValuesSourceSettings";
 import {
   SettingLabel,
   SettingRemoveButton,
@@ -28,6 +32,7 @@ export interface ParameterSettingsProps {
   onChangeName: (name: string) => void;
   onChangeDefaultValue: (value: unknown) => void;
   onChangeIsMultiSelect: (isMultiSelect: boolean) => void;
+  onChangeQueryType: (queryType: ValuesQueryType) => void;
   onChangeSourceType: (sourceType: ValuesSourceType) => void;
   onChangeSourceConfig: (sourceOptions: ValuesSourceConfig) => void;
   onRemoveParameter: () => void;
@@ -38,6 +43,7 @@ const ParameterSettings = ({
   onChangeName,
   onChangeDefaultValue,
   onChangeIsMultiSelect,
+  onChangeQueryType,
   onChangeSourceType,
   onChangeSourceConfig,
   onRemoveParameter,
@@ -61,8 +67,9 @@ const ParameterSettings = ({
       {canUseCustomSource(parameter) && (
         <SettingSection>
           <SettingLabel>{t`How should users filter on this column?`}</SettingLabel>
-          <ParameterSourceSettings
+          <ValuesSourceSettings
             parameter={parameter}
+            onChangeQueryType={onChangeQueryType}
             onChangeSourceType={onChangeSourceType}
             onChangeSourceConfig={onChangeSourceConfig}
           />
diff --git a/frontend/src/metabase/parameters/components/ParameterSidebar/ParameterSidebar.tsx b/frontend/src/metabase/parameters/components/ParameterSidebar/ParameterSidebar.tsx
index 60d9cea10ab5004e56c23be8116f639871fc2750..fee77458a80ed200a53aeb3f19474be1af9f40fa 100644
--- a/frontend/src/metabase/parameters/components/ParameterSidebar/ParameterSidebar.tsx
+++ b/frontend/src/metabase/parameters/components/ParameterSidebar/ParameterSidebar.tsx
@@ -4,6 +4,7 @@ import Radio from "metabase/core/components/Radio";
 import Sidebar from "metabase/dashboard/components/Sidebar";
 import {
   ParameterId,
+  ValuesQueryType,
   ValuesSourceConfig,
   ValuesSourceType,
 } from "metabase-types/api";
@@ -22,6 +23,10 @@ export interface ParameterSidebarProps {
     parameterId: ParameterId,
     isMultiSelect: boolean,
   ) => void;
+  onChangeQueryType: (
+    parameterId: ParameterId,
+    sourceType: ValuesQueryType,
+  ) => void;
   onChangeSourceType: (
     parameterId: ParameterId,
     sourceType: ValuesSourceType,
@@ -45,6 +50,7 @@ const ParameterSidebar = ({
   onChangeName,
   onChangeDefaultValue,
   onChangeIsMultiSelect,
+  onChangeQueryType,
   onChangeSourceType,
   onChangeSourceConfig,
   onChangeFilteringParameters,
@@ -77,6 +83,13 @@ const ParameterSidebar = ({
     [parameterId, onChangeIsMultiSelect],
   );
 
+  const handleQueryTypeChange = useCallback(
+    (queryType: ValuesQueryType) => {
+      onChangeQueryType(parameterId, queryType);
+    },
+    [parameterId, onChangeQueryType],
+  );
+
   const handleSourceTypeChange = useCallback(
     (sourceType: ValuesSourceType) => {
       onChangeSourceType(parameterId, sourceType);
@@ -120,6 +133,7 @@ const ParameterSidebar = ({
             onChangeName={handleNameChange}
             onChangeDefaultValue={handleDefaultValueChange}
             onChangeIsMultiSelect={handleIsMultiSelectChange}
+            onChangeQueryType={handleQueryTypeChange}
             onChangeSourceType={handleSourceTypeChange}
             onChangeSourceConfig={handleSourceConfigChange}
             onRemoveParameter={handleRemove}
diff --git a/frontend/src/metabase/parameters/components/ParameterSourceSettings/index.ts b/frontend/src/metabase/parameters/components/ParameterSourceSettings/index.ts
deleted file mode 100644
index cad1d725724cf9c88fbaf58679cc7801937b4a0e..0000000000000000000000000000000000000000
--- a/frontend/src/metabase/parameters/components/ParameterSourceSettings/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from "./ParameterSourceSettings";
diff --git a/frontend/src/metabase/parameters/components/ValuesSourceModal/ValuesSourceModal.tsx b/frontend/src/metabase/parameters/components/ValuesSourceModal/ValuesSourceModal.tsx
index 7c8a8c69ff5fd33ebb404a36a56028df8cbca245..db95cb5c247559279b24bc3abc11daae9c9434f2 100644
--- a/frontend/src/metabase/parameters/components/ValuesSourceModal/ValuesSourceModal.tsx
+++ b/frontend/src/metabase/parameters/components/ValuesSourceModal/ValuesSourceModal.tsx
@@ -2,7 +2,6 @@ import React, { useCallback, useMemo, useState } from "react";
 import { ValuesSourceConfig, ValuesSourceType } from "metabase-types/api";
 import { getNonVirtualFields } from "metabase-lib/parameters/utils/parameter-fields";
 import { UiParameter } from "metabase-lib/parameters/types";
-import { getSourceConfig, getSourceType } from "../../utils/dashboards";
 import ValuesSourceTypeModal from "./ValuesSourceTypeModal";
 import ValuesSourceCardModal from "./ValuesSourceCardModal";
 
@@ -23,8 +22,10 @@ const ValuesSourceModal = ({
   onClose,
 }: ModalProps): JSX.Element => {
   const [step, setStep] = useState<ModalStep>("main");
-  const [sourceType, setSourceType] = useState(getSourceType(parameter));
-  const [sourceConfig, setSourceConfig] = useState(getSourceConfig(parameter));
+  const [sourceType, setSourceType] = useState(parameter.values_source_type);
+  const [sourceConfig, setSourceConfig] = useState(
+    parameter.values_source_config,
+  );
 
   const fields = useMemo(() => {
     return getNonVirtualFields(parameter);
diff --git a/frontend/src/metabase/parameters/components/ParameterSourceSettings/ParameterSourceSettings.styled.tsx b/frontend/src/metabase/parameters/components/ValuesSourceSettings/ValuesSourceSettings.styled.tsx
similarity index 100%
rename from frontend/src/metabase/parameters/components/ParameterSourceSettings/ParameterSourceSettings.styled.tsx
rename to frontend/src/metabase/parameters/components/ValuesSourceSettings/ValuesSourceSettings.styled.tsx
diff --git a/frontend/src/metabase/parameters/components/ParameterSourceSettings/ParameterSourceSettings.tsx b/frontend/src/metabase/parameters/components/ValuesSourceSettings/ValuesSourceSettings.tsx
similarity index 53%
rename from frontend/src/metabase/parameters/components/ParameterSourceSettings/ParameterSourceSettings.tsx
rename to frontend/src/metabase/parameters/components/ValuesSourceSettings/ValuesSourceSettings.tsx
index cdc5e3f6a51ad37ac5568ced65a267522ed22918..22b1a8d8afe309a6490ec8e775eb56e5564db176 100644
--- a/frontend/src/metabase/parameters/components/ParameterSourceSettings/ParameterSourceSettings.tsx
+++ b/frontend/src/metabase/parameters/components/ValuesSourceSettings/ValuesSourceSettings.tsx
@@ -2,31 +2,38 @@ import React, { useCallback, useMemo, useState } from "react";
 import { t } from "ttag";
 import Radio from "metabase/core/components/Radio/Radio";
 import Modal from "metabase/components/Modal";
-import { ValuesSourceConfig, ValuesSourceType } from "metabase-types/api";
+import {
+  ValuesQueryType,
+  ValuesSourceConfig,
+  ValuesSourceType,
+} from "metabase-types/api";
 import { UiParameter } from "metabase-lib/parameters/types";
 import ValuesSourceModal from "../ValuesSourceModal";
 import {
   RadioLabelButton,
   RadioLabelRoot,
   RadioLabelTitle,
-} from "./ParameterSourceSettings.styled";
+} from "./ValuesSourceSettings.styled";
 
-export interface ParameterSourceSettingsProps {
+export interface ValuesSourceSettingsProps {
   parameter: UiParameter;
+  onChangeQueryType: (queryType: ValuesQueryType) => void;
   onChangeSourceType: (sourceType: ValuesSourceType) => void;
   onChangeSourceConfig: (sourceConfig: ValuesSourceConfig) => void;
 }
 
-const ParameterSourceSettings = ({
+const ValuesSourceSettings = ({
   parameter,
+  onChangeQueryType,
   onChangeSourceType,
   onChangeSourceConfig,
-}: ParameterSourceSettingsProps): JSX.Element => {
+}: ValuesSourceSettingsProps): JSX.Element => {
+  const queryType = parameter.values_query_type;
   const [isModalOpened, setIsModalOpened] = useState(false);
 
   const radioOptions = useMemo(() => {
-    return getRadioOptions(() => setIsModalOpened(true));
-  }, []);
+    return getRadioOptions(queryType, () => setIsModalOpened(true));
+  }, [queryType]);
 
   const handleSubmit = useCallback(
     (sourceType: ValuesSourceType, sourceConfig: ValuesSourceConfig) => {
@@ -42,7 +49,12 @@ const ParameterSourceSettings = ({
 
   return (
     <>
-      <Radio value="list" options={radioOptions} vertical />
+      <Radio
+        value={queryType}
+        options={radioOptions}
+        vertical
+        onChange={onChangeQueryType}
+      />
       {isModalOpened && (
         <Modal medium onClose={handleModalClose}>
           <ValuesSourceModal
@@ -58,25 +70,49 @@ const ParameterSourceSettings = ({
 
 interface RadioLabelProps {
   title: string;
-  onEditClick: () => void;
+  isSelected?: boolean;
+  onEditClick?: () => void;
 }
 
-const RadioLabel = ({ title, onEditClick }: RadioLabelProps): JSX.Element => {
+const RadioLabel = ({
+  title,
+  isSelected,
+  onEditClick,
+}: RadioLabelProps): JSX.Element => {
   return (
     <RadioLabelRoot>
       <RadioLabelTitle>{title}</RadioLabelTitle>
-      <RadioLabelButton onClick={onEditClick}>{t`Edit`}</RadioLabelButton>
+      {isSelected && (
+        <RadioLabelButton onClick={onEditClick}>{t`Edit`}</RadioLabelButton>
+      )}
     </RadioLabelRoot>
   );
 };
 
-const getRadioOptions = (onEditClick: () => void) => {
+const getRadioOptions = (
+  queryType: ValuesQueryType,
+  onEditClick: () => void,
+) => {
   return [
     {
-      name: <RadioLabel title={t`Dropdown list`} onEditClick={onEditClick} />,
+      name: (
+        <RadioLabel
+          title={t`Dropdown list`}
+          isSelected={queryType === "list"}
+          onEditClick={onEditClick}
+        />
+      ),
       value: "list",
     },
+    {
+      name: <RadioLabel title={t`Search box`} />,
+      value: "search",
+    },
+    {
+      name: <RadioLabel title={t`Input box`} />,
+      value: "none",
+    },
   ];
 };
 
-export default ParameterSourceSettings;
+export default ValuesSourceSettings;
diff --git a/frontend/src/metabase/parameters/components/ValuesSourceSettings/index.ts b/frontend/src/metabase/parameters/components/ValuesSourceSettings/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8d5586d92285d9e695587b489dbbabfcb4a75732
--- /dev/null
+++ b/frontend/src/metabase/parameters/components/ValuesSourceSettings/index.ts
@@ -0,0 +1 @@
+export { default } from "./ValuesSourceSettings";
diff --git a/frontend/src/metabase/parameters/utils/dashboards.ts b/frontend/src/metabase/parameters/utils/dashboards.ts
index 8e6e5040d28c884c59652c886b8148330c4b8e36..3f798412186870a17f5ac6912cc1b3fd75c582aa 100644
--- a/frontend/src/metabase/parameters/utils/dashboards.ts
+++ b/frontend/src/metabase/parameters/utils/dashboards.ts
@@ -8,8 +8,6 @@ import type {
   Dashboard,
   DashboardParameterMapping,
   DashboardOrderedCard,
-  ValuesSourceType,
-  ValuesSourceConfig,
   Parameter,
 } from "metabase-types/api";
 import { isFieldFilterParameter } from "metabase-lib/parameters/utils/parameter-type";
@@ -41,13 +39,17 @@ export function createParameter(
     name = (option.combinedName || option.name) + " " + ++nameIndex;
   }
 
-  const parameter = {
+  const parameter: Parameter = {
     name: "",
     slug: "",
     id: generateParameterId(),
     type: option.type,
     sectionId: option.sectionId,
+    values_query_type: "list",
+    values_source_type: null,
+    values_source_config: {},
   };
+
   return setParameterName(parameter, name);
 }
 
@@ -66,14 +68,6 @@ export function setParameterName(
   };
 }
 
-export function getSourceType(parameter: Parameter): ValuesSourceType {
-  return parameter.values_source_type ?? null;
-}
-
-export function getSourceConfig(parameter: Parameter): ValuesSourceConfig {
-  return parameter.values_source_config ?? {};
-}
-
 export function getIsMultiSelect(parameter: Parameter): boolean {
   return parameter.isMultiSelect == null ? true : parameter.isMultiSelect;
 }
diff --git a/frontend/src/metabase/parameters/utils/dashboards.unit.spec.js b/frontend/src/metabase/parameters/utils/dashboards.unit.spec.js
index 4728c636bc48c3e493a921e4fcb8a42b0e247ce9..93fc4360249b6c102c89789f50e03a74cd119089 100644
--- a/frontend/src/metabase/parameters/utils/dashboards.unit.spec.js
+++ b/frontend/src/metabase/parameters/utils/dashboards.unit.spec.js
@@ -30,6 +30,9 @@ describe("metabase/parameters/utils/dashboards", () => {
         sectionId: "abc",
         slug: "foo_bar",
         type: "category",
+        values_query_type: "list",
+        values_source_type: null,
+        values_source_config: {},
       });
     });
 
@@ -50,6 +53,9 @@ describe("metabase/parameters/utils/dashboards", () => {
         sectionId: "abc",
         slug: "foo_bar_baz",
         type: "category",
+        values_query_type: "list",
+        values_source_type: null,
+        values_source_config: {},
       });
     });
 
@@ -78,6 +84,9 @@ describe("metabase/parameters/utils/dashboards", () => {
         sectionId: "abc",
         slug: "foo_bar_1",
         type: "category",
+        values_query_type: "list",
+        values_source_type: null,
+        values_source_config: {},
       });
     });
   });
diff --git a/frontend/src/metabase/parameters/utils/parameter-type.unit.spec.ts b/frontend/src/metabase/parameters/utils/parameter-type.unit.spec.ts
index b45f56c2ede54c506952a155da9b2ed0d27577b7..04a902108784a2593f2fc9dbd14fd9feca7ea0a5 100644
--- a/frontend/src/metabase/parameters/utils/parameter-type.unit.spec.ts
+++ b/frontend/src/metabase/parameters/utils/parameter-type.unit.spec.ts
@@ -1,37 +1,27 @@
+import { createMockParameter } from "metabase-types/api/mocks";
 import { isSingleOrMultiSelectable } from "./parameter-type";
 
-const requiredParameterAttributes = {
-  id: "1",
-  name: "Name",
-  slug: "slug",
-  type: "a type",
-};
-
 describe("isSingleOrMultiSelectable", () => {
   it("is false for parameters with types not included", () => {
-    const parameter = {
-      ...requiredParameterAttributes,
+    const parameter = createMockParameter({
       sectionId: "number",
-      subType: "!=",
-    };
+    });
     expect(isSingleOrMultiSelectable(parameter)).toBe(false);
   });
 
   it("is false for parameters with acceptable types and rejected subTypes", () => {
-    const parameter = {
-      ...requiredParameterAttributes,
+    const parameter = createMockParameter({
+      type: "a type",
       sectionId: "string",
-      subType: "ends-with",
-    };
+    });
     expect(isSingleOrMultiSelectable(parameter)).toBe(false);
   });
 
   it("is true for parameters with acceptable types and corresponding subTypes", () => {
-    const parameter = {
-      ...requiredParameterAttributes,
-      sectionId: "location",
+    const parameter = createMockParameter({
       type: "string/=",
-    };
+      sectionId: "location",
+    });
     expect(isSingleOrMultiSelectable(parameter)).toBe(true);
   });
 });
diff --git a/frontend/test/metabase-lib/lib/Question.unit.spec.js b/frontend/test/metabase-lib/lib/Question.unit.spec.js
index 6aad50d7e4aecd0783d0d0319c437d25b3b6f2fe..8d94fbc54ade207766841e09b7ab5b8d457f1c2c 100644
--- a/frontend/test/metabase-lib/lib/Question.unit.spec.js
+++ b/frontend/test/metabase-lib/lib/Question.unit.spec.js
@@ -1130,6 +1130,9 @@ describe("Question", () => {
           slug: "foo",
           target: ["dimension", ["template-tag", "foo"]],
           type: "category",
+          values_query_type: "list",
+          values_source_type: null,
+          values_source_config: {},
         },
         {
           default: undefined,
@@ -1139,6 +1142,9 @@ describe("Question", () => {
           slug: "bar",
           target: ["variable", ["template-tag", "bar"]],
           type: "category",
+          values_query_type: "list",
+          values_source_type: null,
+          values_source_config: {},
         },
       ]);
     });
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.cy.spec.js
index 6b0ccaa78c1bd181da009f0b6f06f0027c031476..a9946ea4dfef4a4c73f9a3574f7f9e7d8451c133 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.cy.spec.js
@@ -47,7 +47,7 @@ describe("scenarios > dashboard > filters > location", () => {
   });
 
   it(`should work when set as the default filter`, () => {
-    setFilter("Location", "Dropdown");
+    setFilter("Location", "Is");
     cy.findByText("Select…").click();
     popover().contains("City").click();
 
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.js
index 6eab1fc6d87953aee21d135bf0d7cdc3e7a1fe7a..d6bc2a17c9176ae9f5a7f2e023ad49ad9cb16a60 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-location.js
@@ -1,5 +1,5 @@
 export const DASHBOARD_LOCATION_FILTERS = {
-  Dropdown: {
+  Is: {
     value: "Abbeville",
     representativeResult: "1510",
   },
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-source.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-source.cy.spec.js
index 16549cbd362d1954c22336b11a6076dee7b6b727..ed5c51229a5a6789d89e9ac972cf7b5929f34264 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-source.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-source.cy.spec.js
@@ -55,7 +55,7 @@ describe("scenarios > dashboard > filters", () => {
     });
 
     editDashboard();
-    setFilter("Text or Category", "Dropdown");
+    setFilter("Text or Category", "Is");
     mapFilterToQuestion();
     editDropdown();
     setupStructuredQuestionSource();
@@ -72,7 +72,7 @@ describe("scenarios > dashboard > filters", () => {
     });
 
     editDashboard();
-    setFilter("Text or Category", "Dropdown");
+    setFilter("Text or Category", "Is");
     mapFilterToQuestion();
     editDropdown();
     setupNativeQuestionSource();
@@ -88,7 +88,7 @@ describe("scenarios > dashboard > filters", () => {
     });
 
     editDashboard();
-    setFilter("Text or Category", "Dropdown");
+    setFilter("Text or Category", "Is");
     mapFilterToQuestion();
     editDropdown();
     setupCustomList();
@@ -110,7 +110,7 @@ describe("scenarios > dashboard > filters", () => {
     });
 
     editDashboard();
-    setFilter("Text or Category", "Dropdown");
+    setFilter("Text or Category", "Is");
     mapFilterToQuestion();
     editDropdown();
     setupStructuredQuestionSource();
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.cy.spec.js
index 36c06d479488e0630ad2db926b8f8caaecbb1340..2777dd6f8ca43058a491967656e7fea2ddd1d474 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.cy.spec.js
@@ -56,10 +56,10 @@ describe("scenarios > dashboard > filters > location", () => {
   });
 
   it(`should work when set as the default filter`, () => {
-    setFilter("Location", "Dropdown");
+    setFilter("Location", "Is");
 
     cy.findByText("Select…").click();
-    popover().contains("Dropdown").click();
+    popover().contains("Is").click();
 
     cy.findByText("Default value").next().click();
 
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.js
index 3fc700b5be82884d8ce83b962c74c4ce8207174f..c26af717ce2be709ac8ea3e35c6b0b318905d1e4 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-location.js
@@ -6,12 +6,12 @@ export const questionDetails = {
   name: "SQL with Field Filter",
   native: {
     query:
-      "select PEOPLE.NAME, PEOPLE.CITY from PEOPLE where true \n[[AND {{dropdown}}]] \n[[AND {{not}}]] \n[[AND {{contains}}]] \n[[AND {{doesntcontain}}]] \n[[AND {{startswith}}]] \n[[AND {{endswith}}]] limit 10",
+      "select PEOPLE.NAME, PEOPLE.CITY from PEOPLE where true \n[[AND {{is}}]] \n[[AND {{not}}]] \n[[AND {{contains}}]] \n[[AND {{doesntcontain}}]] \n[[AND {{startswith}}]] \n[[AND {{endswith}}]] limit 10",
     "template-tags": {
-      dropdown: {
+      is: {
         id: "bcd8b984-2e16-ffa4-82fc-2895ac8570f9",
-        name: "dropdown",
-        "display-name": "Dropdown",
+        name: "is",
+        "display-name": "Is",
         type: "dimension",
         dimension: ["field", PEOPLE.CITY, null],
         "widget-type": "string/=",
@@ -67,7 +67,7 @@ export const questionDetails = {
 };
 
 export const DASHBOARD_SQL_LOCATION_FILTERS = {
-  Dropdown: {
+  Is: {
     sqlFilter: "string/=",
     value: "Rye",
     representativeResult: "Arnold Adams",
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.cy.spec.js
index 315e1a5dc292549754f86b507b5e3acb143cf201..23bd1d752c358355408f007bbbd17ea3ecc8ef41 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.cy.spec.js
@@ -58,14 +58,14 @@ describe("scenarios > dashboard > filters > SQL > text/category", () => {
   });
 
   it(`should work when set as the default filter and when that filter is removed (metabase#20493)`, () => {
-    setFilter("Text or Category", "Dropdown");
+    setFilter("Text or Category", "Is");
 
     cy.findByText("Select…").click();
-    popover().contains("Dropdown").click();
+    popover().contains("Is").click();
 
     cy.findByText("Default value").next().click();
 
-    applyFilterByType("Dropdown", "Gizmo");
+    applyFilterByType("Is", "Gizmo");
 
     saveDashboard();
 
@@ -79,7 +79,7 @@ describe("scenarios > dashboard > filters > SQL > text/category", () => {
 
     filterWidget().click();
 
-    applyFilterByType("Dropdown", "Doohickey");
+    applyFilterByType("Is", "Doohickey");
 
     cy.findByText("Rustic Paper Wallet").should("not.exist");
   });
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.js
index 233037a276ec614128fa07761c81b445b90c593f..12db381c7a7c82624cda4d903afdad43bd2c03ce 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-sql-text-category.js
@@ -3,7 +3,7 @@ import { SAMPLE_DATABASE } from "__support__/e2e/cypress_sample_database";
 const { PRODUCTS } = SAMPLE_DATABASE;
 
 export const DASHBOARD_SQL_TEXT_FILTERS = {
-  Dropdown: {
+  Is: {
     sqlFilter: "string/=",
     value: "Gizmo",
     representativeResult: "Rustic Paper Wallet",
@@ -39,12 +39,12 @@ export const questionDetails = {
   name: "SQL with Field Filter",
   native: {
     query:
-      "select * from PRODUCTS where true \n[[AND {{dropdown}}]] \n[[AND {{not}}]] \n[[AND {{contains}}]] \n[[AND {{doesntcontain}}]] \n[[AND {{startswith}}]] \n[[AND {{endswith}}]]",
+      "select * from PRODUCTS where true \n[[AND {{is}}]] \n[[AND {{not}}]] \n[[AND {{contains}}]] \n[[AND {{doesntcontain}}]] \n[[AND {{startswith}}]] \n[[AND {{endswith}}]]",
     "template-tags": {
-      dropdown: {
+      is: {
         id: "bcd8b984-2e16-ffa4-82fc-2895ac8570f9",
-        name: "dropdown",
-        "display-name": "Dropdown",
+        name: "is",
+        "display-name": "Is",
         type: "dimension",
         dimension: ["field", PRODUCTS.CATEGORY, null],
         "widget-type": "string/=",
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.cy.spec.js
index 66341843200f2205f4517fde53313a2033346959..2cab532361e3bb941a4a8e7440b499fc0b9f53c2 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.cy.spec.js
@@ -48,14 +48,14 @@ describe("scenarios > dashboard > filters > text/category", () => {
   });
 
   it(`should work when set as the default filter which (if cleared) should not be preserved on reload (metabase#13960)`, () => {
-    setFilter("Text or Category", "Dropdown");
+    setFilter("Text or Category", "Is");
 
     cy.findByText("Select…").click();
     popover().contains("Source").click();
 
     cy.findByText("Default value").next().click();
 
-    applyFilterByType("Dropdown", "Organic");
+    applyFilterByType("Is", "Organic");
 
     // We need to add another filter only to reproduce metabase#13960
     setFilter("ID");
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.js b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.js
index c5528cf8d8237d5791f7f80ff8d7123bda50e81e..88336ad7d13b95be6ecae06bed3ab6dc6d19ca4d 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/dashboard-filters-text-category.js
@@ -1,5 +1,5 @@
 export const DASHBOARD_TEXT_FILTERS = {
-  Dropdown: {
+  Is: {
     value: "Organic",
     representativeResult: "39.58",
   },
diff --git a/frontend/test/metabase/scenarios/dashboard-filters/parameters.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/parameters.cy.spec.js
index a72e43bae1298ce3a534d148c6d75d676d47aa49..42b4f946c1fab9d87c78613f46646e2f699ac5c3 100644
--- a/frontend/test/metabase/scenarios/dashboard-filters/parameters.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard-filters/parameters.cy.spec.js
@@ -37,7 +37,7 @@ describe("scenarios > dashboard > parameters", () => {
     // add a category filter
     cy.icon("filter").click();
     cy.contains("Text or Category").click();
-    cy.findByText("Dropdown").click();
+    cy.findByText("Is").click();
     cy.findByText("A single value").click();
 
     // connect it to people.name and product.category
diff --git a/frontend/test/metabase/scenarios/dashboard/chained-filters.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/chained-filters.cy.spec.js
index 4fcda2dc0db20639f830d9c80510554e6d225b3c..d2fe17b0bc226ba904cff443c3bcd82b1f76fd61 100644
--- a/frontend/test/metabase/scenarios/dashboard/chained-filters.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/chained-filters.cy.spec.js
@@ -25,7 +25,7 @@ describe("scenarios > dashboard > chained filter", () => {
       cy.icon("filter").click();
       popover().within(() => {
         cy.findByText("Location").click();
-        cy.findByText("Dropdown").click();
+        cy.findByText("Is").click();
       });
 
       // connect that to people.state
@@ -43,7 +43,7 @@ describe("scenarios > dashboard > chained filter", () => {
       cy.findByText("add another dashboard filter").click();
       popover().within(() => {
         cy.findByText("Location").click();
-        cy.findByText("Dropdown").click();
+        cy.findByText("Is").click();
       });
 
       // connect that to person.city
diff --git a/frontend/test/metabase/scenarios/dashboard/dashboard.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/dashboard.cy.spec.js
index ef07f6b2e1221751fe7562927896ff26123aa38d..1ff6ff8a190cb21ec39d146a3ec2a8f4b29444c9 100644
--- a/frontend/test/metabase/scenarios/dashboard/dashboard.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/dashboard.cy.spec.js
@@ -145,7 +145,7 @@ describe("scenarios > dashboard", () => {
     // Adding location/state doesn't make much sense for this case,
     // but we're testing just that the filter is added to the dashboard
     cy.findByText("Location").click();
-    cy.findByText("Dropdown").click();
+    cy.findByText("Is").click();
     cy.findByText("Select…").click();
 
     popover().within(() => {
diff --git a/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js
index d29814adf89fcf41f62d78359d2ee87875080620..11b9e4c2db292a326a773522fae73a82f2afc941 100644
--- a/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/dashboard_data_permissions.cy.spec.js
@@ -42,7 +42,7 @@ describe("support > permissions (metabase#8472)", () => {
     cy.icon("filter").click();
     popover().contains("Text or Category").click();
 
-    popover().contains("Dropdown").click();
+    popover().contains("Is").click();
 
     // Filter the first card by User Address
     selectDashboardFilter(cy.get(".DashCard").first(), "Address");
diff --git a/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js b/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js
index 97c3282576f5651efc2fd6be5e07b2cb9784b82b..106c5dd2db0ef9214bf94036fa47624401ae0936 100644
--- a/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js
+++ b/frontend/test/metabase/scenarios/dashboard/text-box.cy.spec.js
@@ -128,7 +128,7 @@ describe("scenarios > dashboard > text-box", () => {
     cy.icon("filter").click();
     popover().within(() => {
       cy.findByText("Text or Category").click();
-      cy.findByText("Dropdown").click();
+      cy.findByText("Is").click();
     });
     cy.findByText("Save").click();
 
diff --git a/frontend/test/metabase/scenarios/models/reproductions/23024-cannot-apply-dash-filter-native-model.cy.spec.js b/frontend/test/metabase/scenarios/models/reproductions/23024-cannot-apply-dash-filter-native-model.cy.spec.js
index eadb80ac678bfa74ad889cbc2f92e7c41002dc8d..39d58cee0884f7573321870bad278777ed4938b8 100644
--- a/frontend/test/metabase/scenarios/models/reproductions/23024-cannot-apply-dash-filter-native-model.cy.spec.js
+++ b/frontend/test/metabase/scenarios/models/reproductions/23024-cannot-apply-dash-filter-native-model.cy.spec.js
@@ -46,7 +46,7 @@ describe.skip("issue 23024", () => {
     cy.icon("filter").click();
 
     cy.findByText("Text or Category").click();
-    cy.findByText("Dropdown").click();
+    cy.findByText("Is").click();
 
     cy.findByText("Column to filter on")
       .parent()
diff --git a/frontend/test/metabase/scenarios/native-filters/helpers/e2e-field-filter-helpers.js b/frontend/test/metabase/scenarios/native-filters/helpers/e2e-field-filter-helpers.js
index 071998fbac845ab8a9dc4cdf3eb6eed038567ca9..131ca2ce21ffaee58a26849da99d2100d5e6dfa0 100644
--- a/frontend/test/metabase/scenarios/native-filters/helpers/e2e-field-filter-helpers.js
+++ b/frontend/test/metabase/scenarios/native-filters/helpers/e2e-field-filter-helpers.js
@@ -49,7 +49,7 @@ export function selectFilterValueFromList(value) {
  */
 
 export function applyFilterByType(filter, value) {
-  if (["Dropdown", "Is not"].includes(filter)) {
+  if (["Is", "Is not"].includes(filter)) {
     selectFilterValueFromList(value);
   } else {
     addWidgetStringFilter(value);
diff --git a/frontend/test/metabase/scenarios/sharing/public.cy.spec.js b/frontend/test/metabase/scenarios/sharing/public.cy.spec.js
index 2a2791004b575d99ce79a917b4e71612ecc5dad5..e32b10b3b04c2d6d8e82ac30315c1bdc9e0a320a 100644
--- a/frontend/test/metabase/scenarios/sharing/public.cy.spec.js
+++ b/frontend/test/metabase/scenarios/sharing/public.cy.spec.js
@@ -80,7 +80,7 @@ describe("scenarios > public", () => {
 
       popover().within(() => {
         cy.findByText("Text or Category").click();
-        cy.findByText("Dropdown").click();
+        cy.findByText("Is").click();
       });
 
       cy.contains("Select…").click();
diff --git a/frontend/test/metabase/scenarios/sharing/reproductions/22524-public-dashboard-updates-after-changing-parameters.cy.spec.js b/frontend/test/metabase/scenarios/sharing/reproductions/22524-public-dashboard-updates-after-changing-parameters.cy.spec.js
index 6bde1f33f012cbabbe40de9bfeddbaa5fd863109..14936b8003f61688f3b0060d3fdb625c4f377f94 100644
--- a/frontend/test/metabase/scenarios/sharing/reproductions/22524-public-dashboard-updates-after-changing-parameters.cy.spec.js
+++ b/frontend/test/metabase/scenarios/sharing/reproductions/22524-public-dashboard-updates-after-changing-parameters.cy.spec.js
@@ -36,7 +36,7 @@ describe("issue 22524", () => {
     );
 
     editDashboard();
-    setFilter("Text or Category", "Dropdown");
+    setFilter("Text or Category", "Is");
 
     cy.findByText("Select…").click();
     popover().contains("City").click();
diff --git a/frontend/test/metabase/scenarios/sharing/subscriptions.cy.spec.js b/frontend/test/metabase/scenarios/sharing/subscriptions.cy.spec.js
index 7bc27a910586c66ddf6ebac5cc66f55e2aaa45c4..8f0b0a60ead493a41dd8f196773b51f504b35394 100644
--- a/frontend/test/metabase/scenarios/sharing/subscriptions.cy.spec.js
+++ b/frontend/test/metabase/scenarios/sharing/subscriptions.cy.spec.js
@@ -375,7 +375,7 @@ function addParametersToDashboard() {
   // add Category > Dropdown "Name" filter
   cy.icon("filter").click();
   cy.findByText("Text or Category").click();
-  cy.findByText("Dropdown").click();
+  cy.findByText("Is").click();
 
   cy.findByText("Select…").click();
   popover().within(() => {
@@ -391,7 +391,7 @@ function addParametersToDashboard() {
   // add Category > Dropdown "Category" filter
   cy.icon("filter").click();
   cy.findByText("Text or Category").click();
-  cy.findByText("Dropdown").click();
+  cy.findByText("Is").click();
   cy.findByText("Select…").click();
   popover().within(() => {
     cy.findByText("Category").click();