Shopify checkout optimization: what you can change and in what order
checkout.liquid is gone, so the work is fields, wallets, shipping and a funnel you can read. What Shopify lets you change, what the data says, and the order.
12 min read
Contents · 9 sections
- Shopify checkout is a product you configure, not a template you edit
- The fields are the friction, and the average checkout carries too many
- Abandonment has a distribution, and a third of it is checkout design
- Measure the funnel at each step before you change anything
- Fix the first screen: express payment, guest by default, fewer inputs
- Fix the middle: shipping you can predict and a total you can see
- Fix the end: payment methods, declines and trust
- Change one thing at a time and read the same number every time
- Fix it in this order; the first step takes under an hour
Shopify checkout is a product you configure, not a template you edit
The first thing to know about optimising a Shopify checkout is what you are allowed to change. For years the answer on Plus was "anything", through checkout.liquid. That layout is gone. Shopify's checkout.liquid reference now states that it is unsupported for the Information, Shipping and Payment steps, and that it and additional scripts were sunset for the Thank you and Order status pages on 28 August 2025. Script tags followed on those pages: 28 August 2025 for Plus stores, 26 August 2026 for everyone else. If a tag or a snippet of checkout code was doing work for you, check that it still runs.
What replaced it is a set of defined extension points. Shopify's guide to customising checkout lists four technologies and who gets each:
| Technology | What it changes | Availability |
|---|---|---|
| Checkout UI extensions | Adds UI or content to checkout | Plus for the checkout steps; Thank you and Order status for all plans except Starter |
| Checkout branding (Admin GraphQL API) | Look and feel | Plus |
| Shopify Functions | Backend logic: discounts, payment and delivery customisation, validation | All plans except Starter |
| Web pixel extensions | Tracking | All plans except Starter |
Two things follow. First, on a store that is not on Plus, the checkout steps are not a design surface. You tune the settings Shopify exposes, the theme-editor options, the payment and shipping configuration, and what happens before and after the steps. That is a smaller toolbox than most checkout advice assumes; much of it was written for the era of checkout.liquid. Second, because every change is made through a supported extension point, it survives Shopify's releases. The guide says as much: extensions are upgrade-safe, which is how merchants received features like one-page checkout without touching code.
So the work is not redesigning checkout. It is removing the things that make a buyer stop, in the order they meet them, and measuring each step so you know which removal mattered.
The fields are the friction, and the average checkout carries too many
Baymard Institute's checkout research is the best-documented place to start, because it measures effort rather than opinion. Their analysis of checkout form fields reports that the average checkout in 2024 had 5.1 steps and 11.3 form fields, that 17 percent of users had abandoned because of checkout complexity, and that most sites need only 8 fields. Their finding that matters most for Shopify: the number of steps affects usability less than the number of fields a buyer has to consider.
That reframes the one-page versus three-page question. Shopify's page layouts include a three-page layout (information, shipping, payment, completed in sequence), a one-page layout with everything on one screen, and an accelerated layout for Shop Pay, which pre-fills buyer details from the buyer's Shop Pay account and may combine or skip steps. Baymard's data says a layout change is not where the gain is. The fields inside it are.
The same article lists five reductions. Each maps to something you can check on your own store in a few minutes:
- One name field. 89 percent of sites in Baymard's benchmark use more than one, and in testing 42 percent of participants typed their full name into "First name" at least once. Shopify lets you choose whether checkout asks for first and last name or last name only; look under Settings, Checkout, in the customer information options, and confirm the labels in your admin as they change.
- Address line 2 behind a link. 75 percent of sites do not hide it, and 30 percent of test participants stopped at it. People who need it look for it; the rest are slowed by it.
- Discount code field. Baymard found that 70 percent of sites have one, and that some participants left the site to search for a code, then did not come back. Shopify's checkout shows the field by default. If you run no public codes, the field is an invitation to go and look for one. Apply discounts automatically where you can.
- Billing address same as shipping by default. The majority of buyers have one address. Shopify already defaults to this; the check is that you have not changed it, and that no app or custom field has put a second address block back.
- Account creation after payment. Baymard reports 84 percent of sites do not delay it. Shopify's guest checkout is the default, and the post-purchase account invitation sits on the Thank you page, which is where it belongs. If your store is set to require accounts, that is the first setting to change.
You can add up your own count in two minutes. Put one product in the cart on a phone, open checkout, and count every input you would have to touch on the way to a card number: email, name, company, address lines, city, postcode, country, phone, discount code, card fields. Compare it with eight; every field above that is a removal candidate. Phone and company name are the usual ones to turn off, unless carriers or customs genuinely need them for the destinations you serve.
Abandonment has a distribution, and a third of it is checkout design
Baymard's cart abandonment statistics average 50 studies to 70.22 percent, which is the number people quote and the least useful one. The more useful part is their survey of US online shoppers on why they abandoned. 42 percent said they were just browsing or not ready to buy. That segment is not recoverable by any design. Set it aside and the remaining reasons read as a list of things to check:
| Reason | Share of the remainder |
|---|---|
| Extra costs too high (shipping, tax, fees) | 40% |
| Delivery was too slow | 20% |
| Did not trust the site with card details | 19% |
| Site wanted me to create an account | 18% |
| Too long or complicated checkout | 17% |
| Website errors or crashes | 17% |
| Returns policy unsatisfactory | 13% |
| Could not see the total order cost up front | 12% |
| Card was declined | 10% |
| Not enough payment methods | 9% |
The percentages are shares of the people who gave a reason other than browsing, and they overlap, because respondents could pick more than one. Read them as a ranking of causes, not as a budget that adds to 100. Baymard's own commentary is that many of these can be fixed purely through design.
Map the list to Shopify and most rows have an owner. Shipping and total cost is the subject of the shipping cost post. Account creation, form length and payment methods are checkout settings. Errors and crashes are mostly your store's own scripts, which is why third-party scripts belongs in any checkout review. Trust and returns live on the pages before checkout, and are covered in the store audit checklist. Only "card was declined" is mostly outside your control, and it still has a lever: the payment methods you offer.
Measure the funnel at each step before you change anything
You cannot rank these fixes without knowing where buyers actually stop. Shopify gives you two ways to see it.
The built-in funnel. In Analytics, the online store conversion funnel shows sessions, sessions with add to cart, sessions that reached checkout, and sessions that completed it. The ratio between the last two is your checkout completion rate. It is the one number every change below should move. Look at it by device. A gap between desktop and mobile completion points at the field count above.
Step-level events. The finer view comes from Shopify's web pixel standard events. The checkout_started, checkout_contact_info_submitted, checkout_shipping_info_submitted, payment_info_submitted and checkout_completed events mark the buyer's progress through the three-page flow. Send them to your analytics tool through a pixel and you can read the drop between each pair:
| Between | A large drop usually means |
|---|---|
| started and contact info | Account walls, a long first screen, an unexpected cost summary |
| contact info and shipping info | Address friction, no delivery methods for the destination |
| shipping info and payment info | The delivery price or date was a surprise |
| payment info and completed | Few payment methods, declines, errors, trust |
Record at least two weeks, including a weekend, before you touch a setting. If your analytics already receives these events, the table fills in under an hour. If not, adding a pixel is the first piece of work.
Fix the first screen: express payment, guest by default, fewer inputs
With the funnel in front of you, work from the first screen onward.
Express wallets come first. The accelerated layout exists because a buyer with a Shop Pay account should not retype an address. Check in Settings, Payments that the wallets your market uses are on, and that they appear at the top of checkout and on the cart page. On a phone, a wallet button replaces most of the form. Which wallets matter depends on the market, so ask your payment provider rather than copying another store's list.
Turn off what you do not need. In the checkout settings, set company name to hidden, address line 2 to optional or hidden, and phone to hidden unless a carrier needs it. Use the full-name option if it is offered. Each field removed is one fewer place to stop.
Keep guest checkout and delay the account. Do not require an account. If you want accounts, ask on the Thank you page, where the buyer has already paid and the invitation costs nothing.
Do not put anything above the form. The guide above lists pre-purchase product offers among the extensions. An offer is an extra decision inserted into the step that should be the shortest, so compare completion rate with and without it.
Fix the middle: shipping you can predict and a total you can see
The shipping step is where the "extra costs" reason, the biggest row in the table, becomes a click. The fix starts before checkout. If a buyer first meets the delivery price on the second page, the page is doing something the product page should have done. Our post on showing shipping cost before checkout walks through the three ways to do that, and how to check the rate your store would quote.
Inside checkout, the controls are your delivery profiles and method names. Name each rate with its delivery window, so the buyer is not decoding carrier labels. Make sure every country you advertise to has a rate; a destination with no rate is a dead end that shows up as a drop between contact info and shipping info.
Shopify Functions are also relevant here. The technologies guide lists delivery customisation, payment customisation and cart and checkout validation among them, all available outside Plus. A validation function that rejects a bad postcode with a clear message is worth more than a generic error at the payment step.
Fix the end: payment methods, declines and trust
The last pair of steps carries the quietest losses. A buyer who reaches the payment step has told you they want the product. If they leave, the reasons are in the lower half of the Baymard table: card declined, not enough payment methods, trust in the site with card details.
Check three things, in this order.
The methods match the market. Open checkout with a shipping address in each of your top three countries, and read what is offered. A store selling into Switzerland, France and the Emirates will not need the same set in each. Offer the local method buyers expect before adding anything exotic.
The failure states read well. Enter a deliberately wrong card number in a test mode or on a development store, and read the error. It should say what to do next. "Something went wrong" is the version that loses a buyer who would have tried another card.
Nothing from your own stack breaks the page. Baymard's list puts errors and crashes at 17 percent. The checkout pages are rendered by Shopify, so the breakage you can cause comes from scripts and pixels you have installed. Open the browser console on every checkout step and look for red errors. Remove any pixel or tag you cannot name a use for. Since script tags are sunset on the Thank you and Order status pages, any purchase tracking that depended on them now needs a web pixel instead.
Trust signals sit mostly outside checkout, because the checkout itself is Shopify's. Put the returns policy, delivery times and contact details on the product and cart pages, and the checkout inherits the confidence.
Change one thing at a time and read the same number every time
Make one change, wait a full cycle that includes a weekend, and read the completion rate for the affected step. Two changes in the same week tell you the pair worked, not which one.
If you have the traffic to split, Shopify's checkout is a poor place to run a theme-level test, because the steps are not part of your theme. Test the pages before it freely. For the checkout steps, compare periods and keep a written log of dates and changes. A log with five dated entries is worth more than any benchmark, because it is about your buyers.
Fix it in this order; the first step takes under an hour
First, read the funnel by device, and install the checkout events if they are missing. Under an hour if the pixel exists; half a day if not. Nothing else should start before this.
Second, strip the form. Hide company name, set address line 2 and phone to what the business needs, use a single name field if offered, and confirm guest checkout. Thirty minutes in the admin, and the field count drops toward the eight Baymard describes.
Third, turn on the right wallets and payment methods for each market. An hour, mostly spent confirming with your payment provider.
Fourth, make shipping predictable: a rate in every market, named with its window, and the price shown before checkout. An afternoon, with the theme work covered in the shipping post.
Fifth, clean the stack: remove tags and pixels with no owner, replace any script-tag tracking on the Thank you page with a web pixel, and watch the console on every step. A couple of hours.
Then wait two weeks and read the same funnel. If you would rather have the funnel read and the fixes ranked against everything else on the store, that is the Store Teardown: five days, and the document is yours whatever you decide. The wider list of what to look at sits in the store audit checklist, and the service that carries this work is on the services page.