FunnelKit
FunnelKitBlogs

How to Remove WooCommerce Checkout Fields (Block & Classic)

Updated:  Jun 22, 2026
Written by: 
Author: Editorial Team
Editorial Team
Author: Editorial Team Editorial Team

The FunnelKit Editorial Team is a group of WooCommerce experts with 10+ years of combined experience. We create actionable guides based on hands-on testing, industry research, and user feedback to help eCommerce businesses grow.

How to Remove WooCommerce Checkout Fields (Block & Classic)

Removing checkout fields in WooCommerce is one of the fastest ways to simplify your store’s checkout and reduce cart abandonment.

Every extra field you ask customers to fill in adds friction and gives them another reason to leave.

But there's a catch. WooCommerce now ships two different checkouts, the classic shortcode checkout and the newer Checkout Block. The method you need depends on which one your store uses.

A code snippet that works perfectly on the classic checkout often has no effect on the Checkout Block. This is the single most common reason store owners get stuck.

In this guide, we will show you how to remove checkout fields in WooCommerce without any code using a WordPress plugin, with a custom PHP method for the classic checkout, and the correct way to remove fields on the newer Checkout Block.

We will also share which fields are safe to remove and how to fix the fields that refuse to disappear or keep throwing a "required" error.

Quick Answer (The 3 Fastest Methods)

1. No code: Toggle off Company, Address line 2, and Phone directly in the block editor. Or use a checkout manager plugin for better flexibility and remove any checkout field effortlessly.

2. Classic checkout (PHP): Unset fields with the woocommerce_checkout_fields filter in a code-snippets plugin.

3. Checkout Block (PHP): The old woocommerce_checkout_fields filter does not work on the block. Use the woocommerce_get_country_locale filter to hide/optional fields, or a visual field editor for a no-code route.

Which WooCommerce Checkout Fields Can You Remove?

Before jumping into the methods, let's understand exactly which fields WooCommerce allows you to remove and which ones you should keep.

Here is a breakdown of every default checkout field, its field key, and our recommendation for when to remove it:

Billing Fields:

FieldField KeyShould You Remove?
First Namebilling_first_nameNo. It's required for order processing
Last Namebilling_last_nameNo, required for order processing
Company Namebilling_companyYes, safe to remove for online B2C stores
Countrybilling_countryOnly for domestic-only stores
Street Addressbilling_address_1Only for digital product stores
Address Line 2billing_address_2Yes, safe to remove
Citybilling_cityOnly for digital product stores
State / Countybilling_stateOnly for digital product stores
Postcode / ZIPbilling_postcodeOnly for digital product stores (required by some payment gateways)
Phonebilling_phoneYes, safe to remove unless the field is required for shipping notifications
Emailbilling_emailNo, required for order confirmation

Shipping Fields:

FieldField KeyShould You Remove?
Shipping Companyshipping_companyYes, safe to remove
Shipping Address 2shipping_address_2Yes, safe to remove

Additional Fields:

FieldField KeyShould You Remove?
Order Notesorder_commentsYes, safe to remove

The field keys above are used by the classic woocommerce_checkout_fields filter.

On the Checkout Block, address fields are controlled through the country locale system instead (address_1, address_2, city, state, postcode, phone, company), and three fields, including Company, Address 2, and Phone, have their own editor toggles. We've covered it later in this post.

Before you remove a field, ask does my payment gateway need it? Stripe and many card processors use postcode and country to verify addresses (AVS) and detect fraud.

Tax engines (including WooCommerce Tax) need country, state, and postcode to calculate rates. When in doubt, make a field optional rather than removing it and always place one real test order afterward.

Method 1: Remove Fields with a Visual Field Editor (No Code)

There are two no-code approaches to removing checkout fields from your WooCommerce store.

The first uses the built-in WooCommerce Customizer, which is limited but requires no plugin. The second uses a plugin to manage full checkout fields.

Option A: Use the WooCommerce Theme Customizer (Limited)

WooCommerce includes a built-in option to hide three specific checkout fields without any code or plugins. Navigate to Appearance > Customize > WooCommerce > Checkout in your WordPress dashboard.

Customizing theme for removing checkout fields

You will see dropdown options for Company name, Address line 2, and Phone. Set each one to 'Hidden' and click Publish.

