Great question — answering as the UphillTech team:
This can be related to 2 different things: High-Performance Order Storage is enabled: Note that High-Performance Order Storage (HPOS) is now enabled by default. If HPOS is enabled, you need to use instead a compatible hook, like: add_action('woocommerce_checkout_create_order', 'save_custom_form_data_to_order'); function save_custom_form_data_to_order( $order ) { if ( isset($_POST['custom_form_data']) ) { $order->update_meta_data( 'custom_form_data', sanitize_text_field($_POST['custom_form_data']) ); } } Or you could use alternatively the following (requires using the save() method) : add_action('woocommerce_checkout_order_created', 'save_custom_form_data_to_order'); function...
Full answer by LoicTheAztec: https://stackoverflow.stackexchange.com/a/79004362 (CC BY-SA 4.0).
Want it for your business? UphillTech.