Skip to content
LWN Pro
Home/Guides/Reduce cart abandonment

How to reduce WooCommerce cart abandonment at checkout

WooCommerce checkout guides·8 sections

Most checkout abandonment comes from a handful of predictable causes, and most of them are WooCommerce settings rather than design problems. These are the fixes worth making, roughly in order of impact.

Why customers abandon at the checkout step

Abandonment at checkout is different from abandonment at the cart, and it is worth separating the two before you change anything.

Someone who leaves at the cart is often still deciding. Someone who reaches your checkout has already decided to buy — they entered a flow whose only purpose is payment. If they leave at that point, something in the checkout itself pushed them out.

In Baymard Institute's long-running checkout research (opens in a new tab), extra costs revealed at checkout — shipping, taxes and fees — are consistently the most-cited reason people abandon an order they intended to place. Account requirements, a checkout that is too long or complicated, and payment problems follow behind it.

That ordering is useful, because it says the first thing to fix is usually pricing transparency, not layout.

Show the full cost before the last step

A shipping charge that first appears on the payment step reads as a price increase, however reasonable the amount is.

In WooCommerce, enable the shipping calculator on the cart page under WooCommerce → Settings → Shipping → Shipping options, so a customer can see delivery cost before they commit to the checkout.

If you offer free shipping above a threshold, say so on the cart and in the checkout, with the amount remaining. "Add $12 more for free delivery" is a reason to increase the order, not a surprise at the end.

If you sell internationally, be explicit about who pays duties. A customer who discovers an unexpected customs charge after delivery does not come back, and that damage is not visible in your checkout metrics.

Stop forcing account creation

Turn on guest checkout unless you have a specific reason not to. Requiring an account before a first purchase asks the customer to commit to a relationship before they have any evidence you are worth one.

The setting is under WooCommerce → Settings → Accounts & Privacy: enable "Allow customers to place orders without an account".

You lose less than you think. On the same screen you can offer account creation during checkout, so customers who want an order history can opt in, and you can create accounts automatically after purchase if you need them for subscriptions or downloads.

Also enable "Allow customers to log into an existing account during checkout" so returning customers can pull in their saved address instead of retyping it.

Remove fields you do not need

Every field is a small cost paid by every customer, so the cheapest improvement available is deleting the ones you never use.

Go through your checkout honestly:

  • Company name — remove it unless you sell to businesses.
  • Address line 2 — keep it, but never required.
  • Phone number — only require it if your courier genuinely needs one.
  • Order notes — useful for some stores, dead weight for most.
  • Billing address for digital goods — often needed for tax compliance, but rarely in full.

If the form is still long after that pass, then layout becomes worth considering. The comparison of multi-step and one-page checkout covers when splitting it helps and when it just adds clicks.

Catch errors where they happen

Report a validation error on the screen that caused it, not after the customer submits the entire form.

WooCommerce's default behavior on a long checkout is to validate on submit and show a notice at the top of the page. The customer then has to work out which field it refers to and scroll to find it. On a phone, that error notice can be several screens away from the field.

Per-step validation solves this by refusing to advance until the current step's fields are valid, which keeps the error and the field on screen together. It is one of the more concrete arguments for a stepped checkout, and it is what the WooCommerce multi-step checkout plugin does when "Validate Steps Before Proceeding" is enabled.

Offer the payment methods your customers use

A customer who cannot pay the way they expect to pay will leave, and this failure is invisible in most analytics because it looks identical to disinterest.

Card payments are the baseline. Beyond that, expectations are regional and generational: digital wallets are close to mandatory for mobile buyers, and bank transfer, cash on delivery or local schemes matter enormously in some markets and not at all in others.

Check where your traffic comes from before adding gateways, since each one adds fees and maintenance. Adding a method nobody in your market uses is cost without benefit.

Answer the questions that cause hesitation

Put your delivery time, return policy and contact route on the checkout page itself, where the hesitation actually occurs.

A customer at the payment step is asking three questions: when will this arrive, what if it is wrong, and who do I contact. If answering means opening a new tab to find your policy pages, some of them will not come back to the tab they left.

Keep it to one line each. A wall of reassurance text reads as anxiety, not confidence.

Measure whether any of it worked

Track orders placed against sessions that reached the checkout page, and change one thing at a time.

WooCommerce Analytics reports on orders but does not include a checkout funnel, so pair it with analytics that records checkout page views to get a completion rate you can compare across periods.

Change one thing per test window, and give each at least two weeks. If you enable guest checkout, remove three fields and switch to a stepped layout in the same week, you will have no idea which one moved the number — or which one to undo.