diff --git a/resources/migrations/000_migrations.yaml b/resources/migrations/000_migrations.yaml
index b9ae4ab849e2afba964c14b82249f781ea488ddd..2b66f45e910cc38f035e139cebb17177a06fa112 100644
--- a/resources/migrations/000_migrations.yaml
+++ b/resources/migrations/000_migrations.yaml
@@ -11864,6 +11864,21 @@ databaseChangeLog:
             columnName: last_name
             columnDataType: varchar(254)
 
+  - changeSet:
+      id: v44.00-038
+      author: metamben
+      comment: Added 0.44.0 - Add collection_preview to report_card
+      changes:
+        - addColumn:
+            tableName: report_card
+            columns:
+              - column:
+                  name: collection_preview
+                  type: boolean
+                  remarks: Indicating whether the card should be visualized in the collection preview
+                  defaultValueBoolean: true
+                  constraints:
+                    nullable: false
 
 
 # >>>>>>>>>> DO NOT ADD NEW MIGRATIONS BELOW THIS LINE! ADD THEM ABOVE <<<<<<<<<<
diff --git a/src/metabase/api/card.clj b/src/metabase/api/card.clj
index 77b9f3e5862fc943805e9dd4f630bf6e923f5a7c..e90bed932ec9d0b11ad947143cbd7489f04a37bd 100644
--- a/src/metabase/api/card.clj
+++ b/src/metabase/api/card.clj
@@ -509,7 +509,7 @@
         (u/select-keys-when card-updates
           :present #{:collection_id :collection_position :description :cache_ttl :dataset}
           :non-nil #{:dataset_query :display :name :visualization_settings :archived :enable_embedding
-                     :parameters :parameter_mappings :embedding_params :result_metadata})))
+                     :parameters :parameter_mappings :embedding_params :result_metadata :collection_preview})))
     ;; Fetch the updated Card from the DB
     (let [card (Card id)]
       (delete-alerts-if-needed! card-before-update card)
@@ -530,7 +530,7 @@
   "Update a `Card`."
   [id :as {{:keys [dataset_query description display name visualization_settings archived collection_id
                    collection_position enable_embedding embedding_params result_metadata parameters
-                   cache_ttl dataset]
+                   cache_ttl dataset collection_preview]
             :as   card-updates} :body}]
   {name                   (s/maybe su/NonBlankString)
    parameters             (s/maybe [su/Parameter])
@@ -545,7 +545,8 @@
    collection_id          (s/maybe su/IntGreaterThanZero)
    collection_position    (s/maybe su/IntGreaterThanZero)
    result_metadata        (s/maybe qr/ResultsMetadata)
-   cache_ttl              (s/maybe su/IntGreaterThanZero)}
+   cache_ttl              (s/maybe su/IntGreaterThanZero)
+   collection_preview     (s/maybe s/Bool)}
   (let [card-before-update (hydrate (api/write-check Card id)
                                     [:moderation_reviews :moderator_details])]
     ;; Do various permissions checks
diff --git a/src/metabase/api/collection.clj b/src/metabase/api/collection.clj
index 2c5da860a46d3e4cb10fdd3493cbd0e702b72f77..554d3bd125fa76fa4f084ca56f0511cb36be548f 100644
--- a/src/metabase/api/collection.clj
+++ b/src/metabase/api/collection.clj
@@ -203,7 +203,9 @@
 (defmethod post-process-collection-children :pulse
   [_ rows]
   (for [row rows]
-    (dissoc row :description :display :authority_level :moderated_status :icon :personal_owner_id)))
+    (dissoc row
+            :description :display :authority_level :moderated_status :icon :personal_owner_id
+            :collection_preview)))
 
 (defmethod collection-children-query :snippet
   [_ collection {:keys [archived?]}]
@@ -225,17 +227,19 @@
 (defmethod post-process-collection-children :timeline
   [_ rows]
   (for [row rows]
-    (dissoc row :description :display :collection_position :authority_level :moderated_status)))
+    (dissoc row
+            :description :display :collection_position :authority_level :moderated_status
+            :collection_preview)))
 
 (defmethod post-process-collection-children :snippet
   [_ rows]
   (for [row rows]
     (dissoc row
             :description :collection_position :display :authority_level
-            :moderated_status :icon :personal_owner_id)))
+            :moderated_status :icon :personal_owner_id :collection_preview)))
 
 (defn- card-query [dataset? collection {:keys [archived? pinned-state]}]
-  (-> {:select    [:c.id :c.name :c.description :c.entity_id :c.collection_position :c.display
+  (-> {:select    [:c.id :c.name :c.description :c.entity_id :c.collection_position :c.display :c.collection_preview
                    [(hx/literal (if dataset? "dataset" "card")) :model]
                    [:u.id :last_edit_user] [:u.email :last_edit_email]
                    [:u.first_name :last_edit_first_name] [:u.last_name :last_edit_last_name]
@@ -282,9 +286,21 @@
   [_ collection options]
   (card-query false collection options))
 
+(defn- bit->boolean
+  "Coerce a bit returned by some MySQL/MariaDB versions in some situations to Boolean."
+  [v]
+  (if (number? v)
+    (not (zero? v))
+    v))
+
+(defn- post-process-card-row [row]
+  (-> row
+      (dissoc :authority_level :icon :personal_owner_id)
+      (update :collection_preview bit->boolean)))
+
 (defmethod post-process-collection-children :card
   [_ rows]
-  (map #(dissoc % :authority_level :icon :personal_owner_id) rows))
+  (map post-process-card-row rows))
 
 (defmethod collection-children-query :dashboard
   [_ collection {:keys [archived? pinned-state]}]
@@ -311,7 +327,8 @@
 
 (defmethod post-process-collection-children :dashboard
   [_ rows]
-  (map #(dissoc % :display :authority_level :moderated_status :icon :personal_owner_id) rows))
+  (map #(dissoc % :display :authority_level :moderated_status :icon :personal_owner_id :collection_preview)
+       rows))
 
 (defmethod collection-children-query :collection
   [_ collection {:keys [archived? collection-namespace pinned-state]}]
@@ -342,7 +359,8 @@
       ;; when fetching root collection, we might have personal collection
       (:personal_owner_id row) (assoc :name (collection/user->personal-collection-name (:personal_owner_id row) :user))
       true                     (assoc :can_write (mi/can-write? Collection (:id row)))
-      true                     (dissoc :collection_position :display :moderated_status :icon :personal_owner_id))))
+      true                     (dissoc :collection_position :display :moderated_status :icon :personal_owner_id
+                                       :collection_preview))))
 
 (s/defn ^:private coalesce-edit-info :- last-edit/MaybeAnnotated
   "Hoist all of the last edit information into a map under the key :last-edit-info. Considers this information present
@@ -400,7 +418,8 @@
   "All columns that need to be present for the union-all. Generated with the comment form below. Non-text columns that
   are optional (not id, but last_edit_user for example) must have a type so that the union-all can unify the nil with
   the correct column type."
-  [:id :name :description :entity_id :display :model :collection_position :authority_level [:personal_owner_id :integer]
+  [:id :name :description :entity_id :display [:collection_preview :boolean]
+   :model :collection_position :authority_level [:personal_owner_id :integer]
    :last_edit_email :last_edit_first_name :last_edit_last_name :moderated_status :icon
    [:last_edit_user :integer] [:last_edit_timestamp :timestamp]])
 
diff --git a/test/metabase/api/card_test.clj b/test/metabase/api/card_test.clj
index 9da4141ddbcddc4e885714e45140f2cad42bb736..07c373c05345c2fe8ed20995b863f054e98d1aef 100644
--- a/test/metabase/api/card_test.clj
+++ b/test/metabase/api/card_test.clj
@@ -48,6 +48,7 @@
   {:archived            false
    :collection_id       nil
    :collection_position nil
+   :collection_preview  true
    :dataset_query       {}
    :dataset             false
    :description         nil
@@ -850,6 +851,14 @@
       (is (= 1
              (db/select-one-field :collection_position Card :id (u/the-id card)))))))
 
+(deftest can-we-change-the-collection-preview-flag-of-a-card-
+  (mt/with-temp Card [card]
+    (with-cards-in-writeable-collection card
+      (mt/user-http-request :rasta :put 202 (str "card/" (u/the-id card))
+                            {:collection_preview false})
+      (is (= false
+             (db/select-one-field :collection_preview Card :id (u/the-id card)))))))
+
 (deftest ---and-unset--unpin--it-as-well-
   (mt/with-temp Card [card {:collection_position 1}]
     (with-cards-in-writeable-collection card
diff --git a/test/metabase/api/collection_test.clj b/test/metabase/api/collection_test.clj
index 9e5ce989b37f8193eb057955a74bbe37a57d6d1f..161ad4a9905ceed85eab38c510e58d0f45352ca3 100644
--- a/test/metabase/api/collection_test.clj
+++ b/test/metabase/api/collection_test.clj
@@ -337,8 +337,9 @@
     (let [collection-id-or-nil (when collection-or-id-or-nil
                                  (u/the-id collection-or-id-or-nil))]
       (mt/with-temp* [Card       [{card-id :id}
-                                  {:name          "Birthday Card"
-                                   :collection_id collection-id-or-nil}]
+                                  {:name               "Birthday Card"
+                                   :collection_preview false
+                                   :collection_id      collection-id-or-nil}]
                       Dashboard  [{dashboard-id :id}
                                   {:name          "Dine & Dashboard"
                                    :collection_id collection-id-or-nil}]
@@ -420,6 +421,7 @@
                 [{:id                  card-id
                   :name                (:name card)
                   :collection_position nil
+                  :collection_preview  true
                   :display             "table"
                   :description         nil
                   :entity_id           (:entity_id card)
@@ -465,7 +467,8 @@
         (perms/grant-collection-read-permissions! (perms-group/all-users) collection)
         (with-some-children-of-collection collection
           (is (= (map default-item [{:name "Acme Products", :model "pulse", :entity_id true}
-                                    {:name "Birthday Card", :description nil, :model "card", :display "table", :entity_id true}
+                                    {:name "Birthday Card", :description nil, :model "card",
+                                     :collection_preview false, :display "table", :entity_id true}
                                     {:name "Dine & Dashboard", :description nil, :model "dashboard", :entity_id true}
                                     {:name "Electro-Magnetic Pulse", :model "pulse", :entity_id true}])
                  (mt/boolean-ids-and-timestamps
@@ -481,7 +484,8 @@
             (is (= [(default-item {:name "Dine & Dashboard", :description nil, :model "dashboard", :entity_id true})]
                    (mt/boolean-ids-and-timestamps
                     (:data (mt/user-http-request :rasta :get 200 (str "collection/" (u/the-id collection) "/items?models=dashboard"))))))
-            (is (= [(default-item {:name "Birthday Card", :description nil, :model "card", :display "table", :entity_id true})
+            (is (= [(default-item {:name "Birthday Card", :description nil, :model "card",
+                                   :collection_preview false, :display "table", :entity_id true})
                     (default-item {:name "Dine & Dashboard", :description nil, :model "dashboard", :entity_id true})]
                    (mt/boolean-ids-and-timestamps
                     (:data (mt/user-http-request :rasta :get 200 (str "collection/" (u/the-id collection) "/items?models=dashboard&models=card"))))))))))
@@ -930,7 +934,8 @@
 (deftest fetch-root-items-collection-test
   (testing "GET /api/collection/root/items"
     (testing "Make sure you can see everything for Users that can see everything"
-      (is (= [(default-item {:name "Birthday Card", :description nil, :model "card", :display "table"})
+      (is (= [(default-item {:name "Birthday Card", :description nil, :model "card",
+                             :collection_preview false, :display "table"})
               (collection-item "Crowberto Corv's Personal Collection")
               (default-item {:name "Dine & Dashboard", :description nil, :model "dashboard"})
               (default-item {:name "Electro-Magnetic Pulse", :model "pulse"})]
@@ -973,7 +978,8 @@
             (mt/with-temp* [PermissionsGroup           [group]
                             PermissionsGroupMembership [_ {:user_id (mt/user->id :rasta), :group_id (u/the-id group)}]]
               (perms/grant-permissions! group (perms/collection-read-path {:metabase.models.collection.root/is-root? true}))
-              (is (= [(default-item {:name "Birthday Card", :description nil, :model "card", :display "table"})
+              (is (= [(default-item {:name "Birthday Card", :description nil, :model "card",
+                                     :collection_preview false, :display "table"})
                       (default-item {:name "Dine & Dashboard", :description nil, :model "dashboard"})
                       (default-item {:name "Electro-Magnetic Pulse", :model "pulse"})
                       (collection-item "Rasta Toucan's Personal Collection")]
@@ -1037,6 +1043,7 @@
           (is (= [{:name                "Business Card"
                    :description         nil
                    :collection_position nil
+                   :collection_preview  true
                    :display             "table"
                    :moderated_status    nil
                    :entity_id           (:entity_id card)
diff --git a/test/metabase/events/revision_test.clj b/test/metabase/events/revision_test.clj
index 40085e50e2b213c3254c1020d0e2f2eb3252ec74..36f3bf600a18abc071917710b7ff4ed9e2cdea0d 100644
--- a/test/metabase/events/revision_test.clj
+++ b/test/metabase/events/revision_test.clj
@@ -20,6 +20,7 @@
   {:archived               false
    :collection_id          nil
    :collection_position    nil
+   :collection_preview     true
    :creator_id             (:creator_id card)
    :database_id            (mt/id)
    :dataset_query          (:dataset_query card)