Checkout fields in the WooCommerce

This method is quick, but it only works for those three fields.

You cannot use it to disable or remove other fields, such as order notes, state, city, or postcode. If you need to remove any fields beyond those three, use a plugin or custom code.

There are other checkout field editors for WooCommerce (Themehigh) and Flexible Checkout Fields (WPDesk) that let you add, edit, hide, reorder, and remove fields from a drag-and-drop table.

It also supports both classic and Block checkout (you select the active checkout type above the field table). These are the lowest-friction options for non-developers and the first thing to reach for if you don’t want to touch PHP.

Option B: Use WooCommerce Checkout Customizer Plugin (Full Control)

To remove checkout fields in WooCommerce without writing any code, we will use FunnelKit Funnel Builder.

FunnelKit replaces the default WooCommerce checkout with a fully customizable checkout page where you can add, remove, rearrange, and edit any field using a visual drag-and-drop editor.

It offers a free version that includes checkout page templates and field editing.

The Pro plan starts at $99.50/year and includes advanced features such as multi-step checkout layouts, Google address autocomplete, express checkout buttons, and more.

Follow the step-by-step instructions below to remove checkout fields using FunnelKit Funnel Builder.

Step 1: Create the store checkout

First, create a store checkout page by navigating to FunnelKit > Store Checkout and clicking on the 'Create Store Checkout' button.

Create store checkout

In the next step, choose your page builder and the template for your checkout page.

Note: FunenlKit Funnel Builder is compatible with all the popular page builders, such as Elementor, Divi, Bricks, Gutenberg, and Oxygen.

We’re selecting the “LiveWire” template and editing it with Elementor.

Import a template for your woocommerce checkout page

Check the template layout, such as the number of steps you want on your checkout page and the design of the other pages.

After checking, click on the 'Import This Template' button.

select the number of checkout steps and click on 'import this template' button

Provide the store checkout template name, then click the 'Done' button.

Provide the name to the checkout template

Step 2: Open the checkout field editor

Click on the checkout page to start customizing it.

click on the checkout page to start customizing it

Scroll down the Checkout Form Fields.

Choose which fields you want to add or remove from your WooCommerce checkout form.

Scroll down to the checkout form fields section

Step 3: Remove the unnecessary fields from the checkout page

From here, you can remove any fields you want. Clicking the cross icon removes a field from the checkout form.

Suppose you sell digital products such as courses and subscriptions, and you want to remove the shipping address field from your checkout form.

To do so, just click on the cross icon.

Remove Checkout Fields in WooCommerce such as shipping address

You can see that the shipping address field is removed from our checkout form.

Remove specific checkout fields inside the billing address

To go one step further, you can remove additional checkout fields if you don’t want them included in the billing address. 

To do that, click the billing address, then toggle any fields on or off using the eye icon.

Note: If you want, you can make optional fields collapsible instead of removing them.

Hit 'Update' once you’re done.

Enable the checkout form fields inside the billing address

Step 4: Customize the remaining checkout fields

Now, click on the Edit Template button to customize the checkout page.

edit your checkout template with Elementor

On the Elementor panel, you’ll get editing options for each section. 

It means you can only adjust the field size from full to half (one-half).

Edit your woocommerce checkout form fields with Elementor

Make sure to save the changes to update your checkout page.

Activate your store checkout by clicking on the 'Enable Store Checkout' button.

Activate your store checkout

To test, go to any product page, add the item to your cart, proceed to checkout, and place a test order.

Verify that the removed fields no longer appear and that the checkout flow works smoothly from start to finish.

Remove Checkout Fields in WooCommerce

Test on both the desktop and mobile devices. On mobile, confirm that the checkout form fits well on smaller screens and that customers can complete the entire form without excessive scrolling.

Guide: Here are a few resources that will take your checkout experience to the next level:

Method 2: Remove Fields with PHP (Classic or Shortcode Checkout)

If your checkout uses the [woocommerce_checkout] shortcode, the woocommerce_checkout_fields filter is the standard way to remove fields.

If you prefer to remove checkout fields programmatically, you can use the woocommerce_checkout_fields filter hook.

The safest way is not to edit your parent theme's functions.php because those edits are wiped on the next theme update and a syntax error can lock you out of your site.

