Linio is one of the leading marketplaces in Latin America. With presence in five countries offering more than four million of products.
The Linio team reached us with a challenging deadline, in order to develop from scratch 3 modules in 3 months that allows merchants to synchronize from their web stores to Linio Sellers Center platform, syncing up orders, products, attributes, categories, images and product stock. We have developed a custom plugin for the following top three open source e-commerce frameworks:
- Magento 2.3
- Prestashop 1.7
- WooCommerce 2.6
Our initial approach for this project was clear, we started generating a common and scalable application layer to communicate with the every modules using Linio API. This provided to us the ability to test all involved endpoints and generate a common configuration options for this embed app. The technical challenge was implementing this app to meet 3 different coding standards, one for every framework. This allowed to increase the interoperability between the different modules and have a common ground of operation and settings between the different modules as they simplify the understanding on how the modules works on all the environments before committing to do the heavy work of coding on each of the modules. Also simplifies the need for the support team to have different interfaces and options on each module.
The mentioned screens included all necessary to:
- Configure the API credentials allowing to validate them
- Configure the integration of each one of the categories that are locally to allow to set up which one of the Linio site will be mapped
- Allow to configure the mapping between each one the different attributes and values of the products for each one of the different categories
- Allow mapping brands between the local store and the Linio store, map the different shipping providers and link the products by they SKU or all the products of a category at once.
- Also, allow to show the information that the API show back on every asynchronous call made.
This allowed to understand how the API was retrieving the data and how we are able to send the information back to the API.
Magento 2 extension
As the first integration generated, we generated a new module for Magento 2.3 using PHP 7.2 support to allow to integrate any Magento site with the Linio store. As Magento has the ability to have different stores on them the module allows to sell each one of the store to different countries of the Linio stores.
The screens generated previously where integrated into the default Magento configuration system allowing a similar approach for all the modules generated. As we found different approaches to how Linio API handles the attributes against how Magento handles the product attributes and groups, we adjusted the implementation to allow to sync the categories, products, brands & product images from within Magento to the Linio store, so every time the store owner changes some property on the Magento store, the module will replicate the change in the Linio store. This is crucial to have the information updated and also allows to avoid selling on multiple channels the same stock if the stock availability is not synchronized.
Once that was completed the next step was to receive through a webhook the notifications to know that something has been done on the Linio storefront and synchronize that to the local database. For example, every time a new order is created that contains products from the seller store, the Linio API will sent a webhook with the information so that the store can create the order locally. This allows to seamlessly handle the order without interrupting any special setup that store owner has on Magento.
When the store owner generates the shipping for an order that was placed on the Linio store, the module will communicate with the Linio API to indicate this and if the configuration is set so the Linio Warehouse is handling the shipping, the module will receive the notifications and update the current status of the shipment of the order, including the tracking numbers associated with it.
All the critical information regarding the order workflow is been sync between the seller store and the Linio API, including order cancellation from within Linio or from the seller store, product deletion, updates on stock and changes on the images related to the product. After all internal QA testing was finished, we made a demo with Linio Integration team in order to show a preview for all those new features, explaining the different integrations that were made, detailing about new items between every system, the Linio support team would be handling most of them helping merchants with the different selling platform.
When we started the Prestashop integration we found that there a conflict between the version of the library used to communicate with the API through HTTP protocol (Guzzle) with the one that is native to the Prestashop system. Having this in mind an abstraction layer was added to the API SDK to allow to setup any of the version of the library to allow further compatibility.
Following the same approach we starting setting up the different screens to allow the configuration and integration of the different elements that were created on the initial phase. Also, we documented and reviewed the differences on how the PrestaShop system works to be able to sync all the elements between the Linio API and the PrestaShop internal data structure.
Same as before we were able to handle all the cases, test them and show them on a call with the support team as a demo.
This module was the more simple of all of them due to the simplest implementation details on the Wordpress extension which simplified the amount of decision and reviews required to handle the differences between the platforms.
Same as before the team was able to adapt the configuration screens to the WordPress WooCommerce integration and validate the mapping of product attributes, categories, shipping, orders and other elements to have a way to implement all the features from the Seller Center into the Wordpress integration. Finally, the plugin was presented to Linio team with a demo showing all new features and elements.
In addition to above modules and plugins, whose were completed and delivered to Linio, we also started working as part of the Linio Integration team. In that moment, we provided support to merchants in the process for integrating VTEX technologies stack with Linio Seller Center. Once the team was able to get familiar with the entire workflow involved in the integration process, we started taking more sellers and validate communication with the different systems, we helped their internal team recommending different tools and changes on the procedure to be able to handle our initial approach to make integration faster and troubleshooting particular sellers' situations.
Moreover, we are helping on the development, testing and validation of the gateway used to communicate between the Seller Center & the VTEX platform, allowing to fix issues found with the different sellers and validate the scope of new features to have them used on the support process.
In Q1 of 2023, we completed an important task updating the existing Shopify App integrated to company marketplaces, which involved updating the App Bridge and making modifications to the custom app to send new props required in the ShopifyProvider component. This was required because current app is embedded in the Shopify Admin panel. We had a meeting with Linio team to discuss about the feasibility of the major upgrade and we received valuable feedback that helped us complete the task effectively. We also reviewed the "app dual" approach in order to deploy just one app to support both Linio and Global Seller Center, which are currently two different marketplaces.
Additionally, we started replacing package koa-shopify-auth with the shopify-api-js and its dependencies required. This change not only improved the performance of the app but also ensured better security for the users. To make the app more robust and efficient, we also updated the node engine from v10.24 to v14.21.3 and upgraded the custom backend framework for running on newer node version. These updates helped us to leverage the latest features and functionalities and provide a seamless experience to the users. Overall, this task was completed, with significant impact on the Shopify app but it still a work-in-progress because of several dependencies with internal impact on other systems, which are being updated by Falabella internaly.
Global Seller Center SDK update
As Linio continues to grow, new challenges were taken to allow to have a more global perspective. With this new perspective the need to include more countries outside current targeted countries made necessary to increase the scope of the support for the Seller Center system. This core system of Linio has an SDK which allow to communicate the different integration with it and requires rework to adapt the functions, calls and parameters to the new requirements.
Our team is currently helping on refactoring, redesign and keeping retro-compatibility on the SDK code, adding unit test cases and validations allowing to take the SDK into the next level and support all the integrations as a core package within them.
- PHP: general-purpose scripting language geared towards web development.
- MySQL: open-source relational database management system.
- Magento: open-source e-commerce platform written in PHP. It uses multiple other PHP frameworks such as Laminas and Symfony.
- PrestaShop: freemium, open source e-commerce platform. The software is published under the Open Software License. It is written in the PHP programming language with support for the MySQL database management system.
- WooCommerce: open-source e-commerce plugin for WordPress. It is designed for small to large-sized online merchants using WordPress. Launched on September 27, 2011, the plugin quickly became popular for its simplicity to install and customize and for the market position of the base product as freeware.
- GIT is software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows.
- Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.