diff --git a/enterprise/backend/test/metabase_enterprise/serialization/v2/extract_test.clj b/enterprise/backend/test/metabase_enterprise/serialization/v2/extract_test.clj
index 26a8fcdd2df88c9200c2a545f96bdfe412410423..58960d49e04d75834049a911c6f0d3d7a870b385 100644
--- a/enterprise/backend/test/metabase_enterprise/serialization/v2/extract_test.clj
+++ b/enterprise/backend/test/metabase_enterprise/serialization/v2/extract_test.clj
@@ -769,7 +769,7 @@
               (let [ser (serdes.base/extract-one "Action" {} action)]
                 (is (schema= {:serdes/meta (s/eq [{:model "Action" :id (:entity_id action) :label "my_action"}])
                               :creator_id  (s/eq "ann@heart.band")
-                              :type        (s/eq :implicit)
+                              :type        (s/eq "implicit")
                               :kind        (s/eq "row/update")
                               :created_at  OffsetDateTime
                               :model_id    (s/eq card-eid-1)
@@ -805,6 +805,7 @@
               (let [ser (serdes.base/extract-one "Action" {} action)]
                 (is (schema= {:serdes/meta (s/eq [{:model "Action" :id (:entity_id action) :label "my_action"}])
                               :creator_id  (s/eq "ann@heart.band")
+                              :type        (s/eq "http")
                               :created_at  OffsetDateTime
                               :template    (s/eq {})
                               :model_id    (s/eq card-eid-1)
@@ -842,6 +843,7 @@
                 (is (schema= {:serdes/meta   (s/eq [{:model "Action"
                                                      :id    (:entity_id action)
                                                      :label "my_action"}])
+                              :type          (s/eq "query")
                               :creator_id    (s/eq "ann@heart.band")
                               :created_at    OffsetDateTime
                               :dataset_query (s/eq {:type "native", :native {:native "select 1"}, :database db-id})
diff --git a/enterprise/backend/test/metabase_enterprise/serialization/v2/load_test.clj b/enterprise/backend/test/metabase_enterprise/serialization/v2/load_test.clj
index 0b2b5c40a0a74e02d84f4e48b897d0b0d2367d1c..3e0ee17e497d6865e9e4fac552eeea246c2b363f 100644
--- a/enterprise/backend/test/metabase_enterprise/serialization/v2/load_test.clj
+++ b/enterprise/backend/test/metabase_enterprise/serialization/v2/load_test.clj
@@ -7,7 +7,8 @@
    [metabase-enterprise.serialization.v2.ingest :as serdes.ingest]
    [metabase-enterprise.serialization.v2.load :as serdes.load]
    [metabase.models
-    :refer [Card
+    :refer [Action
+            Card
             Collection
             Dashboard
             DashboardCard
@@ -21,6 +22,7 @@
             Timeline
             TimelineEvent
             User]]
+   [metabase.models.action :as action]
    [metabase.models.serialization.base :as serdes.base]
    [metabase.util :as u]
    [schema.core :as s]
@@ -939,3 +941,39 @@
                        :template-tags
                        (get "snippet: things")
                        :snippet-id)))))))))
+
+(deftest load-action-test
+  (let [serialized (atom nil)
+        eid (u/generate-nano-id)]
+    (ts/with-source-and-dest-dbs
+      (testing "extraction succeeds"
+        (ts/with-source-db
+          (let [db       (ts/create! Database :name "my-db")
+                card     (ts/create! Card
+                                     :name "the query"
+                                     :query_type :native
+                                     :dataset true
+                                     :database_id (:id db)
+                                     :dataset_query {:database (:id db)
+                                                     :native {:type   :native
+                                                              :native {:query "wow"}}})
+                _action-id (action/insert! {:entity_id     eid
+                                            :name          "the action"
+                                            :model_id      (:id card)
+                                            :type          :query
+                                            :dataset_query "wow"
+                                            :database_id   (:id db)})]
+            (reset! serialized (into [] (serdes.extract/extract-metabase {})))
+            (let [action-serialized (first (filter (fn [{[{:keys [model id]}] :serdes/meta}]
+                                                     (and (= model "Action") (= id eid)))
+                                                   @serialized))]
+              (is (some? action-serialized))
+              (testing ":type should be a string"
+                (is (string? (:type action-serialized))))))))
+      (testing "loading succeeds"
+        (ts/with-dest-db
+          (serdes.load/load-metabase (ingestion-in-memory @serialized))
+          (let [action (db/select-one Action :entity_id eid)]
+            (is (some? action))
+            (testing ":type should be a keyword again"
+              (is (keyword? (:type action))))))))))
diff --git a/src/metabase/models/action.clj b/src/metabase/models/action.clj
index 44ceb5e50333042b2ee6b661364faf72c4370863..2f4eab8eed26d6d0b5f642c7a13bfec2154bba5b 100644
--- a/src/metabase/models/action.clj
+++ b/src/metabase/models/action.clj
@@ -26,7 +26,7 @@
   "Returns the model from an action type.
    `action-type` can be a string or a keyword."
   [action-type]
-  (case (keyword action-type)
+  (case action-type
     :http     HTTPAction
     :implicit ImplicitAction
     :query    QueryAction))
@@ -267,6 +267,7 @@
   (-> (serdes.base/extract-one-basics "Action" action)
       (update :creator_id serdes.util/export-user)
       (update :model_id serdes.util/export-fk 'Card)
+      (update :type name)
       (cond-> (= (:type action) :query)
         (update :database_id serdes.util/export-fk-keyed 'Database :name))))
 
@@ -275,6 +276,7 @@
       serdes.base/load-xform-basics
       (update :creator_id serdes.util/import-user)
       (update :model_id serdes.util/import-fk 'Card)
+      (update :type keyword)
       (cond-> (= (:type action) "query")
         (update :database_id serdes.util/import-fk-keyed 'Database :name))))
 
@@ -289,7 +291,7 @@
 
 (defmethod serdes.base/serdes-dependencies "Action" [action]
   (concat [[{:model "Card" :id (:model_id action)}]]
-    (when (= (:type action) :query)
+    (when (= (:type action) "query")
       [[{:model "Database" :id (:database_id action)}]])))
 
 (defmethod serdes.base/storage-path "Action" [action _ctx]