diff --git a/src/metabase/models/user.clj b/src/metabase/models/user.clj
index 0bdf224f2e951f231e5a50881d860160635e28c5..35a54fb0bd877ab3520747880c25bc6ecd599ca8 100644
--- a/src/metabase/models/user.clj
+++ b/src/metabase/models/user.clj
@@ -13,6 +13,7 @@
     :refer [PermissionsGroupMembership]]
    [metabase.models.serialization :as serdes]
    [metabase.models.session :refer [Session]]
+   [metabase.models.setting :refer [defsetting]]
    [metabase.plugins.classloader :as classloader]
    [metabase.public-settings :as public-settings]
    [metabase.public-settings.premium-features :as premium-features]
@@ -401,3 +402,12 @@
        (doseq [group-id to-add]
          (t2/insert! PermissionsGroupMembership {:user_id user-id, :group_id group-id}))))
     true))
+
+;;; ## ---------------------------------------- USER SETTINGS ----------------------------------------
+
+;; NB: Settings are also defined where they're used, such as in metabase.events.view-log
+
+(defsetting last-acknowledged-version
+  (deferred-tru "The last version for which a user dismissed the 'What's new?' modal.")
+  :user-local :only
+  :type :string)
diff --git a/test/metabase/models/user_test.clj b/test/metabase/models/user_test.clj
index eced72cd8910dcccaf87e84715040330b0422b80..51a286fff7c39ebec074a82fcce1bf0dc05dd7e4 100644
--- a/test/metabase/models/user_test.clj
+++ b/test/metabase/models/user_test.clj
@@ -15,6 +15,7 @@
    [metabase.models.permissions-group :as perms-group]
    [metabase.models.permissions-test :as perms-test]
    [metabase.models.serialization :as serdes]
+   [metabase.models.setting :as setting]
    [metabase.models.user :as user]
    [metabase.public-settings.premium-features-test :as premium-features-test]
    [metabase.test :as mt]
@@ -511,3 +512,15 @@
               (is (u.password/verify-password plaintext-password
                                               (salt)
                                               new-hashed-password)))))))))
+
+(deftest has-a-last-acknowledged-version
+  (testing "last-acknowledged-version can be read and set"
+    (mt/with-test-user :rasta
+      (try
+        (is (nil? (setting/get :last-acknowledged-version)))
+        (setting/set! :last-acknowledged-version "47")
+        (is (= "47" (setting/get :last-acknowledged-version)))
+        ;; Ensure it's saved on the user, not globally:
+        (is (= "47" (:last-acknowledged-version (t2/select-one-fn :settings User :id (mt/user->id :rasta)))))
+        (finally
+          (setting/set! :last-acknowledged-version nil))))))