If your add-on fields are not getting added to the cart or you find that required fields can be left empty, then please check the following:
You are using an AJAX add to cart button on the product page
This is a common reason for add-on fields not being added to the cart. By default, WooCommerce reloads the product page and runs some filters when the user adds a product to their cart.
AJAX add to cart buttons stop the page from reloading in order to provide a more seamless experience from the user. However, not all methods of creating AJAX add to cart buttons use the necessary WooCommerce filters.
This means that the Add-Ons plugin, and many other plugins, can’t add extra data to the product in the cart.
To test this, please disable the AJAX add to cart button and re-test. You might need to contact your theme developer to find out how to do this.
It’s important to note that AJAX on add to cart buttons is usually enabled by your theme or another plugin. It’s not the same as the WooCommerce setting ‘Enable AJAX add to cart buttons on archives’. Disabling this option will not fix your problem.
You are using another add-ons plugin
It’s possible that you’re using another plugin which doesn’t filter WooCommerce cart metadata correctly. Please try disabling other WooCommerce plugins (except WooCommerce) and re-testing.
You are using an instant payment button, e.g. Stripe Buy Now or PayPal Buy Now
Ensure you aren’t running a plugin or extension that allows your customer to add a product to their cart and check out immediately. As with the AJAX button issue above, some instant payment buttons don’t use the standard WooCommerce filters that are required to add metadata to the cart object.