diff --git a/enterprise/frontend/src/metabase-enterprise/audit_app/pages/AuditQueryDetail.jsx b/enterprise/frontend/src/metabase-enterprise/audit_app/pages/AuditQueryDetail.jsx
index 979a8df3cb887a098603d73d41bb41de5a2fe324..8013db2f4e2d63a9d3eb42553715b40b2a592586 100644
--- a/enterprise/frontend/src/metabase-enterprise/audit_app/pages/AuditQueryDetail.jsx
+++ b/enterprise/frontend/src/metabase-enterprise/audit_app/pages/AuditQueryDetail.jsx
@@ -54,7 +54,7 @@ const AuditQueryDetail = ({ params: { queryHash } }) => (
 import { getMetadata } from "metabase/selectors/metadata";
 
 import ExplicitSize from "metabase/components/ExplicitSize";
-import { loadMetadataForCard } from "metabase/query_builder/actions";
+import { loadMetadataForCard } from "metabase/questions/actions";
 import NativeQuery from "metabase-lib/queries/NativeQuery";
 import Question from "metabase-lib/Question";
 import * as QueryDetailCards from "../lib/cards/query_detail";
diff --git a/frontend/src/metabase/containers/AdHocQuestionLoader.jsx b/frontend/src/metabase/containers/AdHocQuestionLoader.jsx
index 2e03925ce9ea8cb1c9145e5cb025b7cd8afabe63..feb72fc05e165f79d0276c29b46e04cf9b90f608 100644
--- a/frontend/src/metabase/containers/AdHocQuestionLoader.jsx
+++ b/frontend/src/metabase/containers/AdHocQuestionLoader.jsx
@@ -4,7 +4,7 @@ import { connect } from "react-redux";
 
 // things that will eventually load the quetsion
 import { deserializeCardFromUrl } from "metabase/lib/card";
-import { loadMetadataForCard } from "metabase/query_builder/actions";
+import { loadMetadataForCard } from "metabase/questions/actions";
 import { getMetadata } from "metabase/selectors/metadata";
 
 import Question from "metabase-lib/Question";
diff --git a/frontend/src/metabase/containers/SavedQuestionLoader.jsx b/frontend/src/metabase/containers/SavedQuestionLoader.jsx
index 60202eb7c15029525be5c34cf8c40aa73f74421d..1dc0b04c6c11219415e2baa8e1068879c23d55e2 100644
--- a/frontend/src/metabase/containers/SavedQuestionLoader.jsx
+++ b/frontend/src/metabase/containers/SavedQuestionLoader.jsx
@@ -2,7 +2,7 @@
 import React from "react";
 import { connect } from "react-redux";
 
-import { loadMetadataForCard } from "metabase/query_builder/actions";
+import { loadMetadataForCard } from "metabase/questions/actions";
 import { getMetadata } from "metabase/selectors/metadata";
 
 import Questions from "metabase/entities/questions";
diff --git a/frontend/src/metabase/query_builder/actions/core/core.js b/frontend/src/metabase/query_builder/actions/core/core.js
index cd4d8351fd8bb215fecd353086e162dad12746ae..3e4617dc4f83555d635d7cad1db0f04ed15af3a8 100644
--- a/frontend/src/metabase/query_builder/actions/core/core.js
+++ b/frontend/src/metabase/query_builder/actions/core/core.js
@@ -8,6 +8,7 @@ import * as Urls from "metabase/lib/urls";
 import Utils from "metabase/lib/utils";
 import { createThunkAction } from "metabase/lib/redux";
 
+import { loadMetadataForCard } from "metabase/questions/actions";
 import { getCardAfterVisualizationClick } from "metabase/visualizations/lib/utils";
 
 import { openUrl } from "metabase/redux/app";
@@ -39,7 +40,6 @@ import { clearQueryResult, runQuestionQuery } from "../querying";
 import { onCloseSidebars } from "../ui";
 
 import { updateQuestion } from "./updateQuestion";
-import { loadMetadataForCard } from "./metadata";
 import { getQuestionWithDefaultVisualizationSettings } from "./utils";
 
 export const RESET_QB = "metabase/qb/RESET_QB";
diff --git a/frontend/src/metabase/query_builder/actions/core/index.ts b/frontend/src/metabase/query_builder/actions/core/index.ts
index 2c5127fdd6ad40fe3b609fd8d3d2ae9563926c74..b10207d44dc11cff86bfd83c3f72184a47b31760 100644
--- a/frontend/src/metabase/query_builder/actions/core/index.ts
+++ b/frontend/src/metabase/query_builder/actions/core/index.ts
@@ -1,4 +1,3 @@
 export * from "./core";
 export * from "./initializeQB";
-export * from "./metadata";
 export * from "./updateQuestion";
diff --git a/frontend/src/metabase/query_builder/actions/core/initializeQB.ts b/frontend/src/metabase/query_builder/actions/core/initializeQB.ts
index 41c7271d2c8f280f7d9385fec9535a4d9ba4bd26..e973a5df784a16e8cc1b95c022b77d152bb66c26 100644
--- a/frontend/src/metabase/query_builder/actions/core/initializeQB.ts
+++ b/frontend/src/metabase/query_builder/actions/core/initializeQB.ts
@@ -11,6 +11,7 @@ import { getUser } from "metabase/selectors/user";
 
 import Snippets from "metabase/entities/snippets";
 import Questions from "metabase/entities/questions";
+import { loadMetadataForCard } from "metabase/questions/actions";
 import { fetchAlertsForQuestion } from "metabase/alert/alert";
 
 import {
@@ -34,7 +35,6 @@ import { updateUrl } from "../navigation";
 import { cancelQuery, runQuestionQuery } from "../querying";
 
 import { resetQB } from "./core";
-import { loadMetadataForCard } from "./metadata";
 import {
   propagateDashboardParameters,
   getParameterValuesForQuestion,
diff --git a/frontend/src/metabase/query_builder/actions/core/initializeQB.unit.spec.ts b/frontend/src/metabase/query_builder/actions/core/initializeQB.unit.spec.ts
index f3509fa7682a0f87874615bb5fcfa5d8318145b6..2361404e1d2a947517711cfc6f4dd116f4bd2336 100644
--- a/frontend/src/metabase/query_builder/actions/core/initializeQB.unit.spec.ts
+++ b/frontend/src/metabase/query_builder/actions/core/initializeQB.unit.spec.ts
@@ -5,6 +5,7 @@ import * as CardLib from "metabase/lib/card";
 import * as Urls from "metabase/lib/urls";
 
 import * as alert from "metabase/alert/alert";
+import * as questionActions from "metabase/questions/actions";
 import Databases from "metabase/entities/databases";
 import Snippets from "metabase/entities/snippets";
 import { setErrorPage } from "metabase/redux/app";
@@ -36,7 +37,6 @@ import Question from "metabase-lib/Question";
 import * as querying from "../querying";
 
 import * as core from "./core";
-import * as metadataActions from "./metadata";
 import { initializeQB } from "./initializeQB";
 
 type BaseSetupOpts = {
@@ -228,7 +228,7 @@ describe("QB Actions > initializeQB", () => {
 
         it("fetches question metadata", async () => {
           const loadMetadataForCardSpy = jest.spyOn(
-            metadataActions,
+            questionActions,
             "loadMetadataForCard",
           );
 
@@ -772,7 +772,7 @@ describe("QB Actions > initializeQB", () => {
 
     it("fetches question metadata", async () => {
       const loadMetadataForCardSpy = jest.spyOn(
-        metadataActions,
+        questionActions,
         "loadMetadataForCard",
       );
 
diff --git a/frontend/src/metabase/query_builder/actions/core/updateQuestion.ts b/frontend/src/metabase/query_builder/actions/core/updateQuestion.ts
index d866798de6cfc49b0eb631ca5f02c95cd9d155c6..e4da1bf91c1cbdf0b920665daef6d0046947cbbc 100644
--- a/frontend/src/metabase/query_builder/actions/core/updateQuestion.ts
+++ b/frontend/src/metabase/query_builder/actions/core/updateQuestion.ts
@@ -1,6 +1,8 @@
 import _ from "underscore";
 import { assocIn } from "icepick";
 
+import { loadMetadataForCard } from "metabase/questions/actions";
+
 import { Dataset } from "metabase-types/api";
 import { Series } from "metabase-types/types/Visualization";
 import { Dispatch, GetState, QueryBuilderMode } from "metabase-types/store";
@@ -12,7 +14,6 @@ import Question from "metabase-lib/Question";
 import NativeQuery from "metabase-lib/queries/NativeQuery";
 import StructuredQuery from "metabase-lib/queries/StructuredQuery";
 
-import { isSupportedTemplateTagForModel } from "metabase-lib/metadata/utils/models";
 import {
   getFirstQueryResult,
   getIsShowingTemplateTagsEditor,
@@ -26,7 +27,6 @@ import { setIsShowingTemplateTagsEditor } from "../native";
 import { runQuestionQuery } from "../querying";
 import { onCloseQuestionInfo, setQueryBuilderMode } from "../ui";
 
-import { loadMetadataForCard } from "./metadata";
 import { getQuestionWithDefaultVisualizationSettings } from "./utils";
 
 function hasNewColumns(question: Question, queryResult: Dataset) {
diff --git a/frontend/src/metabase/query_builder/actions/core/updateQuestion.unit.spec.ts b/frontend/src/metabase/query_builder/actions/core/updateQuestion.unit.spec.ts
index b2ca09e52d8ede63c9f2ef068799f1014691848a..76c30c72d41289f91d3fdf35de949dbb577f51ae 100644
--- a/frontend/src/metabase/query_builder/actions/core/updateQuestion.unit.spec.ts
+++ b/frontend/src/metabase/query_builder/actions/core/updateQuestion.unit.spec.ts
@@ -1,3 +1,4 @@
+import * as questionActions from "metabase/questions/actions";
 import { createMockDataset } from "metabase-types/api/mocks";
 import { Card, StructuredDatasetQuery } from "metabase-types/types/Card";
 import { ConcreteField, TemplateTag } from "metabase-types/types/Query";
@@ -34,7 +35,6 @@ import * as native from "../native";
 import * as querying from "../querying";
 import * as ui from "../ui";
 
-import * as metadataActions from "./metadata";
 import { updateQuestion, UPDATE_QUESTION } from "./updateQuestion";
 
 type SetupOpts = {
@@ -451,7 +451,7 @@ describe("QB Actions > updateQuestion", () => {
       describe(questionType, () => {
         it("loads metadata for the model", async () => {
           const loadMetadataSpy = jest.spyOn(
-            metadataActions,
+            questionActions,
             "loadMetadataForCard",
           );
 
@@ -461,7 +461,7 @@ describe("QB Actions > updateQuestion", () => {
 
         it("refreshes question metadata if there's difference in dependent metadata", async () => {
           const loadMetadataSpy = jest.spyOn(
-            metadataActions,
+            questionActions,
             "loadMetadataForCard",
           );
           const join = new Join(PRODUCTS_JOIN_CLAUSE);
@@ -488,7 +488,7 @@ describe("QB Actions > updateQuestion", () => {
       describe(questionType, () => {
         it("doesn't refresh question metadata if dependent metadata doesn't change", async () => {
           const loadMetadataSpy = jest.spyOn(
-            metadataActions,
+            questionActions,
             "loadMetadataForCard",
           );
 
@@ -498,7 +498,7 @@ describe("QB Actions > updateQuestion", () => {
 
         it("refreshes question metadata if there's difference in dependent metadata", async () => {
           const loadMetadataSpy = jest.spyOn(
-            metadataActions,
+            questionActions,
             "loadMetadataForCard",
           );
           const join = new Join(PRODUCTS_JOIN_CLAUSE);
diff --git a/frontend/src/metabase/query_builder/actions/core/metadata.ts b/frontend/src/metabase/questions/actions.ts
similarity index 85%
rename from frontend/src/metabase/query_builder/actions/core/metadata.ts
rename to frontend/src/metabase/questions/actions.ts
index bccee807beb1c88f5f54851e2e9bd34d8681e05b..65f916e6e7bccf4f51d6bb31da7f47acd0dd5745 100644
--- a/frontend/src/metabase/query_builder/actions/core/metadata.ts
+++ b/frontend/src/metabase/questions/actions.ts
@@ -3,8 +3,9 @@ import _ from "underscore";
 import { loadMetadataForQueries } from "metabase/redux/metadata";
 import { getMetadata } from "metabase/selectors/metadata";
 
-import { Card } from "metabase-types/types/Card";
-import { Dispatch, GetState } from "metabase-types/store";
+import type { Card } from "metabase-types/types/Card";
+import type { Dispatch, GetState } from "metabase-types/store";
+
 import Question from "metabase-lib/Question";
 
 export interface LoadMetadataOptions {