Alejandro Rioja.
Scripts

How to Edit/Remove Woocomerce Checkout Fields

Alejandro Rioja
Alejandro Rioja
5 min read
TL;DR

Remove or customize WooCommerce checkout fields for free using a filter hook on the classic shortcode checkout, or use the block editor for the newer Cart/Checkout blocks — no paid plugin needed.

Free newsletter

Every Wednesday. 28,400+ operators. Zero fluff.

Table of contents

Open Table of contents

Which checkout are you using?

WooCommerce now ships two checkout experiences:

  1. Classic shortcode checkout — uses [woocommerce_checkout] on a page. This is what most stores set up before 2023 and still the default on many older installs.
  2. Block-based checkout (Cart and Checkout blocks) — uses Gutenberg blocks. WooCommerce has been pushing this as the default on fresh installs since version 8.x. Customization works differently here.

Check which one you have by editing your Checkout page in WordPress. If you see a Gutenberg block labeled “Checkout”, you’re on blocks. If you see a shortcode, you’re on classic.


Classic shortcode checkout: remove fields with a filter hook

This is the approach that works on any classic WooCommerce checkout.

Step 1 — Add the code

The cleanest way is to paste it into your child theme’s functions.php. If you don’t have a child theme, use a plugin like Code Snippets (free, widely used) instead of editing the parent theme directly.

php
/* WooCommerce: Remove Checkout Fields */
add_filter( 'woocommerce_checkout_fields', 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
    unset( $fields['billing']['billing_company'] );
    unset( $fields['billing']['billing_address_1'] );
    unset( $fields['billing']['billing_address_2'] );
    unset( $fields['billing']['billing_city'] );
    unset( $fields['billing']['billing_postcode'] );
    unset( $fields['billing']['billing_country'] );
    unset( $fields['billing']['billing_state'] );
    unset( $fields['billing']['billing_phone'] );
    unset( $fields['order']['order_comments'] );
    return $fields;
}

This keeps first name, last name, and email — the minimum you need to deliver a digital product and send a receipt.

Step 2 — Customize which fields you keep

The full list of field keys you can unset:

Field keyWhat it maps to
billing_first_nameFirst name
billing_last_nameLast name
billing_companyCompany name
billing_address_1Address line 1
billing_address_2Address line 2
billing_cityCity
billing_postcodePostcode / ZIP
billing_countryCountry
billing_stateState / Province
billing_phonePhone
billing_emailEmail (keep this one)
order_commentsOrder notes

Delete only the lines for fields you want to remove. Keep billing_first_name, billing_last_name, and billing_email for any digital product store.

Important: WooCommerce may still require some fields for tax calculation or payment gateway reasons depending on your setup. If a payment gateway (Stripe, PayPal, etc.) requires the billing address for fraud checks, removing it here can cause checkout errors. Test thoroughly after making changes.


Block-based checkout: use the editor, not code

If you’re on the block-based checkout (WooCommerce 8+ default), the woocommerce_checkout_fields filter does not work on block fields. WooCommerce intentionally separated the two systems.

For the block checkout, field visibility is controlled inside the WordPress editor:

  1. Open the Checkout page in the block editor.
  2. Click the Checkout block.
  3. In the right sidebar, look for field-level settings. As of early 2026, WooCommerce’s block checkout supports toggling fields like company name, address line 2, and phone directly in the block inspector — no code required.
  4. For fields not exposed in the inspector, WooCommerce provides the __experimentalBlockCheckoutFields API and the woocommerce_get_checkout_block_default_fields filter — but these are developer-level hooks that may change between WooCommerce versions. Check the WooCommerce developer docs for the current API (verify current).

For most store owners on blocks, the in-editor controls cover the common use case without touching code.


What about the Appearance > Customize path?

Older tutorials (including earlier versions of this post) pointed to Appearance > Customize > WooCommerce > Checkout. That Customizer panel was deprecated and removed in WooCommerce as the codebase shifted toward block-based settings. If you don’t see it, that’s expected — use the code approach above for classic, or the block editor for blocks.


WooCommerce Checkout Fields — 2026 FAQ

Does removing billing fields break tax calculation?

It can. If your store sells physical goods or operates in jurisdictions where tax rates depend on location, removing address fields means WooCommerce can’t calculate tax correctly. For digital products with no location-based tax, it’s safe. Always test end-to-end with a real (or test-mode) transaction after any field changes.

Will the woocommerce_checkout_fields filter work with the block checkout?

No. That filter only applies to the classic shortcode checkout ([woocommerce_checkout]). The block-based Cart and Checkout blocks introduced in WooCommerce 8+ use a different rendering path. Use the block editor’s inspector controls or the block-specific PHP filters for those.

Do I need a plugin to remove checkout fields?

Not for the classic checkout — a few lines in functions.php or a free snippet plugin handles it. For the block checkout, the editor itself exposes the most common field toggles. You don’t need to pay for a field editor plugin for basic use cases.

What’s the minimum set of fields for a digital product store?

First name, last name, and email cover the practical minimum: you can address the customer, send the receipt, and deliver the download link. Some payment gateways may require a billing country for compliance — check your gateway’s requirements before removing it.

Related reading:


The shorter version

If you’re reading this because the workflow it describes is eating your week, that’s the kind of loop I build AI agents for. Two build slots open at a time.

Updated for May 2026

A short note from May 2026: the workflow this post describes was checked against the current state of the underlying tools and platforms. Where specific tools, UIs, or features have evolved, the structural advice still holds — the implementation will look slightly different in 2026. If you hit a step that doesn’t match what you see on screen, that’s likely a UI refresh, not a fundamental change in approach. Drop a note via the contact form and I’ll patch it explicitly.

Keep reading

Get the AI playbook in your inbox

Every Wednesday. 28,400+ operators. Zero fluff.

↵ to see all results esc esc to close