WooCommerce CRO Technique

Cut and reorder WooCommerce checkout form fields to reduce abandonment

Cutting low-value checkout fields and putting the remaining ones in the order customers expect reduces perceived effort, especially on mobile. In practice, this helps most when your WooCommerce checkout still shows optional fields such as company, address line 2, or order notes by default, or when a block checkout is still carrying classic assumptions that no longer fit the store.

Summary

Bottom Line: The safe WooCommerce play is to remove or hide fields that are rarely needed, usually company, address line 2, and order notes first, then reorder the remaining fields to match the customer’s mental model and mobile keyboard behaviour.

  • For most B2C WooCommerce stores, the first fields to review are company, address_2, and order_comments; they are common friction points and are already optional or hideable in WooCommerce core.
  • Classic checkout and Cart & Checkout Blocks are different products in practice: woocommerce_checkout_fields works on classic shortcode checkout, but block checkout ignores those classic PHP field filters.
  • On new stores, Cart & Checkout Blocks have been the default since WooCommerce 8.3, so you have to confirm which checkout architecture the live store is actually using before you change anything.
  • Correct field semantics matter as much as field count: WooCommerce core uses type="tel" for phone, type="email" for billing email, and address autofill tokens such as given-name, family-name, address-line1, address-line2, and postal-code. Keep or improve those semantics when you customise.
  • If you merge first and last name into one visible field, audit every downstream integration first. WooCommerce’s customer and order schemas still store separate first_name and last_name values, so a front-end simplification can break exports, labels, or CRM sync if you do not map it back carefully.

How To Implement

  • Identify the live checkout architecture before touching fields

    In WooCommerce, classic and Blocks behave differently. Official Woo docs state that some field customisation guidance applies only to the shortcode checkout, while the Checkout block has its own APIs and editor controls. New stores started after WooCommerce 8.3 use Cart & Checkout Blocks by default, and established stores can still be on the classic shortcode checkout or can be transformed back to it. Check the live checkout page in Pages or Appearance → Editor, confirm whether it contains a Checkout block or a Classic Shortcode placeholder, and document that first.

  • Baseline the current checkout before cutting anything

    Record current checkout completion, mobile checkout completion, order errors, and whether any field is actually used in fulfilment. In GA4, make sure begin_checkout, add_shipping_info, add_payment_info, and purchase are flowing cleanly before you change the form, because those events populate the ecommerce reports and funnel work. If you want field-level analysis, add custom events or parameters now and register the ones you need as custom dimensions or metrics before the test starts.

  • Cut fields in the right order: remove what is truly low-value, then hide what is occasionally useful

    For most B2C stores, start with billing_company and shipping_company, billing_address_2 and shipping_address_2, and order_comments. Baymard’s research specifically recommends hiding uncommon optional inputs such as address line 2 behind a link rather than forcing everyone to scan past them, and WooCommerce core already treats company and address line 2 as visibility-controlled address fields. Keep phone only if there is a real operational reason, such as carrier delivery contact, customs, fraud review, or customer-service recovery. The UK GDPR data-minimisation principle points the same way: collect what is necessary for the purpose, not more.

  • Reorder the remaining fields to fit the customer’s task, not your database

    Put email and name early, keep street address, town/city, postcode, and country in a predictable address sequence, and push rare extras later or behind progressive disclosure. Baymard recommends minimising visible fields and using a single “Full name” field where possible, but international name and address formats vary widely, so do not force a rigid UK-only structure if you ship internationally. WooCommerce also localises address requirements and priorities by country, which is why you should be careful about hard-coding field order or validation logic globally.

  • For classic shortcode checkout, use the correct Woo hooks and filters

    Use woocommerce_checkout_fields to remove or relabel checkout fields such as order_comments, and to change field order via field priority. Official Woo docs explicitly show unset( $fields['order']['order_comments'] ) as the pattern for removing order notes. When you need to alter core address-field defaults that Woo loads per country, use woocommerce_default_address_fields; Woo’s own docs call this out for fields such as first_name, last_name, company, address_1, address_2, city, state, and postcode. Put the code in a child theme or a snippets plugin, not a parent theme. If a Woo checkout field editor extension is active, Woo notes that it can override custom field code.

  • For classic checkout, preserve or improve field semantics while you edit

    WooCommerce core already sets billing_phone to type="tel" and billing_email to type="email", and it assigns autocomplete tokens such as given-name, family-name, address-line1, address-line2, postal-code, email, and tel. If you relabel or recreate fields, keep those semantics. Google’s form guidance recommends type="email" for email, type="tel" for phone, and avoiding type="number" for values such as phone numbers or payment numbers; for numeric-but-not-mathematical input, use text plus appropriate mobile hints instead.

  • For Cart & Checkout Blocks, use the editor and block APIs, not classic snippets

    Official Woo docs are explicit that classic checkout hooks and filters are not supported in the block checkout for core field rendering. To control core address-field visibility in the Checkout block, edit the checkout page, select the Checkout Fields block or linked Shipping Address settings, and use Address Fields in the sidebar to toggle Company, Address Line 2, and Phone, and to control whether address and phone are required. If you want to remove order-notes behaviour, note that woocommerce_enable_order_notes_field does not affect the Checkout block; Woo’s hook-alternatives doc says the block must be removed in the editor.

  • For block checkout custom fields, use the Additional Checkout Fields API or a plugin that is genuinely block-compatible

    Woo’s Additional Checkout Fields API supports custom fields in three locations — contact, address, and order — and fields saved there are stored to the customer, order, or both depending on location. The official API currently supports text, select, and checkbox field types, and it supports attributes such as autocomplete, autocapitalize, pattern, title, maxLength, and readOnly. If you need no-code field controls, verify plugin compatibility with Blocks before implementation: Woo says extension compatibility is product-specific; ThemeHigh’s WordPress.org listing currently claims classic and block checkout support, but its block support is narrower than its classic support, with block customisation limited to a smaller field-type set. CartFlows documents field editing in CartFlows → Funnels → [Checkout step] → Checkout Form → Field Editor. FunnelKit’s own documentation is vendor evidence and should be treated as such.

  • Use conditional visibility instead of blanket removal when the field is only needed in some cases

    If a field is relevant only for local pickup, fragile goods, B2B orders, or particular countries, hide it until the condition is met instead of showing it to everyone. Woo’s current tutorial for conditional visibility in additional checkout fields requires WooCommerce 9.9.0 or later. That is usually better than forcing every shopper through an irrelevant field.

  • Handle full name with caution

    Baymard and GOV.UK both support a single full-name field in many user-facing contexts because names do not always fit a Western first-name/last-name model, and a single field reduces perceived work. However, WooCommerce core address fields and customer/order schemas still store separate first and last names. That means a full-name field is only safe if you have tested how orders, exports, labels, invoices, emails, and external systems consume first_name and last_name. The safest route on stores with downstream dependencies is often to keep split fields and optimise them, not to merge them visually.

  • Re-check version-specific behaviour after WooCommerce upgrades

    In WooCommerce 9.6, Woo changed block checkout field-visibility settings for phone, company, and address line 2 so they are stored globally and used across blocks, shortcodes, My Account, and the Store API. Woo’s advisory also notes different defaults: block checkout defaults are optional phone, optional address 2, and hidden company, while shortcode defaults are required phone, optional address 2, and optional company. After upgrading, visually verify the live checkout, not just the editor.

  • Keep custom save and order-meta logic HPOS-safe

    If you add or transform checkout data, use WooCommerce CRUD methods and official object APIs. Woo’s HPOS guidance says CRUD-based interactions continue to work as expected, while direct assumptions about posts and postmeta are the riskier path. That matters if you are saving derived values from merged fields or custom block fields.

