The PayPal Checkout express button displayed on the cart of your checkout can now be placed above the cart rather than under it. The setting which used to turn it on and off now asks where you want it, and shops which had it turned on keep it under the cart as before. Placing it above is useful when your checkout displays the payment methods right before the cart, since the button then sits with the other ways of paying rather than after the totals.
The affiliate program page your partners see on your website has been rebuilt. It used to show the same handful of totals since the day they joined, with no way to tell whether this month was better than the last one. It now opens on a dashboard: your partner picks a period, today, this week, this month or this year, and everything on the page follows it. The commission earned, the clicks, the sales and the leads of that period are each shown next to the same length of time immediately before, so the direction is visible at a glance, with the conversion rate as well when you let your partners see the advanced statistics. Under them are graphs of the commission over time split between clicks, leads and sales, of the clicks, and of the payments you have made them, then their best referring sites and their best banners. The totals since they joined are still on the page, below, where the amount you already owe them is told apart from the amount that is payable. Their clicks, leads and sales open as real pages of their account rather than in a popup, so they can be read on a phone and linked to. The page also gives your partners the tools they were missing: their affiliate link to your shop ready to copy, a field where they paste any page of your shop and get their link to it, a QR code for it, and a copy button on the HTML of every banner you offer instead of a box of code to select by hand. Nothing needs to be configured. If you wrote your own CSS for the previous page and want it back, the hidden setting "affiliate_legacy" can be set to 1 in the hikashop_config table of your database.
HikaShop can now be managed from a command line, so that your shop can be driven from a terminal, a cron entry or a deployment script without opening your backend. It uses the command line each platform already provides: the Joomla console on a Joomla site, with commands such as "php cli/joomla.php hikashop😛roduct:list", and WP-CLI on a WordPress one, where the same command is written "wp hikashop product list". Nothing travels over the network, since the commands run inside your own site on the machine it is installed on, so there is no key to create and nothing to open to the outside. You can list, read, create, change and delete your products, your orders, your customers, your categories and your coupons, set a stock level or a price, change the status of an order and notify the customer, and run the mass actions you already use in your backend. Commands that look after the shop itself are there too: run the scheduled tasks, read and change a configuration setting, empty the caches, and bring your database up to date after restoring a backup. Each command prints a readable table by default and can print JSON, CSV, or just the ids or the count instead, so its output can be piped into another program, and it returns a different exit code depending on whether the record was missing, the request was wrong or the account was not allowed, which is what a script needs to react. A command acts as the account you name, so the access levels of your site and of the HikaShop configuration decide what it may do, and your change log records who made the change. Anything the commands do not cover directly is still reachable, since the whole Connector API can be called the same way. The commands for your products, orders, customers, categories, coupons and mass actions come with the Connector plugin of the Business edition, while the commands for the configuration, the caches and the database are available in every edition ; running the cron this way needs the Essential or the Business edition, as the cron itself does.
The "Product page" menu item type can now carry the whole checkout on the page itself, so that a customer orders without ever leaving the product. A new "One page checkout" tab on the menu item turns it on and gives you the list of checkout blocks displayed under the product, with the same drag and drop editor as the checkout of your configuration, but for this page only: the checkout of the rest of your shop is not affected. The page opens with the product already counted in, showing its price, its taxes, its shipping cost and its total, without anything being written in your database until the customer actually orders something, so a visitor who only looks at the page does not leave an abandoned cart behind. Changing the quantity, the options or the custom fields of the product updates the totals, the shipping methods and the payment methods on the spot, without reloading the page, and there is no "Add to cart" button to press. Your customers are identified as guests, with their email address and their delivery address asked directly on the page, unless they are already logged in, in which case nothing is asked of them. The order button, whose text you can change, creates the order and sends the customer to the payment as usual. This is available in the Essential and Business editions.
HikaShop Business now has a mobile application, which lets you run your shop from your phone or your tablet, and from any browser. It is free, and you connect it to your site by scanning a QR code: the new "App Devices" page of the System menu of your backend creates a single use pairing code, and the application exchanges it for its own key, so your password is never typed into it. Each device that you connect is then listed on that page with the date it was last used, and can be revoked on its own, which is what you do when a phone is lost or when an employee leaves. From the application you follow your sales on a dashboard, receive a notification when an order arrives or when a product runs low on stock, and go through your orders to read them, filter them, change their status, edit their addresses, their products and their shipping and payment fees, or create an order by hand. You also manage your catalogue there: your products with their images, their prices, their variants, their characteristics and your own custom fields, your categories, your customers with their addresses, and your discounts and coupons. A barcode can be scanned with the camera of your device, or with a barcode reader, to find a product and correct its stock without looking it up. The mass actions that you set to be displayed on a listing of your backend also appear in the application, so your own bulk operations are available from your phone. Several shops can be connected to the same application and you switch between them from the menu. What each person is allowed to see and to change is decided by the access levels of your Joomla or WordPress site and by the Access levels tab of the HikaShop configuration, so you can connect a device for an employee and limit it to what they need. The application is not needed to run your shop and changes nothing on your site until you pair a device with it.
Your categories can now be imported from a CSV or XML file, with a new "Import" button on the categories listing of your backend. It opens the same wizard as the import of the orders: the first step takes your file, or the content of a CSV pasted in the page, and asks under which category the new categories should be created, whether the categories which are not on your site yet should be created at all, and whether the images given by an address should be downloaded. The second step displays the columns of your file with their first values and matches them with the columns of HikaShop for you. A category of your file is recognized by its id, by its namekey or by its name, so a file exported through a mass action can be filled in a spreadsheet and loaded back to update the descriptions, the SEO texts, the access levels, the images and your own category fields in one go. A file can also describe a whole tree at once: a row can name its parent category instead of giving its id, and the rows are saved in the order needed even when a category is listed before its parent. This works for the manufacturers and the other category trees as well, since the type of the imported categories follows the category you selected as their parent.
When your customers filter a product listing by a characteristic, for example by a color, the image of each product now automatically changes to the image of the variant that matches the selected value. A product that has a red and a blue variant shows its red image when the red color is selected in the filter, so your customers can see which variant is available without opening each product page. This happens when a single value is selected in the filter and the matching variant has its own image ; products that do not have a matching variant, or whose matching variant has no image of its own, simply keep their main image as before. Only the image is changed, the price, the stock and the add to cart still refer to the main product.
You can now link directly to a specific variant of a product by adding its characteristic value to the product page address. A link ending with ?hikashop_char=red opens the product page with the red variant already selected, showing its image and its price, and you can combine several values, for example ?hikashop_char=red,l for the red large variant. Each value can be given either by its name (its alias) or by its id, which is convenient to send a customer a link to the exact variant you want to highlight. In addition, when a product listing is filtered by a characteristic, the links to the products now carry the selected value automatically, so a customer who filtered by the red color and then clicks a product lands directly on its red variant. If the value does not match any variant, the product page simply opens on its usual default variant.
Your discounts and coupons can now exclude specific products, categories and user groups, in addition to the existing options that limit them to certain products, categories or user groups. Three new "Excluded products", "Excluded categories" and "Excluded user groups" settings are available in the restrictions of each discount and coupon. An automatic discount is not applied to a product that is among its excluded products or in one of its excluded categories, and is not applied at all to a customer who belongs to one of its excluded user groups, while every other product and customer keeps receiving it. This makes it easy, for example, to set a discount on your whole shop except one category or a few products. A coupon that would apply to an excluded product, an excluded category or an excluded user group is refused with an explanatory message. The excluded categories can optionally include their sub categories, and all three settings are left empty by default, so your existing discounts and coupons keep working exactly as before.
Your shop can now be served on several domain names, with one vendor per domain, thanks to the new "Domains" system plugin. HikaShop provides what that plugin needs on its side: when a domain is restricted to a vendor, its product listings, its category and manufacturer listings, its product pages and its RSS feed only show that vendor, and the links HikaShop builds stay inside the menu the domain belongs to instead of pointing at a menu item of another domain. Two new triggers, "onHikashopMenuItemsFilter" and "onBeforeProductFeedLoad", carry this and are available to any plugin. The plugin adds the domain field to your HikaMarket vendors by itself, so nothing has to be installed or updated on the HikaMarket side. Nothing changes on a shop served on a single domain, as these triggers do nothing when no plugin listens to them.
The HikaShop to HikaShop migration now brings your customers' user groups over from the old shop. Any user group that does not exist yet on the new site is recreated with the same name and the same place in the group hierarchy, and each imported customer is assigned to the same groups as before, instead of everyone being added to the Registered group. The access levels and the permissions attached to the groups are specific to each site and are not migrated, so you would review those separately if you use custom ones.
Bug fixes (11)
The button that inserts a product tag into your content, used to add a HikaShop product to a Joomla article or module, no longer breaks the JCE editor. The button handed its information to the editor in a form that JCE could not read, so JCE failed to load on those edit screens with a "Call to undefined method" error. It now works with JCE the same way it already worked with the other editors.
The frontend no longer fails with a "Call to an undefined function parse_ini_file()" error on shops that use the multilingual translations without Falang. To display the translations of your products and categories, HikaShop reads the language override files it stores for each language, and it did so with a PHP function that a few hosting providers disable for security reasons, which stopped those pages from loading. HikaShop now detects when that function is not available and reads the files another way, so the translated pages display normally again on these servers.
The product and category listings no longer fail with a "Layout ... not found" error when they are opened through an address that has no HikaShop menu item of its own, for example a direct or bookmarked link. In that case the listing used the layout of whichever menu item Joomla fell back to, and when that was a menu using a layout name that HikaShop does not have (typically the "blog" layout of a Joomla articles page set as the site home page), the listing could not be displayed. The listing now falls back to its default layout in that situation and displays normally. Listings opened through their own HikaShop menu item were not affected.
The HikaShop to HikaShop migration no longer sends an account creation email to each customer while it imports the users from your old shop. Because the users were created through the standard Joomla user creation, Joomla sent its "new account" notification for every imported customer, which could add up to thousands of emails and, on some servers, stop the migration once the hosting email limit was reached. The users are now created without triggering these notifications, so the migration stays silent and runs through to the end.
The product comparison page shows all the selected products again, instead of only the first one, on sites that have the search engine friendly URLs turned on. When several products were sent to the comparison, their identifiers were joined together in the address with a dash, which is also the character that separates the different parts of a search engine friendly URL, so only the first identifier could be read back and only that product was compared. The identifiers are now joined with a comma, so the whole selection is compared as expected. Shops without the search engine friendly URLs were not affected.
The frontend product search now finds your products by their translated name or description on shops that use the multilingual translations without Falang. When a visitor searched from a text search filter while browsing in a language other than the shop's default one, the search only looked at the original text of your products, so a product could be found by its default language wording or its code but not by the translated wording your visitors actually see on the page. HikaShop now also searches the translations you entered for the language being browsed, so a search for a translated product name or description returns the matching products as expected. Shops using Falang for their translations, and searches made in the default language, were not affected.
On shops that hide the product id from their addresses and use the multilingual translations, the first product of a category no longer returns a 404 error in a translated language when it has the same name as its category. HikaShop builds the translated address of a product from its translated name, so a product named like its category ended up with the same address as the category, and the two collided. HikaShop now automatically gives such a translated product address a distinct value, so the product page opens normally. Shops that keep the id in their addresses, and products whose name differs from their category, were not affected.
On the product edit page, a block that you create yourself under the form customization can now be repositioned like the built-in ones. The new block was missing its up and down move arrows and, because it was not recorded in the block order, it went back to the bottom of the form every time you saved. Such a block now receives its move arrows straight away and keeps the position you give it after saving. The built-in blocks were not affected.
Creating or saving a filter no longer fails with a "1054 Unknown column 'autocomplete' in 'field list'" database error. The autocomplete options that were added to the text filters were mistakenly written as columns of the filter table when saving, which does not exist, so the save was rejected. These options are now stored correctly with the rest of the filter settings and filters save normally again.
On Joomla 6, some HikaShop system plugins no longer break the module rendering of template frameworks such as T3, which could make the frontend layout, colors and sidebars display incorrectly. HikaShop loads a set of legacy class names so that older third-party plugins keep working, and on Joomla 6 it did so in a way that loaded Joomla's module helper too early, which prevented the template framework from applying its own module display. HikaShop now loads these legacy names only when needed and no longer registers them when Joomla's own Backward Compatibility plugin already provides them, so the template framework keeps control of the module display.
We fixed a medium severity open redirect vulnerability in the currency switcher, where a specially crafted link using a doubly encoded address could send a visitor to an external website after changing the currency. The address the visitor is sent back to is now decoded and validated before the redirection, so only addresses on your own site are allowed.
We've improved the view builder for the frontend product / listing and the category / listing view files.
We've drastically improved the perfomances of the product CSV import system in HikaShop. It should run at least 30% faster. We also made it more robust.
The Google Products plugin now checks the access level of the categories of the products so that if no category of a product is accessible based on the "user group" setting of the Google Products plugin, the product will be skipped.
We've updated the list of currencies.
We've worked on the currency edit form so that it is now easier to setup the price display for each one thanks to an interactive configuration interface.
The pagination is now reset on the orders listing when the payment method is selected for filtering.
HikaShop will now hide the pagination area of products listings on the frontend when it is not necessary.
The Smart search integration plugin now takes into account the access level of categories of products being indexed.
We've worked on the style of the view builder system so that it offers a cleaner interface.
We've added auto scroll to the elements in the view builder so that when you drag & drop an element, the code scrolls automatically to the corresponding code.
We've improved the rendering of the video player on the frontend product page. It will allow for a smoother experience by preloading the player when the page is loaded.
We've improved the handling of videos so that they will properly display even if allow_url_fopen is disabled on the hosting environment.
We've improved the display of the quantity input field so that even if frontend templates add a padding to the input fields, the quantity input field will still display properly.
We've unified the logic for price_site_id handling between listing and product pages to ensure consistency in price selection.
New features (13)
There is now a button "Generate copies" on the shipping methods listing and edit pages so that you can easily generate a lot of copies of a shipping method.
When the "Display view files" setting is activated, there is now an edit icon next to the view file name. When clicking on the icon, you'll get a popup with the view edit form, saving you a lot of time as you don't have to search for the view file in the backend to edit it.
You now have access to the translation interface when editing a filter for easy translation of the name of the filter.
We've added an "Address form layout" setting to the HikaShop configuration. You can now easily configure your address form on the frontend with a drag & drop interface. Thanks to this, you can build nice looking layouts. The system comes with a default one which you can just activate to get a good start.
We've added an import tool to be able to import data from WooCommerce.
We've added a migration tool to migrate your shop from J2Store / J2Commerce to HikaShop.
We've added export and import buttons to the shipping methods and payment methods listings in the backend in order to make it easier to migrate and generate methods.
It is now possible to import sub zones via CSV. This will greatly help when you need to add a large number of states, countries at once or if you need to create a new zone with a lot of sub zones.
User Points plugin: Added support for defining points earned per product via a custom field.
User Points payment plugin: Added support for defining point cost per product via a custom field.
We've added a "cancel operation" action to mass actions. This action will only work when the mass action is called via a "before" trigger. For example, suppose you want to make sure that all the products have a weight and dimensions when being configured in the backend, you can add a mass action with triggers "before a product is created" and vbefore a product is updated", filters on the columns product_weight, product_width, product_length and product_height being equal to zero, and an action "cancel operation". This can also be used to check user information during registration, checks on orders being created on the frontend, forbid the deletion of elements, etc. This action has an option "error message" so that you can display the error message you want to the user when the operation is cancelled.
The content tags now support the different ways to display discounted prices.
We've added the possibility to match the columns of the CSV with the possible columns in HikaShop in the product import tool.
There is now a "locked" column for the Order statuses menu. If you enable statuses under that column, then orders with these statuses won't be modifiable anymore besides changing their order status to another locked order status.
We've added certification support to the Google Products plugin.
We've added a new "export fields" setting to the HikaShop configuration page to be able to select which columns to export when using the "Export" buttons of products and orders listings in the backend.
We've added a "dashboard configuration" button on the dashboard. With it, you'll be able to customize your HikaShop dashboard in many ways: modify the settings of the default widgets, add new widgets, rearrange the widgets, the layout of the dashboard, add reports, etc. You'll also be able to export your layout, import a layout file, and load preset layouts.
We've added a scroll to code button in the view builder of views for easier customization.
We've added new settings for the material of the products and whether the content is for adults in the Google Products plugin.
You can now add videos from Youtube / Vimeo / Dailymotion to your products in the images area.
We've added a setting to the Geolocation plugin to be able to select a default service when the "all" choice is selected in the service setting.
We've added a new withdrawals feature in order to comply with the new EU Directive 2023/2673
We've added a new "delivered" status for orders.
We've added a new trigger "on MCP request" to mass actions.
The System HikaShop Massaction plugin has new options for MCP support. If an API key is set, it will automatically advertize all the mass actions with that "on MCP request" trigger so that MCP clients can use them.
The System HikaShop Massaction plugin includes a bridge JS file ( file plugins/system/hikashopmassaction/mcp_brigde.js ) so that a local nodeJS MCP inspector can be used to test the MCP tools created with mass actions.
We've improved the selector for multiple products in the backend of HikaShop. You will now have a checkbox for each product in the dropdown selector, and you'll be able to select many products before clicking on the new "Add" button in to add them all at once.
We've added a new integration to findIP.net for the Geolocation plugin.
The shop owner can now add a reply to comments in the backend.
You can now use the gallery system to select a file when editing a product.
We've added a new setting called "auto open on add to cart" for the drawer mode of the cart module.
You can now add an entry with the namekey order_notify_customer_default and the value 1 in the hikashop_config table in the database via your PHPMyAdmin so that the notification to the user is activated by default in the backend interface of HikaShop, when modifying an order.
We've added a new trigger "After an order is confirmed" to the mass actions of the data type "order".
The triggers of mass actions can now have parameters.
The "Display the results" action will output a JSON if the massaction is triggered by the "On HTTP request" trigger.
We've added a "On HTTP request (webhook)" trigger to mass actions. With this you can create endpoints for your HikaShop in order to have an API on your website. This way, third party software can call your API to retrieve data or load data or run massactions.
The HikaShop System massaction plugin now has an "API" setting which you need to activate in order to be able to use the "On HTTP request (webhook)" trigger. It also has an "API key" parameter your can fill if you want to restrict your API to only HTTP requests providing this API key.
We've added a "Send HTTP request" action to the massaction system. This way, you can configure massactions to call third party software APIs, manually or automatically. The system supports Basic and OAuth2 authentication and the POST and URL can be configured with tags in order to populate them with the data of the elements being processed by the mass action.
We've added a new setting to the Terms and Conditions in order to be able to provide a custom error message.
We've added a new setting "override category restriction" to the partner area of the user edit form in the backend so that it is possible to override the category restriction from the HikaShop configuration for each partner in the shop. That way, you can potentially configure different categories of products for different partners.
It is now possible to have bundled products for variants of products.
We've added support to the order edit backend view files for the view builder. That way, you can edit these views via the menu Display>Views in order to customize them, shifting things around without code knowledge.
HikaShop will now keep the user session alive when editing things in the backend on Joomla 4 and up.
A MySQL query error could happen for products listings with their relation setting set to "Other clients also bought" and the ordering column setting set to "ordering" and the random items setting turned off.
Following improvements in the previous version of HikaShop, the geolocation plugin could generate an error in some rare cases.
The icon of the "back" button on the trashed list page in the backend would not display properly.
We've fixed a deprecated message on PHP8 with the access level selection in some cases.
We've fixed a deprecated message on PHP 8 with filters on fields with the "dynamic display" setting of the filter activated and no product with a value selected in the custom field.
Characteristics displayed as radios wouldn't take into account the default variant with the "Characteristics dynamic display" set to No.
When you were editing a product in an order and you selected a tax rate and then changed the price with taxes and then directly clicked the "save" button in the popup, the modification wouldn't be taken into account. A similar issue would happen with the coupon value, the shipping fee and the payment fee in the additional information edit popup of an order.
When you were adding a new product in an order and you selected a tax rate and then provided a price with taxes and then directly clicked the "save" button in the popup, the product added to the order would end up without a price.
If you entered a price with a comma in the price without taxes input of the product edit / new popup of a product in an order, the decimals would be ignored.
With the "Floating tax prices" setting activated, the automatic calculation of the taxes when editing / adding a product or an additional information for an existing order wouldn't work properly.
We made a patch so that if you configure menu items from other components than HikaShop in the "HikaShop default menus" menu type, HikaShop won't change their linked component each time you update HikaShop.
We fixed an error on the product details page on PHP 7 when products have characteristics.
The residential flag sent by the FedEx shipping plugin would be sent for the shipper address instead of the recipient address.
The slide one by one mode of the carousel system of the HikaShop content module wouldn't work properly in some cases leading to the sliding to happen slide by slide instead of one by one.
A spurious "s" character would appear on the mass action edit form when a mass action would have its "Actions as a button" setting activated.
When the "zoom on hover" setting is deactivated in the HikaShop configuration and the "zoom on hover" is set to "inherit" in the menu item settings, the system was activating the zoom on hover mode on the frontend instead of deactivating it.
The CSS for the pinterest icon of the social networks plugin was referencing the wrong filename.
We've fixed two deprecated messages with the order creation when products in the order don't have taxes on PHP 8.3
We've made some modifications to avoid a deprecated message on PHP 8 when the user agent is not provided by PHP.
The "view all products" of the products listing of an order on the order listing on the frontend user order history page could sometimes be missing the current menu item information, which could lead, in some cases, to the order details page of that link displaying with the homepage menu item.
HikaShop now forces the rounding of the prices in the Structured data to avoid prices being rejected by Google because of too much decimals.
When configuring a report / widget to display a listing of the categories with the best sales, the system would take into account the total amount of the orders, not just the amount of individual products. This would result in amounts that could be way too big and not accurate, especially on websites where orders usually contain several products from different categories.
Tax rates with special characters in their namekey could generate an error in the edit popup of the additional information of an order, or in the new / edit popup of a product of an order in the backend.
Adding extra products to an order via the "new" button while having custom product fields displayed on the products listing could generate warnings on PHP 8.4
The order_product_tax_before_discount value would not be calculated correctly when the order would be created.
We've fixed an error with the new "Special Service type" setting of the FedEx plugin.
We fixed a problem with the English translation file.
Improvements (17)
We now better handle the saving of the cart to the database so that if a problem happens on that end and MySQL doesn't return an error to Joomla, the user knows there is a problem with it.
HikaShop will now check the user agent of requests before adding a product to the cart. If it finds it comes from a bot, the add to cart request will be refused. This should drastically reduce the amount of carts added to the database.
For new installations of HikaShop, the default cart check frequency has been reduced from 20 minutes to 1 minutes and the cart batch removal quantity has been increased from 50 to 200. This will drastically reduce the carts build up in the database.
We improved the routing of HikaShop when an alias is not provided in a product so that slashes in the name of the product will still allow HikaShop to route the URL properly.
The Google Products plugin now supports translations based on the current language being used when generating the XML.
We've improved the javascript of the checkout workflow editor in order to make it more resilient to spurious HTML added to the HTTP response by third party plugins.
On top of stopping the process, HikaShop will now display an error message when the customer tries to use an order payment link (received by email) if the administrator turned off the "Payment of orders not paid immediately" setting of the HikaShop configuration page.
HikaShop will now display not just the download links of the main product and variants, but also the download links of option products in the order details page on the frontend and all the order emails.
We've added a div with a class around the "the cart is empty" message of the cart module in order to make it easier to customize with CSS code.
We've improved the loading of the categories / brands / characteristics filters in order to load from the database only the data needed by the filter system. On top of speeding a bit the loading of the data of filters normally, will will also reduce the size of the user session when their "dynamic display" is turned on, allowing for a faster loading of the user session by Joomla when the session data is stored in the database.
The geolocation plugin now includes a bot detection system so that on top of the cache of the geolocation, the plugin won't query the geolocation service needlessly. It should help a lot to reduce usage issues with geolocation services.
The files download button on the order products listing of the backend order manager now has the name of the file instead of a generic "download" text so that it is easier to distinguish between the files when a product has several of them.
The FedEx plugin will now pass the status of the address (residential or not) based on whether the "address_company" field has been filled or not by the customer in the shipping address.
New features (4)
We've added support for Joomla 6.
We now have new options to be able to override the default form element classes. This way, it is a lot easier to adapt HikaShop forms on the frontend to match with templates not relying on standard Joomla classes.
There is now a new option to the user points plugin to be able to exclude discounted products from the earned points.