Currently, Abandoned carts are stored in their own table with the products bundled as serialized data. This makes it extremely difficult to run simple reports like "tell me about all the abandoned carts that include product X". A much better approach would be using WooCommerce's new HPOS tables wp_wc_orders, wp_wc_orders_meta, wp_wc_order_product_lookup, etc... All that would be needed is storing the orders with a custom status like wc-abandoned or aw-abandoned . Then all the same WC Core API functions could be used to more efficiently query these abandoned carts instead of massive amounts of fragile custom code deserializing carts one by one.