Instead, you can install a free code-snippets plugin (such as WPCode or Code Snippets) and add the snippet there, or use a child theme. A snippets plugin survives theme updates and lets you toggle code off instantly if something breaks.

The minimal snippet (and what it does)

This removes the billing phone and company fields from the classic checkout:

add_filter( 'woocommerce_checkout_fields', 'custom_remove_checkout_fields' );

function custom_remove_checkout_fields( $fields ) {
	unset( $fields['billing']['billing_phone'] );
	unset( $fields['billing']['billing_company'] );
	return $fields;
}

WooCommerce passes the full array of checkout fields into the filter; unset() deletes the keys you name, and returning the array tells WooCommerce to render the rest.

To remove a different field, swap in any key from the table above (e.g. $fields['shipping']['shipping_address_2']).

Remove only the order notes (one-liner + heading)

The “Additional information” heading and the order-notes box are controlled separately. Use both lines to remove the field and its heading:

// Removes the "Additional information" heading
add_filter( 'woocommerce_enable_order_notes_field', '__return_false', 9999 );

// Removes the order notes textarea
add_filter( 'woocommerce_checkout_fields', 'custom_remove_order_notes' );
function custom_remove_order_notes( $fields ) {
	unset( $fields['order']['order_comments'] );
	return $fields;
}

The 9999 priority on the first filter matters because themes and other plugins often re-enable the notes field, so running late ensures your change wins.

The priority fix for fields that won't hide

If a removed field still appears on the classic checkout, the most common cause is filter priority: another plugin or your theme re-adds the field after your code runs.

Force your filter to run last by setting a high priority:

add_filter( 'woocommerce_checkout_fields', 'custom_remove_checkout_fields', 9999 );

This single change (the 9999) fixes the most common "I removed billing_address_2 / billing_first_name and it’s still there" complaint.

If a field is still required after you make it optional, see the troubleshooting section.

Make a field optional instead of removing it

For fields a gateway or tax engine needs (postcode, phone), keep them but drop the “required” flag so they stop blocking checkout:

add_filter( 'woocommerce_checkout_fields', 'make_phone_optional' );
function make_phone_optional( $fields ) {
	$fields['billing']['billing_phone']['required'] = false;
	return $fields;
}

Method 3: Remove Fields on the WooCommerce Checkout Block

The classic woocommerce_checkout_fields filter does not work on the Checkout Block.

WooCommerce intentionally locked the block's fields behind a curated extensibility path because gateways, tax, and shipping plugins all read those fields.

Here's how to actually remove them.

Option A: Remove address fields with woocommerce_get_country_locale

This example removes shipping/address fields for all countries. Only do this if you sell digital or virtual goods that need no shipping address:

add_filter( 'woocommerce_get_country_locale', function ( $locales ) {
	foreach ( $locales as $country => $locale ) {
		$fields_to_hide = array( 'address_1', 'address_2', 'city', 'state', 'postcode' );
		foreach ( $fields_to_hide as $field ) {
			$locales[ $country ][ $field ]['required'] = false;
			$locales[ $country ][ $field ]['hidden']   = true;
		}
	}
	return $locales;
} );

Important caveats (these trip up most people):

  • Address line 2 auto-hides whenever Address line 1 is hidden. You don't need to target it separately, but it's listed above for completeness.
  • This applies to every country. If you add a specific country to a per-country version of this loop, WooCommerce has a known quirk: targeting a single country can cause all fields to reappear, so the all-countries loop above is the reliable pattern for now.
  • To remove fields for one country only (example, you sell only domestically), target that country's key directly: $locales['US']['postcode']['hidden'] = true;

Option C: Conditionally remove block fields for virtual carts

To strip address fields only when the cart is all-virtual (digital products, no shipping needed) while keeping them for physical orders, add a cart check:

add_filter( 'woocommerce_get_country_locale', function ( $locales ) {
	$cart = WC()->cart;
	if ( ! $cart || ! $cart->needs_shipping() ) {
		foreach ( $locales as $country => $locale ) {
			foreach ( array( 'address_1', 'city', 'state', 'postcode' ) as $field ) {
				$locales[ $country ][ $field ]['required'] = false;
				$locales[ $country ][ $field ]['hidden']   = true;
			}
		}
	}
	return $locales;
} );

