How to customize Magento checkout process ?


Every eCommerce website has this problem: someone comes to your store, puts one of your products in their cart.  Then, they come to the checkout page and make a purchase. However, if your checkout page isn’t thoroughly optimized for conversions, there’s a fairly good chance that the potential customers will never complete the purchase. Let’s look at the tactics to optimize the checkout page and increase conversion.

Latest Update: We’ve just released version 2.0 of Claue Multipurpose Magento 2 Theme with a bunch of performance improvements and exclusive features. Check this theme out now: Claue Magento Theme  2. 0 

claue2_edited (1)

Live Demo 

Claue – Clean, Minimal Magento 2&1 Theme is an excellent template for a modern and clean eCommerce store with 40+ homepage layouts and tons of options for shop, blog, portfolio, store locator layouts, and other useful pages. Claue version 2. 0  comes with a bunch of  exclusive features including:

  • Being based on the Luma theme.
  • Meet all standards of Magento Theme
  • Significant performance improvement
  • Compatible with most third-party extensions.
  • Fully compatible with Magento 2.4.x

This second advanced version completely differentiates from its previous one. Thus, if you are using Claue version 1 and want to update to Claue version 2, you can only rebuild a new website no rather than update from the old version. Now, let’s get back to the main topic.

How to customize Magento checkout process ?

You can either add a new checkout step or customize the view of an existing checkout page. In case you want add a custom checkout step, it should be implemented as a UI component. Besides, you need to ensure compatibility, easy updates and simple maintenance, you should not edit Magento code which means that some steps should be applied as a separate module.

Step 1: Create a view part

Follow below steps to create a view part for implementing a new checkout step:

  • It is crucial to generate  a directory for modules – all the user modules should be stored there. For correct work, the new module should have a dependence on the Magento_Checkout module. You should not use Ui as a part of the name of the custom module as the use of %Vendor%_Ui may lead to an error.
  • You need to create a .js file that appies the view module.
  • Last step, you need to create an .html template for a component.

Following a more detailed instruction of Step 1:

Add a JS file that implements a new step

It is helpful to implement the new checkout steps which means that its JS implementation should be a JavaScript module. Moreover, this file should be located at the <your_module_dir>/view/frontend/web/js/view directory. <your_module_dir> here shows the path to the module directory from the root directory. It will be either app/code/<YourVendor>/<YourModule> or vendor/<yourvendor>/module-<module>-<name>.