How To Measure

Track the technique primarily on checkout completion, with RPV as the business metric that matters most over time. In GA4, use the standard ecommerce events begin_checkout, add_shipping_info, add_payment_info, and purchase to read the funnel before and after the change, ideally in a funnel exploration segmented by device category, especially mobile. Success looks like a higher purchase / begin_checkout rate, better completion between begin_checkout → add_shipping_info and add_shipping_info → add_payment_info, and — if you instrument it — lower field-error frequency and shorter checkout-form completion time. For field-level analysis, send custom parameters such as field_name, field_group, error_type, checkout_template, and checkout_form_seconds, then register the ones you need as GA4 custom dimensions or metrics. Guardrails: AOV, RPV, payment-authorisation success, orders missing required operational data, customer-service contacts about checkout or delivery, and checkout-page LCP/INP/CLS should not get worse. Google’s current guidance is still to aim for LCP under 2.5s, INP under 200ms, and CLS under 0.1.

Pitfalls

  • Myth: fewer fields always means a better checkout. It usually helps, but only if you remove fields that are genuinely unnecessary. If you remove data your carrier, customs flow, or fulfilment team needs, you can improve frontend completion and still damage delivery success or operational cost.
  • Classic snippets do not fix block checkout. Many stores waste time adding woocommerce_checkout_fields code to a Checkout block and then wonder why nothing changed. Woo’s block docs and hook-alternatives docs are clear that classic field hooks are not supported for block core fields.
  • Removing address fields globally can backfire internationally. Address formats vary widely by country, and WooCommerce already changes address-field behaviour by locale. Do not assume UK-only rules if you ship abroad.
  • A single full-name field is not a free lunch. It can reduce friction, but reliable automatic splitting is hard, and WooCommerce plus downstream systems still expect separate first and last names.
  • Do not use type="number" for phone numbers or similar identifiers. Google’s form guidance explicitly warns against that for data such as telephone or payment card numbers; use tel or text with the right mobile hints instead.
  • Do not judge success on conversion alone. If field cuts increase checkout completion but also increase address-quality errors, failed shipments, or manual order fixes, the change did not really improve the checkout.

Examples

FAQs

Sources & Further Reading

Want us to implement this for you?

We run measured CRO consultancy for WooCommerce. If you want help prioritising, testing & implementing these improvements, tell us about your store.

Book Pilot

About This Page

  • Written By: Eliot Webb – Founder & WooCommerce CRO Consultant
  • Last Reviewed: 5 Jun 2026
  • Last Updated: