How Do I Add or Remove WooCommerce Checkout Fields?
Two Ways to Change WooCommerce Checkout Fields
The block-based checkout (default in current WooCommerce versions) exposes field visibility and basic configuration directly in the checkout block's editor settings, making common adjustments accessible without touching code. The classic shortcode checkout, or any customization beyond what the block editor exposes, still relies on the woocommerce_checkout_fields filter, which provides full control over every field's presence, order, label, and validation.
add_filter( 'woocommerce_checkout_fields', function( $fields ) {
unset( $fields['billing']['billing_company'] );
$fields['billing']['billing_phone']['required'] = true;
return $fields;
} );
Things Worth Getting Right
- Removing a field that a plugin or gateway relies on (some payment methods or shipping plugins expect specific billing fields to be present) can break other functionality, so it's worth confirming a field is genuinely unused before removing it.
- Custom fields need explicit handling to actually save and display on the order — simply adding a field to the checkout form isn't enough on its own; it needs to be saved as order meta and shown wherever order details are displayed.
- A theme or checkout customization plugin may already be modifying these fields, so check for a conflict before adding a second, overlapping customization.
- Test the full order flow after any field change, including emails and the admin order screen, not just the checkout page itself.
Implementing Field Changes Safely
- Check whether the block checkout editor already supports the needed change before writing any code.
- For custom fields or classic checkout, use the
woocommerce_checkout_fieldsfilter and ensure any new field is properly saved and displayed on orders and emails. - Test the complete order flow end to end after any change, not just the checkout page in isolation.
Need custom checkout fields built and properly integrated? See custom WooCommerce development.