diff --git a/enterprise/backend/src/metabase_enterprise/audit_db.clj b/enterprise/backend/src/metabase_enterprise/audit_db.clj
index 6694fb52ff98e6a02486a433d51f756d1bb217ef..f9506545824dfb090fbcdb8148afa0a86d6ed694 100644
--- a/enterprise/backend/src/metabase_enterprise/audit_db.clj
+++ b/enterprise/backend/src/metabase_enterprise/audit_db.clj
@@ -249,7 +249,6 @@
     (ia-content->plugins (plugins/plugins-dir))
     (let [[last-checksum current-checksum] (get-last-and-current-checksum)]
       (when (should-load-audit? (load-analytics-content) last-checksum current-checksum)
-        (last-analytics-checksum! current-checksum)
         (log/info (str "Loading Analytics Content from: " (instance-analytics-plugin-dir (plugins/plugins-dir))))
         ;; The EE token might not have :serialization enabled, but audit features should still be able to use it.
         (let [report (log/with-no-logs
@@ -258,7 +257,9 @@
                                                             :token-check? false))]
           (if (not-empty (:errors report))
             (log/info (str "Error Loading Analytics Content: " (pr-str report)))
-            (log/info (str "Loading Analytics Content Complete (" (count (:seen report)) ") entities loaded."))))))
+            (do
+              (log/info (str "Loading Analytics Content Complete (" (count (:seen report)) ") entities loaded."))
+              (last-analytics-checksum! current-checksum))))))
     (when-let [audit-db (t2/select-one :model/Database :is_audit true)]
       (adjust-audit-db-to-host! audit-db))))
 
diff --git a/enterprise/backend/test/metabase_enterprise/audit_db_test.clj b/enterprise/backend/test/metabase_enterprise/audit_db_test.clj
index 0a45fcb30568cd2fd63df705f7ea6a3a72cc3180..0912f65297772b7b11e68a293649d0170e27eade 100644
--- a/enterprise/backend/test/metabase_enterprise/audit_db_test.clj
+++ b/enterprise/backend/test/metabase_enterprise/audit_db_test.clj
@@ -5,6 +5,7 @@
    [clojure.string :as str]
    [clojure.test :refer [deftest is testing use-fixtures]]
    [metabase-enterprise.audit-db :as audit-db]
+   [metabase-enterprise.serialization.cmd :as serialization.cmd]
    [metabase-enterprise.serialization.v2.backfill-ids :as serdes.backfill]
    [metabase.core :as mbc]
    [metabase.models.data-permissions :as data-perms]
@@ -141,6 +142,17 @@
           (is (= :metabase-enterprise.audit-db/no-op
                  (audit-db/ensure-audit-db-installed!))))))))
 
+(deftest checksum-not-recorded-when-load-fails-test
+  (mt/test-drivers #{:postgres :h2 :mysql}
+    (t2/delete! :model/Database :is_audit true)
+    (testing "If audit content loading throws an exception, the checksum should not be stored"
+      (audit-db/last-analytics-checksum! 0)
+      (with-redefs [serialization.cmd/v2-load-internal! (fn [& _] (throw (Exception. "Audit loading failed")))]
+        (is (thrown-with-msg? Exception
+                              #"Audit loading failed"
+                              (audit-db/ensure-audit-db-installed!)))
+        (is (= 0 (audit-db/last-analytics-checksum)))))))
+
 (deftest should-load-audit?-test
   (testing "load-analytics-content + checksums dont match => load"
     (is (= (#'audit-db/should-load-audit? true 1 3) true)))