needs_shipping() returns false when all items in the cart are virtual, so physical orders retain their full address form.

Pair locale changes with the default locale

If a field stays required after you edit the locale, also update the default locale so no country falls back to the original requirement:

add_filter( 'woocommerce_get_country_locale_default', function ( $locale ) {
	$locale['postcode']['required'] = false;
	return $locale;
} );

7 Best Practices to Simplify Your WooCommerce Checkout Form

Let's look at best practices for striking the right balance by showing only the necessary checkout fields.

1. Only ask for information you will actually use

Before removing or keeping any field, ask yourself whether you need that data to process the order, fulfill shipping, or communicate with the customer.

If a checkout field does not serve a clear purpose, remove it. For example, most B2C stores do not need a company name field.

2. Use optional fields clearly

According to Baymard Institute, only 14% of ecommerce websites explicitly mark both required and optional fields.

When optional fields are unlabeled, customers often assume they are required, which ultimately slows the checkout process.

If a field is truly optional, either label it clearly or remove it altogether to reduce perceived effort.

3. Place the email field at the top of the form

Collecting the email address enables cart recovery workflows. So your number 1 priority should be to place the email field at the top of your checkout form.

If a customer abandons the checkout after entering their email, you can send a follow-up email to bring them back and directly recover lost sales.

4. Test your checkout after every change

Once you remove any unnecessary fields, you should thoroughly test the checkout process to ensure it works and doesn't show any errors.

When mobile checkout has consistently higher abandonment rates than desktop checkout, it's crucial to ensure everything works smoothly on mobile as well.

After removing fields, verify that the form layout looks clean on smaller screens, fields are easy to tap, and the overall flow requires minimal scrolling.

5. Use address autocomplete to reduce the number of visible fields

Instead of removing address fields entirely, consider enabling Google address autocomplete on your checkout page.

This allows shoppers to type a few characters and select their full address from a dropdown, which automatically fills in the city, state, postcode, and country.

Auto-fill address certainly reduces effort by capturing accurate shipping data.

6. Use custom fields only if they genuinely add value

Add custom fields only when they enhance the checkout experience or are essential for order fulfillment.

For example, special delivery instructions could be helpful, but unnecessary questions can slow down the process.

Stick to the checkout fields that serve a clear purpose and avoid adding extra steps.

7. Regularly review and update the checkout fields based on user feedback

Customer feedback is invaluable for fine-tuning your checkout process.

For example, if customers frequently abandon checkout after reaching optional fields such as "Company Name" or "Address Line 2", consider removing or hiding these fields to keep things simple.

Reviewing user interactions helps you identify which fields may be unnecessary, allowing you to adjust and streamline the form to create a smoother experience.

Test the entire checkout flow with both valid and invalid input to catch any issues.

Removed a Checkout Field, But It’s Still Showing or Still Required? (Troubleshooting & Fix Guide)

This is the single most common complaint on Reddit, the WooCommerce.com forums, and WordPress.org and it almost always traces to one of five causes.

Let's work through them in order.