For instance, <your_module_dir>/view/frontend/web/js/view/example-step.js:

    ['ko', 'uiComponent', 'underscore', 'Magento_Checkout / js / model / step - navigator'],
    ) {'
        use strict';
         * mystep – is the name of the component's .html template,
         * <Vendor>_<Module> – is the name of the your module directory.
        return Component.extend({
            defaults: {
                template: ' < Vendor > _ < Module > /mystep'

            //add here your logic to display step,
            isVisible: ko.observable(true),

             * @returns {*}
            initialize: function() {
                // register your step
                    //step code will be used as step content id in the component template
                    //step alias
                    //step title value
                    'Step Title',
                    //observable property with logic when display step or hide step

                    _.bind(this.navigate, this),

                     * sort order value
                     * 'sort order value' < 10: step displays before shipping step;
                     * 10 < 'sort order value' < 20 : step displays between shipping and payment step
                     * 'sort order value' > 20 : step displays after payment step

                return this;

             * The navigate() method is responsible for navigation between checkout step
             * during checkout. You can add custom logic, for example some conditions
             * for switching to your custom step
            navigate: function() {


             * @returns void
            navigateToNextStep: function() {

Add the .html template

In the module directory, add the .html template for the component. It is necessary to  located it under the <your_module_dir>/view/frontend/web/template directory.

A sample mystep.html follows:

<!–The 'step_code' value from the .js file should be used–>
<li id="step_code" data-bind="fadeVisible: isVisible">
    <div class="step-title" data-bind="i18n: 'Step Title'" data-role="title"></div>
    <div id="checkout-step-title" class="step-content" data-role="content">

        <form data-bind="submit: navigateToNextStep" novalidate="novalidate">
            <div class="actions-toolbar">
                <div class="primary">
                    <button data-role="opc-continue" type="submit" class="button action continue primary">
                        <span><!– ko i18n: 'Next'–><!– /ko –></span>

Step 2: Add your step to the Checkout page layout

For the new step to be showcased on the page, you need to declare it in the Checkout page layout, which is defined in checkout_index_index.xml.

So you need to include an extending checkout_index_index.xml layout file in the following location: <your_module_dir>/view/frontend/layout/checkout_index_index.xml

See a  sample checkout_index_index.xml below:

<page xmlns:xsi="" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">

        <referenceBlock name="checkout.root">
                <argument name="jsLayout" xsi:type="array">
                    <item name="components" xsi:type="array">
                        <item name="checkout" xsi:type="array">
                            <item name="children" xsi:type="array">
                                <item name="steps" xsi:type="array">
                                    <item name="children" xsi:type="array">
                                        <!– The new step you add –>
                                        <item name="my-new-step" xsi:type="array">
                                            <item name="component" xsi:type="string">%Vendor%_%Module%/js/view/my-step-view</item>
                                            <!–To display step content before shipping step "sortOrder" value should be < 1–>
                                            <!–To display step content between shipping step and payment step 1 < "sortOrder" < 2 –>
                                            <!–To display step content after payment step "sortOrder" >2 –>
                                            <item name="sortOrder" xsi:type="string">2</item>
                                            <item name="children" xsi:type="array">
                                                <!–add here child component declaration for your step–>

Checkout Page strategies to Improve conversion Rates

A checkout page is where a customer completes their online purchase. It is as the online version of a physical checkout counter in a grocery store.

Optimize your mobile checkout experience

A study shows that a large percentage of shoppers will be using mobile devices to browse your site. Therefore, it is important that your checkout page is optimized to make appropriate for the needs of mobile users.

Don’t miss out on these significant profit gains. Make sure that your website is dynamic and adaptable to a wide range of mobile screen sizes. If your checkout process is difficult to navigate or three are too many steps to complete, you can lose mobile users.

Make the checkout form field guidelines and expectations clear

Every element of your checkout process should be clear and simple to understand. More specifically, you tell the customers exactly what should go in each field. Besides, you don’t make them guess these fields.

If you have specific parameters for fields such as date, email address, you should include instructions. It is frustrating for customers not to know which input field is failing or why. Therefore, if there are errors in the input fields, you have to highlight those fields for the customers. Then, they can quickly fix them.


Reduce clicks or steps in the checkout page as much as possible

When the number of clicks/steps involving in your checkout process are fewer, the customers will be more likely to complete it. For example, you can implement address verification tools like auto- filling secondary fields (such as ZIP codes).

In addition, reducing the number of pages relating to your checkout process makes user experience more simply. Only way to do this is to use Magento extension- One step checkout. Every ecommerce brand has adopted one because it provides for an overall better user experience by significantly reducing the number of pages that a customer needs to jump through.


Display the total price up front

Proper checkout page optimization should be clear about any fees (shipping, taxes, etc.) that will be incurred. Furthermore, if you’re upfront about any fees that are included with the order, your customers will appreciate you for it.


Integrate alternative payment options on the checkout page

It is good idea to display payment options as early as the product page to avoid causing frustration later in the process. The wider the choice of different payment gateways, the more chances are your customers will complete their journey. Consider having the following payment options available on your checkout page:

  • All major credit cards
  • PayPal
  • Digital wallets (Apple Pay, Google Pay, Amazon Pay)
  • Buy now pay later (BNPL) services

Always provide a guest checkout on the checkout page

The study shows that 37% of shoppers abandoned carts because they had to create an account to shop. That’s a huge number of potential customers to lose. Therefore, you can include a guest checkout option then visitors can shop without needing to create an account.

You make sure that you get their email address at some point during the checkout process. It means that if they leave your website before completing their purchase, you can still enroll them in an abandoned cart email sequence. Enabling guest checkout is a simple and effective method to streamline the path to purchase on your ecommerce website.

Optimize your checkout button on the checkout page

The call to action is an important part of checkout page optimization. This is usually on a button and will include text like “buy now”, “place your order” or “checkout”. Moreover, you should make your checkout button stand out. And your customers can complete their purchase at any time.

Another tip is to put checkout button both at the top and bottom of the page or cart contents. This help customers not to look for the check button when they are ready to complete their purchase.

Use live chat on the checkout page

Live chat has become an essential customer service tool. It allows you to answer any questions that come up during the checkout process. This will minimize the chances of a person abandoning their cart. Therefore, you can make it easy for customers to get questions regarding your return policy or shipping details answered quickly without them having to leave the checkout page.


This is the end of the how to customize the Checkout Process in Magento 2. If you have concerns, please contact us! At Magesolution, you can hire certified Magento developers to work on your new or existing online store. From website development service to maintenance & support services, no matter what your needs are, our Magento Development Packages will all provide you the most effective solution to help your online business grow and sustain. With over 14 years of experience, we came to giving solutions to over 1,000 happy clients.

611 Total Views 2 Views Today