diff --git a/src/metabase/query_processor/middleware/metrics.clj b/src/metabase/query_processor/middleware/metrics.clj
index c9ea89c100ca50818b9f59addb6a1a7d63b34f6f..00a7932e5cb75d8383b54c45e2d7f8fcf3632f1e 100644
--- a/src/metabase/query_processor/middleware/metrics.clj
+++ b/src/metabase/query_processor/middleware/metrics.clj
@@ -251,7 +251,7 @@
    2. Metric source cards can reference themselves.
       A query built from a `:source-card` of `:type :metric` can reference itself."
   [query]
-  (if-not (find-first-metric query)
+  (if-not (find-first-metric (:stages query))
     query
     (do
       (prometheus/inc! :metabase-query-processor/metrics-adjust)
@@ -263,7 +263,7 @@
                          (update stage-or-join :stages #(adjust-metric-stages query path %)))))]
           (u/prog1
             (update query :stages #(adjust-metric-stages query nil %))
-            (when-let [metric (find-first-metric <>)]
+            (when-let [metric (find-first-metric (:stages <>))]
               (throw (ex-info "Failed to replace metric" {:metric metric})))))
         (catch Throwable e
           (prometheus/inc! :metabase-query-processor/metrics-adjust-errors)
diff --git a/test/metabase/query_processor/middleware/metrics_test.clj b/test/metabase/query_processor/middleware/metrics_test.clj
index 4b97c95ac52c8eb531c2ef5cf9f996f65ca7bb36..76d15e29370f682551c2d98f56924cb414f09574 100644
--- a/test/metabase/query_processor/middleware/metrics_test.clj
+++ b/test/metabase/query_processor/middleware/metrics_test.clj
@@ -59,8 +59,13 @@
               (lib.tu/mock-metadata-provider
                {:cards [metric]}))])))
 
-(def adjust
-  (comp #'metrics/adjust #'fetch-source-query/resolve-source-cards))
+(defn- adjust
+  [query]
+  (-> query
+      (assoc-in [:info :pivot/original-query] query)
+      (#'fetch-source-query/resolve-source-cards)
+      (#'metrics/adjust)
+      (dissoc :info)))
 
 (defn- check-prometheus-metrics!
   [& {expected-metrics-count  :metabase-query-processor/metrics-adjust