1. Block-vs-classic mismatch (the #1 cause)

If you used the woocommerce_checkout_fields filter and nothing changed, you’re almost certainly on the Checkout Block, where that filter is ignored. Switch to the Method 3 block toggles or the woocommerce_get_country_locale filter.

To confirm which checkout you have, open Pages → Checkout and look for a Checkout block vs. the [woocommerce_checkout] shortcode.

2. Low filter priority

Another plugin or your theme re-adds the field after your code runs. Add a high priority (9999) to your filter so it executes last and the priority gets fixed (demonstrated in the above method).

3. Hidden with CSS but still validating

Hiding a field with display: none removes it visually, but WooCommerce still validates it on the server side, so checkout fails with "this is a required field".

You must either unset it (classic) / set it hidden in the locale (block), or set ['required'] = false. CSS alone is not enough.

4. Theme or plugin conflict

Temporarily switch to a default theme (Storefront or Twenty Twenty-Five) and disable all plugins except WooCommerce, then re-test your snippet.

If it works, reactivate one at a time to find the culprit.

5. Field still required after removal

If you removed a field but the gateway or tax engine still expects it, you may see a silent failure.

For postcode/country specifically, prefer making it optional to remove it (see the optional snippet above), and pair classic-checkout changes with woocommerce_get_country_locale so the country locale matches your field change.

Note: If checkout fields came back after a WooCommerce or theme update, your code must have been inside the parent theme’s functions.php or when an update resets the block settings. Move your snippet into a code-snippets plugin or child theme so it persists, and re-check the block toggles after major WooCommerce releases.

Frequently Asked Questions About Removing Checkout Fields in WooCommerce

Why should I remove unnecessary checkout fields from my WooCommerce store?

You should remove unnecessary checkout fields from your WooCommerce store to simplify the checkout process, which leads to higher conversion rates and a better shopping experience. Here's how:

  1. A clutter-free checkout reduces distractions and makes it easier for customers to complete their purchase.
  2. Fewer fields mean a faster checkout process, which helps reduce drop-offs.
  3. If you're selling digital products, fields like shipping address or company name are often unnecessary.
  4. A complex checkout is one of the top reasons users abandon carts. A simplified form helps prevent this.
  5. A clean, intuitive checkout flow keeps customers happy and encourages repeat purchases.
Why is my code snippet not removing checkout fields?

This is one of the most common frustrations reported by WooCommerce users on Reddit and forums. The most likely cause is that your checkout page uses the WooCommerce Checkout Block instead of the classic shortcode. PHP filters such as woocommerce_checkout_fields only work with the shortcode-based checkout ([woocommerce_checkout]).

Try creating a new page, adding the [woocommerce_checkout] shortcode, and setting it as your checkout page under WooCommerce settings.

Another common cause is a theme or plugin conflict that overrides your filter. Temporarily switch to a default theme, such as Storefront, and disable other plugins to isolate the issue.

Which checkout fields should I never remove?

Never remove fields that are required for payment processing or order fulfillment.

Email is essential for sending order confirmations. First name and last name are needed for the billing address. If you ship physical products, you need at a minimum the street address, city, country, and postcode.

Removing these will cause payment gateway errors or failed deliveries.

Can I hide checkout fields with CSS instead of removing them?

You can use display: none; in your CSS to visually hide your checkout fields, but we do not recommend this approach.

Hidden fields still load in the HTML, so they can still trigger validation errors if required. Additionally, they also remain visible in the page source code.

Using PHP or a plugin to remove fields from the WooCommerce checkout is a cleaner, more reliable solution.

Can I add custom checkout fields programmatically after removing the defaults?

Yes, you can add custom fields to the WooCommerce checkout programmatically using the same woocommerce_checkout_fields filter.

Add new fields to the $fields array with properties like type, label, placeholder, required, and priority.

Plugins like FunnelKit and Flexible Checkout Fields make this easier with visual editors that support 14+ custom field types, including text, dropdown, file upload, radio, checkbox, date picker, and multi-select.

How can I revert my changes to the checkout field?

If you need to undo your changes, simply remove the code snippet from your functions.php file or deactivate it in your code snippets plugin.

WooCommerce will then automatically restore the default checkout fields on the next page load. This is one of the benefits of using filter hooks rather than editing WooCommerce core files directly.

Does removing checkout fields work with Elementor or other page builders?

Yes, if you are using a plugin like FunnelKit that integrates with Elementor, Divi, Bricks, and Gutenberg. Its built-in checkout field editor works independently of the page builder, so you can design your checkout with Elementor and still manage fields through FunnelKit’s drag-and-drop interface.

PHP code snippets work with any page builder.

How can I conditionally remove checkout fields in classic checkout?

Beyond all-virtual carts (covered above for the block), here are the most-requested conditional rules for classic checkout.

Remove billing fields when the cart is all digital/virtual:

add_filter( 'woocommerce_checkout_fields', 'remove_fields_for_virtual_cart' );
function remove_fields_for_virtual_cart( $fields ) {
	if ( WC()->cart && ! WC()->cart->needs_shipping() ) {
		unset( $fields['billing']['billing_address_1'] );
		unset( $fields['billing']['billing_city'] );
		unset( $fields['billing']['billing_postcode'] );
	}
	return $fields;
}

Remove a field when a specific product category is in the cart:

add_filter( 'woocommerce_checkout_fields', 'remove_field_for_category' );
function remove_field_for_category( $fields ) {
	if ( WC()->cart ) {
		foreach ( WC()->cart->get_cart() as $item ) {
			if ( has_term( 'downloads', 'product_cat', $item['product_id'] ) ) {
				unset( $fields['billing']['billing_company'] );
				break;
			}
		}
	}
	return $fields;
}

Swap 'downloads' for your category slug. The same pattern works by product ID ($item['product_id'] == 123).

Hiding fields by payment method is best handled client-side, because the gateway is chosen after the address loads. Show/hide with JavaScript on the payment_method_selected event rather than unsetting server-side, so you don’t break validation for the other gateways.

Stop Losing Sales to Unnecessary WooCommerce Checkout Fields!

Removing checkout fields in WooCommerce comes down to one question: block or classic?

On the classic checkout, the woocommerce_checkout_fields filter (with a priority of 9999) does the job. On the Block checkout, reach for the field toggles or the woocommerce_get_country_locale filter instead, and lean on conditional logic for virtual carts.

Whichever route you take, make risky fields optional rather than deleting them, and place one real test order before you call it done.

If you’d rather edit fields visually and rebuild your checkout for conversions at the same time, FunnelKit Funnel Builder gives you a drag-and-drop field editor and prebuilt, optimized checkout templates, no code required.

So why wait? Start streamlining your WooCommerce checkout today for a smoother, more profitable customer journey.

Related Blogs
WooCommerce Cross Sell - FunnelKit

Editorial Team

How to Cross-Sell Products in WooCommerce to Boost Sales and AOV (2026 Guide)

WooCommerce ships with a built-in cross-sell field, but it only fires on the cart page, which covers only a fraction of where shoppers actually decide to add more to their...

WooCommerce Remove Address from Checkout - FunnelKit

Editorial Team

How to Remove the Address Field from WooCommerce Checkout

Removing the address field from WooCommerce checkout means taking out the billing and shipping address lines that your customers do not actually need to fill in. For stores selling digital...

Multiple Payment Gateways WooCommerce - FunnelKit

Editorial Team

How to Offer Multiple Payment Gateways in WooCommerce 

Do you want to create a seamless checkout experience in your WooCommerce store and reduce cart abandonment? One of the simplest yet most effective ways to do that is by...

Published by: Editorial Team
The Editorial Team at FunnelKit (formerly WooFunnels) is a passionate group of writers and copy editors. We create well-researched posts on topics such as WordPress automation, sales funnels, online course creation, and more. We aim to deliver content that is interesting and actionable.
Thank you for reading. Stay connected with us on the Facebook group, X (Twitter), LinkedIn and YouTube channel for more tips to help grow your business.
Join Over 40,300+ Sellers Increasing Profits with FunnelKit! 🚀
Join FunnelKit
FunnelKit Checkout gives you beautiful, ready-to-use WooCommerce checkout templates, embed order forms, one-page checkouts, and more.
Join FunnelKit
Related Blogs
WooCommerce Cross Sell - FunnelKit

Editorial Team

How to Cross-Sell Products in WooCommerce to Boost Sales and AOV (2026 Guide)

WooCommerce ships with a built-in cross-sell field, but it only fires on the cart page, which covers only a fraction of where shoppers actually decide to add more to their...

WooCommerce Remove Address from Checkout - FunnelKit

Editorial Team

How to Remove the Address Field from WooCommerce Checkout

Removing the address field from WooCommerce checkout means taking out the billing and shipping address lines that your customers do not actually need to fill in. For stores selling digital...

Multiple Payment Gateways WooCommerce - FunnelKit

Editorial Team

How to Offer Multiple Payment Gateways in WooCommerce 

Do you want to create a seamless checkout experience in your WooCommerce store and reduce cart abandonment? One of the simplest yet most effective ways to do that is by...

Ready to Transform Your Store?
Join 40,300+ successful store owners who trust FunnelKit to power their businesses.
Conversion Optimized Checkout Pages
Increase Revenue with Smart Upsells
Capture Emails & Recover Abandoned Carts
Automate Winbacks & Repeat Sales
986+ 5 star reviews on WordPress.org
Transform your store to power your business with FunnelKit
🚀 Maximize Your Profit with FunnelKit – Highest Rated with 986+ 5-Star Reviews
Get Started