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, andpurchaseare 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_companyandshipping_company,billing_address_2andshipping_address_2, andorder_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_fieldsto remove or relabel checkout fields such asorder_comments, and to change field order via fieldpriority. Official Woo docs explicitly showunset( $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, usewoocommerce_default_address_fields; Woo’s own docs call this out for fields such asfirst_name,last_name,company,address_1,address_2,city,state, andpostcode. 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_phonetotype="tel"andbilling_emailtotype="email", and it assigns autocomplete tokens such asgiven-name,family-name,address-line1,address-line2,postal-code,email, andtel. If you relabel or recreate fields, keep those semantics. Google’s form guidance recommendstype="email"for email,type="tel"for phone, and avoidingtype="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_fielddoes 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, andorder— and fields saved there are stored to the customer, order, or both depending on location. The official API currently supportstext,select, andcheckboxfield types, and it supports attributes such asautocomplete,autocapitalize,pattern,title,maxLength, andreadOnly. 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_nameandlast_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
Aim for the fewest visible fields your operation genuinely needs, not a fixed magic number. Baymard’s current benchmark says the average checkout still shows 11.3 fields and 14.8 form elements, while many flows can get down to roughly 8 fields and 12 elements; use that as a lean benchmark, not a rule you must force at the expense of fulfilment quality.
For most B2C stores, start with company, address line 2, and order notes. Baymard recommends hiding uncommon optional inputs such as address line 2, WooCommerce core already treats company and address line 2 as visibility-controlled address fields, and order notes can be removed on classic checkout with the documented woocommerce_checkout_fields pattern; phone should only stay required if it serves a real operational purpose.
No, not for the core block checkout fields. WooCommerce’s own docs say classic shortcode customisation guidance does not apply to the Checkout block, and the hook-alternatives reference lists the classic checkout field hooks and filters as unsupported in block checkout.
Yes, but only if you have tested every downstream dependency and still populate usable first-name and last-name values for WooCommerce orders and customers. A single field is often better for users, but WooCommerce’s schemas and many integrations still expect split name values, so the operational risk is real.
Sources & Further Reading
- Checkout Optimization: 5 Ways to Minimize Form Fields in Checkout – Baymard’s current benchmark for average vs lean checkout field and form-element counts, plus specific reduction tactics such as full name and hidden address line 2. Date: 26 June 2024.
- Reasons for Cart Abandonment — Why 70% of Users Abandon Their Cart – Baymard’s current abandonment-reason benchmark, including checkout that feels too long or complicated. Date: 14 January 2025.
- Checkout UX Best Practices 2025 – Current Baymard guidance on hiding uncommon optional inputs such as company and address line 2. Date: 25 November 2025.
- Usability Testing of Inline Form Validation: 31% Don’t Have It – Useful for the field-error guardrail and why error recovery should improve alongside field reduction. Date: 9 January 2024.
- Customizing checkout fields using actions and filters – Official Woo developer doc for classic shortcode checkout, including woocommerce_checkout_fields, woocommerce_default_address_fields, and the order_comments removal example. Last updated: 3 June 2026.
- Additional checkout fields – Official Woo developer doc for block checkout custom fields, supported locations, field types, and attributes. Last updated: 3 June 2026.
- Hook alternatives – Official reference showing which classic cart and checkout hooks are not supported in Cart & Checkout Blocks. Date: Undated in page chrome; accessed 3 June 2026.
- Checkout block – Official merchant doc showing the Checkout block’s Address Fields controls for company, address line 2, and phone. Date: Undated in page chrome; accessed 3 June 2026.
- Developer advisory: Block Checkout field entities – Important version note on WooCommerce 9.6 global field-visibility behaviour and differing block vs shortcode defaults. Date: 16 January 2025.
- WooCommerce Code Reference: WC_Countries::get_default_address_fields() – Source of WooCommerce’s default address fields, types, autocomplete tokens, and visibility logic for company, address line 2, phone, and email. Generated: 28 May 2026.
- Measure ecommerce – Official GA4 ecommerce event implementation guide. Date: 4 May 2026.
- Set up event parameters – Official GA4 guidance on registering event parameters as custom dimensions or metrics for reporting. Date: 4 May 2026.
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 PilotAbout This Page
- Written By: Eliot Webb – Founder & WooCommerce CRO Consultant
- Last Reviewed: 5 Jun 2026
- Last Updated: