How to Remove WooCommerce Checkout Fields

Visual representation of the WooCommerce checkout conversion funnel, detailing each step from product selection to purchase completion.
Visual representation of the WooCommerce checkout conversion funnel, detailing each step from product selection to purchase completion.

Introduction

Did you know that 93% of buyers reach the checkout page but never complete their order? One of the key reasons behind this is the overload of fields like company name, address line 1, address line 2, and more—fields that often aren’t even necessary.

WooCommerce changed the way WordPress was once used, with its e-commerce functionality. It reshapes WordPress completely for e-commerce. But one of the WooCommerce drawbacks is it doesn’t come with a pre-built checkout field editor.

Visual representation of the WooCommerce checkout conversion funnel, detailing each step from product selection to purchase completion.

You can remove WooCommerce checkout fields by using a plugin or using custom code. We will discuss both. Almost all of my clients want this functionality if they have an e-commerce website.

The easiest method is using a plugin. All you have to do is install it and set up the configuration.

Why Remove Unnecessary Checkout Fields in WooCommerce?

As told earlier, 7 out of 10 buyers reach the checkout page but don’t complete the order. Our goal is to make that 7 out of 10 into 5 out of 10 or less.

It is true that customers don’t have much time. There are lots of unnecessary things like the company name, address line 2, and order notes that can distract the buyer from purchasing the product.

By implementing the steps we will discuss, buyers can complete checkout faster, have better UX and higher conversion, and it can even have an impact on SEO.

One of my client increase conversion by 20% for Removing WooCommerce Checkout Fields.

Backup Your Site First (Important!)

What most people avoid or are not really interested in is making a backup first. It is really important to make a backup before making any changes, or it can make the website risky.

Recommended using UpdraftPlus to make a backup. I really like the UpdraftPlus simpiness and all of that. I personally use it. If you have any trouble making a backup with this plugin follow this tutorial.

  • Open your WordPress admin.
  • Navigate to Plugins > Add New, and search for “UpdraftPlus”.
  • Click install and activate.
  • Go to the plugin configuration, then click Backup Now.

In this way, if anything bad happens, you can always get the backup.

Method 1: Using a Plugin

We will use the WooCommerce checkout field editor plugin. As the name suggests, it is a plugin used for editing WooCommerce checkout fields.

Step 1: Installation

  • Open your WordPress admin.
  • Navigate to Plugins > Add New, and search for “Checkout Field Editor (Checkout Manager) for WooCommerce”.
  • Click install then activate.
Dashboard screen displaying website settings, including options for customization and configuration.

Step 2: Plugin Configuration

Navigate to WooCommerce > Checkout Form.

From there, you can manage your checkout fields:

  • From there you can select a field, click Deactivate, and Delete to delete the item completely.
  • You can also add new fields: select the type, name, label, placeholder, etc., to add that item.
  • You can also make some fields required or non-required. Click Edit, and from there you can decide if it is required or not required.
Screenshot of the new gold account page in WordPress, showcasing features and layout for user account management.

Method 2: Remove WooCommerce Checkout Fields Using Custom Code

This method is for people who do not want to use many plugins on their website and for technical users.

Go to your functions.php and paste the code below. If you update your theme, this code will be gone if you don’t have a child theme. If you want to make a child theme, follow this tutorial.

Alternatively, you can use a code snippet plugin like WPCode, which I personally use.

Here is the code:

/**
 * Customize WooCommerce checkout fields based on product types in the cart.
 */
add_filter('woocommerce_checkout_fields', 'intelligent_customize_checkout_fields');

function intelligent_customize_checkout_fields($fields) {
    // Fields to remove for Non-Virtual and Non-Downloadable products
    $non_virtual_remove = [
        'billing' => ['billing_company', 'billing_phone'],
        'shipping' => ['shipping_company'],
        'order' => ['order_comments']
    ];

    // Fields to remove for Virtual products
    $virtual_remove = [
        'billing' => [
            'billing_company', 'billing_address_1', 'billing_address_2',
            'billing_postcode', 'billing_country', 'billing_state', 'billing_city'
        ],
        'shipping' => [
            'shipping_company', 'shipping_address_1', 'shipping_address_2',
            'shipping_postcode', 'shipping_country', 'shipping_state', 'shipping_city', 'shipping_first_name', 'shipping_last_name'
        ],
        'order' => ['order_comments']
    ];

    // Fields to remove for Downloadable products
    $downloadable_remove = [
        'billing' => [
            'billing_company', 'billing_address_1', 'billing_address_2',
            'billing_postcode', 'billing_country', 'billing_state', 'billing_city', 'billing_phone'
        ],
        'shipping' => [
            'shipping_company', 'shipping_address_1', 'shipping_address_2',
            'shipping_postcode', 'shipping_country', 'shipping_state', 'shipping_city', 'shipping_first_name', 'shipping_last_name'
        ],
        'order' => ['order_comments']
    ];

    // Determine the product types in the cart
    $has_virtual = false;
    $has_downloadable = false;
    $has_non_virtual = false;

    foreach (WC()->cart->get_cart() as $cart_item) {
        $product = $cart_item['data'];
        if ($product->is_virtual()) {
            $has_virtual = true;
        }
        if ($product->is_downloadable()) {
            $has_downloadable = true;
        }
        if (!$product->is_virtual() && !$product->is_downloadable()) {
            $has_non_virtual = true;
        }
    }

    // Apply field removal logic based on cart contents
    if ($has_non_virtual) {
        foreach ($non_virtual_remove as $section => $fields_to_remove) {
            foreach ($fields_to_remove as $field) {
                unset($fields[$section][$field]);
            }
        }
    }

    if ($has_virtual) {
        foreach ($virtual_remove as $section => $fields_to_remove) {
            foreach ($fields_to_remove as $field) {
                unset($fields[$section][$field]);
            }
        }
    }

    if ($has_downloadable) {
        foreach ($downloadable_remove as $section => $fields_to_remove) {
            foreach ($fields_to_remove as $field) {
                unset($fields[$section][$field]);
            }
        }
    }

    // Disable order notes field for virtual or downloadable products
    if ($has_virtual || $has_downloadable) {
        add_filter('woocommerce_enable_order_notes_field', '__return_false');
    }

    return $fields;
}

// Remove shipping and additional fields sections for Virtual or Downloadable products
add_action('woocommerce_before_checkout_form', 'hide_unnecessary_sections', 10);

function hide_unnecessary_sections() {
    $has_virtual = false;
    $has_downloadable = false;

    // Check cart contents for product types
    foreach (WC()->cart->get_cart() as $cart_item) {
        $product = $cart_item['data'];
        if ($product->is_virtual()) {
            $has_virtual = true;
        }
        if ($product->is_downloadable()) {
            $has_downloadable = true;
        }
    }

    // Conditionally hide sections
    if ($has_virtual || $has_downloadable) {
        ?>
        <style>
            .woocommerce-shipping-fields,
            .woocommerce-additional-fields {
                display: none !important;
            }
        </style>
        <?php
    }
}

I found this code from Web Squadron – big shout-out to him!

Quick Explanation of the Code:

This code helps you remove specific checkout fields depending on the type of product in the cart:

  • If it’s a physical product, it will remove fields like company name and order notes.
  • If it’s a virtual product, it will remove unnecessary address and shipping fields.
  • If it’s a downloadable product, it removes even more fields because you don’t need shipping or billing details.
Screenshot of an online checkout page displaying items, total cost, and payment options for a seamless purchasing experience. after implementing the code

Basically, the code checks what kind of product the user is buying and then automatically removes checkout fields that are not needed for that specific product type. This gives the buyer a cleaner and faster checkout experience.

The key point of using this code is the plugin cannot specifically edit checkout fields for digital products, downloadable products, etc. But with this code, I have set it in a way that adjusts based on product type.

How to Move or Reorder Checkout Fields (Bonus Tip)

If you want to move or reorder the WooCommerce checkout fields based on product type, then you need to place your reorder code inside the function that checks for product type. Below is an example based on our main code:

add_filter('woocommerce_checkout_fields', 'intelligent_customize_checkout_fields');

function intelligent_customize_checkout_fields($fields) {
    // Reorder fields: Move phone to top, email second
    $fields['billing']['billing_phone']['priority'] = 10;
    $fields['billing']['billing_email']['priority'] = 20;

    // Then continue with your remove logic...
    // Fields to remove for Non-Virtual and Non-Downloadable products
    $non_virtual_remove = [
        'billing' => ['billing_company', 'billing_phone'],
        'shipping' => ['shipping_company'],
        'order' => ['order_comments']
    ];

    // (Other code remains the same...)

    return $fields;
}

This allows you to reorder the fields dynamically while also removing unnecessary ones based on the product type. Keep the reorder lines at the top inside the function.

Want a visual way to reorder fields?

You can also use the same plugin we used earlier — Checkout Field Editor — to drag and drop fields into the order you want. It’s quick and easy for non-technical users.

Advanced Tip: Conditional Checkout Fields

Here’s something cool that many people miss: you can show or hide checkout fields based on user roles or product types.

Example:

  • Show a field only if the cart contains a physical product.
  • Hide a field for logged-in users.

To do this, you can use a plugin like Checkout Field Editor Pro or use custom code for more control. This adds a smart, dynamic checkout experience and helps improve conversions even further.

FAQs

​How can I remove specific checkout fields for virtual products in WooCommerce?

To remove unnecessary checkout fields for virtual products, you can use custom code to unset specific fields during the checkout process. This approach streamlines the checkout experience for virtual product customers.

​Is it possible to conditionally display checkout fields based on product types in WooCommerce?

Yes, you can conditionally display or hide checkout fields based on product types by utilizing custom PHP code. This method allows you to tailor the checkout form dynamically, enhancing user experience.

What are the benefits of removing unnecessary checkout fields in WooCommerce?

Simplifying the checkout process by removing unnecessary fields can lead to reduced cart abandonment rates, faster transactions, and improved customer satisfaction. A streamlined checkout encourages more conversions and enhances the overall user experience.

​Can I use a plugin to customize WooCommerce checkout fields without coding knowledge?

Absolutely! Plugins like the WooCommerce Checkout Field Editor provide user-friendly interfaces to add, edit, or remove checkout fields without any coding. This allows store owners to customize their checkout process effortlessly.

How do I ensure that removing checkout fields doesn’t affect payment processing in WooCommerce?

Before removing any checkout fields, it’s crucial to ensure that the remaining fields provide all necessary information required by your payment gateways. Testing the checkout process after modifications helps verify that payment processing functions correctly.

Conclusion

Removing WooCommerce checkout fields is one of the quickest ways to boost conversions and improve user experience. No one likes filling in unnecessary fields, especially on mobile.

If you’re just getting started, go with the plugin method — it’s super simple. But if you want full control or specific behavior based on product types, the custom code method is the way to go.

I’ve used this for many clients, and it works every time.

If you are reading this article, it means you want to build a WordPress website. You can get this service from us.

If you like it, consider sharing it with your friend.