Hoodjukins Furniture website belongs to a company located in Redwood City, California which provides the e-commerce storefront to sell different furniture. The company contacted us to provide the required work to update the website from the existing Magento 2.3 version into the new 2.4 version and also make some adjustments into the shipping integration and troubleshoot issues with the integration with the ERP system.
Update of modules
Based on this, we did a full catalog of all the extension that were present on the Magento installation checking the propose of them and validating if they still required based on the business rules that the system is supposed to work on. Based on our findings, we discovered a lot of extensions that were not required anymore and can be removed, checked which elements can be updated directly from the vendor newest version, and which modules need to be reviewed and have their code updated to make them compatible with the 2.4 Magento version as the vendor does not support the newest version yet.
Shipping modules changes & creation
After this process was completed we were assigned with the task to remove the current shipping module that was used on the system and generate new Magento 2.4 compatible modules to handle the different rules on the shipping. On the business rules, we had to allow the customers to pickup the products from the store directly showing the store location to the user on the checkout steps, and have a shipping method where the cost is determined by the zip code where the order is placed. We reviewed to use the current MultiSource Inventory (MSI) capabilities of Magento 2.4, but we discarded the option as complicated too much the management of the stock of the products.
One of the modules was in charge of showing the option to do the store pickup and show the information of the store that is stored on the Magento Backend. The other one, was created as a new shipping method that allows to upload a csv file where the admin can indicate the country, state, zip code and cost of the shipping method to be charged. This information is then used to display the cost of the shipping to the user on the first step of the checkout.
Customer ERP integration changes
All of this changes were also integrated and validated to allow to accommodate the new information for the scripts that synchronizes the orders from the Magento store into the RetailVantage system that the customer uses to manage and ship the orders from the store.
Payment Gateway update
Once all validation for this steps were performed and finished by our team, our client requested to update the Merchant-E payment solution and integrate an extra security by adding a captcha, this is included on necessary pages. The Merchant-E provide integration with the existing ERP system used in the store location. After this was completed, we tested against a staging server the steps to migrate the code and the database and publish the updated website codebase, which will allow the customer to improve the maintenance, speed and ability to add new features to the system.
Request for Estimate integration
The system allows to send a request for estimation on specific furniture elements so the customer can receive custom made furniture without going through the payment process. The initial feature on the site only allowed to have this request been sent for one of the products.
We were able to improve this features by allowing to select multiple items on one request using the cart contents. Also, as the store has elements that are only available through this specific request, we included the logic to detect what’s on the customer cart and send the request for estimate o make a purchase.
Besides sending the request for estimate to the business owner, we reviewed the ERP API and found that they can avoid loading the data manually if we sent that directly reducing the time it takes to follow up a prospect purchase of personalized products.
Nationwide Shipping estimation
As part of the services provided on store, you can have the possibility to ship your furniture anywhere into the United States, but to do so, you had to contact the store owner by phone so he can give you an estimate. This process was not reflected on the website and also we found that the shipping allowed locations where only known by the potential purchaser when they hit the shipping step on the checkout, and only store pickup option was available.
To make the process more understandable by the customer, we added the address of the store on the store pickup option and changed the logic of the checkout process so the customer can be redirected into the shipping estimation form when the zip code of the shipping address was not on the normal shipping zip codes list of the current carrier.
This way, the customer does not gets frustrated and the estimation of the shipping cost can be provided to the potential customer without the need to call to the store directly.
We detected that many of the pages had issues with the page speed values and proceed to make the adjustments to make them improve. Initially the Product Display Page, which is the one that has most of the indexed pages presence, was not been cached by the Varnish integration, thus making the experience for the visitor not optimal as the response time of the page was not good. After checking what elements where responsible of this, we adjusted to have the page initial response time going down from 1.1 seconds average to 45 ms average. After that, we focused efforts on reduction of the page rendering to improve Cumulative Layout Shift (CLS) and also Largest Contentful Paint (LCP).
We also focused our attention on the header and footer section, to make sure that they load without problems and they do not shift form during loading.
Releasing the changes quicker
While trying to have the best service for our client, we realized the time to release changes into production website was a key point of improvement. Thus, we decided to tackle this with the usage of the full CI/CD approach and work on having a fully deployable site without human intervention in the deploy process.
Based on above, we generated a server for testing any new feature and change automatically taking advantage of our GitLab CI setup on Serfe. After some adjustments we were able to have a server that is updated with every change added into website by the developer so the business owner can validate, test and have a preview of the new features and fixes.
Once this was confirmed we can simply merge the changes into the new environment and the same process will happen with the production server. This allows to invest less time doing deployments, faster feedback from the customer, more engagement with the tasks and features and less time with the site down due to publishing changes.