Features
← All features
Shop engine

CartiX

Screenshots are coming soon.

A detailed description is on its way.

Тема «Базовая» (default)

Референс-структура темы витрины CartiX (Smarty 5, шаблоны .html).

Структура

themes/default/
├── theme.json              # манифест: имя, версия, СХЕМА настроек
├── theme.png               # превью для галереи тем
├── templates/              # Smarty-шаблоны страниц
│   ├── layout.html         # каркас (наследуется всеми через {extends})
│   ├── home.html           # главная
│   ├── category.html       # листинг категории
│   ├── product.html        # карточка товара
│   ├── list.html           # страница списка товаров (is_page)
│   ├── brand.html          # страница бренда
│   ├── tag.html            # страница тега
│   ├── page.html           # CMS-страница
│   ├── search.html         # результаты поиска
│   ├── cart.html           # корзина (этап 3)
│   ├── checkout.html       # чекаут (этап 3)
│   ├── partials/           # переиспользуемые куски
│   │   ├── header.html  footer.html  product-card.html
│   │   ├── breadcrumbs.html  pagination.html  filters.html
│   │   └── (sort-bar, sku-options, services, product-features …)
│   └── blocks/             # контент-блоки
│       ├── hero.html
│       └── product-list.html   # вывод подборки (getList)
├── assets/                 # статика темы
│   ├── css/theme.css
│   ├── js/theme.js
│   ├── images/
│   └── fonts/
└── locale/                 # переводы строк темы
    ├── ru.json  uk.json  en.json

Ключевые механизмы

  • Клонирование: тема копируется целиком в новую папку (полная независимая копия, без наследования). Правки клона ни на что не влияют; обновления базовой темы в клон не переносятся — это самостоятельная тема.
  • Настройки (schema-driven): описаны в theme.json → settings.groups, редактор строит форму автоматически. Значения хранятся per-витрина, попадают в шаблоны как $theme.*.
  • Функции тем: {url}, {trans}, {money} (готовы), {getList} (вывод подборок), {hook} (точки расширения для плагинов — работают нативно на Smarty).
  • Данные: контроллер витрины собирает контекст (товар/категория/список/фильтры) и передаёт в шаблон. Логику в шаблонах не пишем — только вывод.
  • Безопасность: песочница Smarty (без {php}, автоэкранирование HTML).

Точки расширения (hooks)

storefront.head, storefront.body.start/end, header.end, footer.*, home.after.lists, product.after.buy, product.bottom, product.card.footer, catalog.filters.end, checkout.fields. Плагин подписывается — вставляет свой HTML.

2.62.1 19.09.2026

What we fixed

A ticked checkbox in the filter came back empty. The customer ticked, say, 40 W, the list narrowed, the filter chip appeared on top, but the checkbox itself stayed empty as if nothing had been chosen. This happened only with whole numbers: 6.1 was ticked correctly, 40 was not.

Out-of-stock products showed up in three places. A storefront set to hide them still offered such products in search suggestions, in the related products block under a product card, and in the product blocks on the home page. The rule now applies there too, and the move-to-the-end mode works in the home page blocks as well.

The sitemap updates right after storefront settings change. Until now it kept the previous set of pages for up to an hour: you turned on hiding of out-of-stock products, and the sitemap kept sending search engines to hidden pages.

2.62.0 19.09.2026

What is new

Each storefront now decides what to do with products that are out of stock.

Open Storefronts, then the Main tab: there is a choice of three options. The setting belongs to the storefront, not to the store, so if you run retail and wholesale on one catalog, each can have its own rule.

Show as is — how the store has worked so far: sold-out products stay in the lists alongside the rest.

Move to the end of lists — products stay on the storefront but come after those in stock. The chosen catalog order is kept: if a section is sorted cheapest first or arranged by hand, that order survives inside the in-stock and out-of-stock groups.

Hide from the storefront — products disappear from catalog sections, search, search suggestions, collections on the home page and from the sitemap. The product page itself stays available: links from emails, ads and customer bookmarks lead there, and answering them with a not-found page would be wrong.

Two rules the store keeps on its own so the setting does not work against you:

If ordering at zero stock is on, hiding does not apply to such products: you are ready to sell them, so the customer has to see them. Only products that cannot be bought are hidden, for example those whose variants are all withdrawn from sale.

In the hide mode the In stock filter disappears from the filters: there are no other products on the storefront anyway, so the filter would change nothing.

What to do after the update

Nothing is required: every storefront keeps its previous behaviour, Show as is. To remove sold-out products from the storefront or move them down, open the storefront settings and choose the option you need.

2.61.0 18.09.2026

What is new

Products in a category can now be arranged with the mouse.

A category could already be set to the Manual order, but there was no way to set that order: the store listed products in the order they had been added, so the setting changed nothing. Now open Catalog, then Products, choose a category and drag the rows: pick up a product, drop it on another one and it takes that place. Tick several products and drag one of them, and all the ticked ones move together and stay side by side.

The order can be changed on any page of the list, even the fifth one: the store remembers where you put the product and leaves the rest alone. Customers see this order when the category is set to the Manual sorting.

The product list opens in the order of its category. Choose a category arranged by hand and you see it exactly as the customer does, and you edit it right there. Choose a category sorted by name, by price or newest first, and the list shows the same order as the site. Until now the panel and the storefront had to be compared in two windows.

A product added to the category later goes to the end of a hand-made listing instead of jumping in front of the arranged ones.

Moving in from an old store now brings the order of products in categories when the old store knows it. That happens when connecting to its database; over the network the order is not provided.

What to do after the update

Nothing is required: categories where the order was never set stay as they were. To arrange a listing by hand, set the category order to Manual in its settings and arrange the products in the product list.

2.60.1 18.09.2026

What we fixed

Shipping and payment logos did not show up at checkout.

You upload the carrier or payment logo in the method itself (Settings, then Payment and delivery), and the customer account showed it. The checkout page did not: the store never passed the logo to the theme, so the theme could not draw it even when it tried. The second reason was less visible: the list of methods is redrawn every time the customer names a city or changes the delivery, and that redraw had no logo in it, so the mark would disappear right after the first recalculation.

Now the logo sits to the left of the method name and stays there through any recalculation. The Default, Market and Promo themes show it right after the update.

If your theme is your own or bought elsewhere, the logo is available in the method data under the name logo, both for a delivery option and for a payment method. The store sets the size itself, so there is no height to adjust in the theme.

What to do after the update

If your methods have no logos yet, open Settings, then Payment and delivery, choose a method and upload a picture: the customer will see it at checkout.

2.60.0 18.09.2026

What is new

A numeric feature can now be picked with checkboxes, not only with a slider.

Until now the customer filtered volume, weight, power and any other number with a from-and-to slider. When there are few values and they are round numbers, such as 5, 10, 30, 50 and 100 ml, this is awkward: the customer hunts for the number with the mouse and still gets the neighbouring ones. Now you can switch such a feature to a list of values, and the customer picks the volume with a single checkbox.

How to switch it on: open Catalog, then Product types and features, choose the feature (Volume, for example) and make sure Used in storefront filters is on. Below it you will see how the customer picks a value: a slider from and to, or checkboxes from the list of values. Save, and the filter on the storefront changes right away.

The view is set for each feature separately, so one filter column can hold both: volume as checkboxes and height, which runs continuously from 5 to 200 mm, as a slider. Keep the slider where there are many values and they are not round.

Next to every value the store shows how many products are behind it. A value that is missing under the current selection does not disappear, it dims, so the customer sees that such a volume exists in the store and simply does not match the rest of the choice. The mark is removed with the same cross at the top as any other value.

The setting works everywhere filters appear: in a catalog section, in search, on a brand page and on a tag page. Your theme needs no changes, including your own or a purchased one: the 30 ml checkbox is built for the theme exactly like the Blue one.

What to do after the update

Nothing is required: every numeric feature stays on the slider, as before. If one of them has only a few values, open the feature and switch on the list of values; the storefront shows the result immediately.

2.59.1 18.09.2026

What is new

The order status is now visible by color: the status name takes the same color you gave it in the settings. Previously only the mark on the left was colored, and the status column read as a solid grey list.

The badge for pending work in the menu is now prominent. Instead of a pale number next to the section name, the store shows a red circle, so you will see a new order even while you work in another section.

2.59.0 18.09.2026

What's new

You now build the filter column of a catalogue section yourself. Open «Catalog → Categories → Filters», choose «Build the list by hand» and put the list together: characteristics are added through search, the order is set by dragging, anything extra goes away with the bin. The buyer sees the column exactly as you left it.

Price, «in stock», «on sale» and warehouse became rows of that same list. They used to sit on top no matter what — now you can take them out of the section or place them below the characteristics.

Next to a characteristic the shop says how many products of the section have it filled in, and marks the ones that have none. A filter with nothing to narrow down never shows up on the storefront, and now you can see that before saving.

What we fixed

The order you set by hand fell apart on the storefront. The theme drew every characteristic with a list of values first, then the sliders of numeric ones and only then «yes/no»: a section with «Volume» in second place showed it last. Filters now follow the order you gave them.

A section with every filter removed still showed the buyer an empty column. Now there is no column at all and the products take the space.

Dropdown lists in the panel had no search where they should have: picking a characteristic, a language, related products and three fields in the general settings. These lists are searchable now.

What to do after the update

If you run your own theme, move the filter markup over: the column is drawn from the new filters.all data, and without that change its order stays as before — list characteristics first, then numeric ones, then «yes/no». The three themes that ship with the shop are already updated. How to do it, with a markup example: https://cartixx.com/docs/theme/data

2.58.0 18.09.2026

What's new

A theme can print the page text that the owner writes in the "SEO optimization" plugin with a single line — {seo_text}. The bundled themes now use this tag for the text at the bottom of the home page: it used to be a placeholder in the theme files, and now it is your own text, separate in each language. Until the text is written the theme shows its previous placeholder, and the "Default" theme shows nothing at all so that no empty block appears.

The tag also works without the plugin: the shop declares it empty, so a theme using it does not break. For theme authors it is described in the reference: https://cartixx.com/docs/theme/data

After updating

To write the home page text, update the "SEO optimization" plugin to version 1.3.0.

2.57.1 17.09.2026

What we fixed

In the order editor with courier delivery the street is now suggested from the carrier's directory: you start typing and the shop offers the names, so the waybill gets the street exactly as the carrier knows it. Previously a manager typed the street by guess and corrected the address by hand when issuing the waybill.

The order address is filled into the carrier's fields: an order with courier delivery already has a street, building and apartment, yet those fields opened empty and the address looked lost. The same fields are also no longer shown twice — the carrier asks for them itself.

2.57.0 17.09.2026

Important before updating

The section setting "Show products from subsections" had no effect on the site: a section always showed the products of all its subsections. The setting now works, and updating switches it on for every section, so the shop looks exactly as before. Where you need only the section's own products, switch it off there.

What we fixed

Moving a section into another section no longer breaks its links. The old address used to answer "page not found" together with every subsection and product inside it, and search positions were lost. The shop now leads visitors from the old link to the new one, just as it does when an address changes.

The product count in the section tree shows what a customer will see: drafts, hidden and archived products are no longer counted, and a rule-based section counts the products of its subsections too.

Switching a rule-based section back to a regular one no longer wipes the conditions you entered — switch it back and they are still there.

A product without a price no longer lands in a "cheaper than 100" section: an empty price used to count as zero, so such a section collected the whole unfinished catalog.

The old price in conditions is compared in the shop's currency. A product priced at 150 dollars no longer lands in an "old price up to 200 ₴" section.

Two conditions on purchase options now meet on the same item variant: a "red, size 44" section collects products that actually have a red size 44, not red on one variant and 44 on another.

The numeric feature slider no longer drops products the customer never touched: its bounds are calculated from the same data the selection uses.

Section conditions are checked when saved: a value from another feature, a from-to range on a list feature and a negative price are no longer saved silently but explained in plain words.

The page address for other languages (hreflang) on the second and later result pages points to the same page instead of the first one.

The sitemap is rebuilt right after a section is created, edited or deleted, instead of an hour later.

In the "Default" theme the product count is written properly ("1 product", "2 products"), and an empty section no longer offers to reset filters the customer never set. The "manual" product order has been removed from rule-based sections: products there cannot be arranged by hand.

2.55.1 17.09.2026

What's new

The heading and description pattern for SEO filter pages is now saved by its own button — you no longer have to create pages to keep it. Below the fields you see the heading it produces, and a line saying the pattern is shared by the whole shop. If the search line pattern has no feature value, the shop warns you: every page would get the same heading and search would treat them as duplicates.

What we fixed

Works with version 1.3.1 of the "SEO filter" plugin — update it together with the shop.

A pattern that is too long no longer breaks page creation with an error: the text is trimmed to the field length, and the refusal is written in plain words, without internal field names.

After updating

Update the "SEO filter" plugin to 1.3.1.

2.55.0 17.09.2026

What's new

The "SEO → SEO filter" section now has patterns for the headings and descriptions of pages the shop creates automatically. The heading is built from the category name, the feature name and its value — "Bottles volume 300 ml" — followed by whatever you add yourself: "buy wholesale in Kyiv, prices from…". You write the pattern once per shop language and every created page gets such texts. Works with version 1.3.0 of the "SEO filter" plugin.

After updating

Update the "SEO filter" plugin to 1.3.0 — without it there is nothing to save the pattern fields.

2.54.0 17.09.2026

What's new

You can now edit the header, frame and footer of emails to customers. The Notifications section has a new "Email design" block with a shared email template: there you change the header colour, the logo and the footer text, and the "Email text" variable marks where the text of each notification goes. Previously the header with the shop name was added to every email automatically, and there was nowhere to change it.

A single email can use "Own email template". The shared template is then not added, and the email goes out exactly as written in the notification, with your own header and footer. When you switch it on, the shared template is inserted into the email so you have something to start from.

On a product collection page, the theme can show categories above the list: both the categories chosen in the collection's conditions and the categories its products belong to, with a product count for each. What the template can use is described in the reference: https://cartixx.com/docs/theme/data

After updating

Nothing to do: emails keep their current design. If you have already written an email in full, with your own header, that notification has "Own email template" switched on.

2.53.5 17.09.2026

What was fixed

Markup pasted into the text editor source code turned into a single line without line breaks or indentation after saving. Text you pasted and did not edit in the visual mode is now saved exactly as you pasted it. If the text was edited in the visual mode, the source code is laid out line by line with nested indentation.

Wrappers with classes, sections and embedded video were dropped on the first edit in the visual mode: a block with a class turned into plain paragraphs. Such a piece is now kept whole and shown in the text as a "Custom HTML" badge. Double-click the badge to open the source code and change it.

The "Products" button in the editor toolbar showed a technical label instead of its name. It now shows regular text.

2.53.4 17.09.2026

What is new

A "by conditions" category can now be built by price. Choose "Price" in the conditions and set the range, for example from 0.01 to 5: the section will show products sold within that range, promotions included.

The accessories block can show how many items are in stock: {$acc.count}. It is empty when stock is not tracked for the product.

What was fixed

A "by conditions" category was empty on the site even though the admin showed its product count. Its products now appear on the storefront, in search within the category, and in product lists and promotions that target it. Products linked to such a category by hand while it was a regular one no longer show up in it.

If your own theme had no template for the product list page or the blog, those pages returned an error. The store now takes the missing template from the standard theme, while the header and footer stay yours.

What to do after the update

If you use your own theme, check that its templates folder has product-list.html, blog.html, blog-category.html, blog-post.html and blog-tag.html, and that its partials folder has blog-card.html. Without them the list and blog pages use the standard theme markup. To match the rest of your site, copy these files from themes/default/templates into your theme and style them. Theme structure is described here: https://cartixx.com/docs/theme/structure?lang=en

2.53.3 17.09.2026

What was fixed

A customer edited their name in the account, clicked "Save" and nothing happened: the page did not refresh and no confirmation appeared. After saving, the page now reopens with the new details and a "Profile saved" message. A company customer can now also correct the contact name, not only the company name.

Instead of "Profile saved", "Password changed" and "Current password is incorrect", the account showed technical labels such as storefront.profile_saved. It now shows regular text in the storefront language.

The "Company name" column in the order export was empty for every company order. The name is now exported, including for orders placed earlier. Print templates can also use {$customer.company_name}.

2.53.2 17.09.2026

What is new

The SEO filter can now build a selection page from a numeric feature such as volume, weight or diameter. In the page editor such a feature has "from" and "to" fields. To show exactly one value, for example 30 ml bottles, enter the same number in both fields.

What was fixed

Saving a selection page in the editor used to erase its number, price or yes/no condition, and the page started showing the whole category. All conditions are now kept.

What to do after the update

Update the "SEO filter" add-on to version 1.2.0: numeric features will not appear in the editor without it.

2.53.1 17.09.2026

What is new

The warehouse badge in the order queue now shows the amount that warehouse is picking instead of the quantity of goods. The amount matches the warehouse total on the invoice: line totals minus line discounts. Quantity and the number of items appear in the tooltip when you hover over the badge.

What was fixed

Clearing a category meta title, meta description or description and saving kept the old text in the database. Translated fields of products, brands, pages, articles, features and services could not be cleared either. A cleared field is now erased.

Selecting another category in the tree changed only its name, while the description, meta, conditions and other fields stayed from the previous category. The form now opens the selected category completely.

What to do after the update

If you edited categories after switching between them, check their descriptions and meta: fields of the previous category may have been saved into the selected one.

2.53.0 17.09.2026

What is new

A checkout form field can now be hidden from the customer and given a default value. This is how the mandatory "Contract" line gets into invoices and delivery notes: the customer is not asked about a contract on the site, every company order gets the default value, and a manager sees the field in the order and enters the real contract when there is one. Both settings sit next to "required" in the storefront checkout settings.

Document templates can use every customer field by its code: the contract prints as {$customer.contract}, the payer as {$customer.payer}. If a field code contains a hyphen, write it with an underscore in the template: the "rnokpp-payer" field prints as {$customer.rnokpp_payer}. The variable hints in the template editor list these fields by name. An empty field prints its default value, including in orders placed before the field existed.

What was fixed

A document PDF is now built the same way the browser prints it. When a template prints several invoices in a row, for example one per warehouse, each invoice starts on a new page instead of running together with a break in the middle of a table.

Ticking "required" on a checkout field no longer moves the field to the end of the form.

2.52.0 17.09.2026

What is new

Order export has a new "Product as a line" column: each item is written as one phrase, the way it appears on a picking list, for example "Aluminium cap (Black, 28x18 mm)(0104) - 50 x 4,50 UAH". The picker no longer has to combine name, SKU, quantity and price from separate columns. Prices without cents are written as whole numbers.

For files that are printed or read by eye, there are now "Price with currency", "Warehouse total with currency" and "Total with currency" columns, so an amount can no longer be mistaken for a quantity. Choose the columns in the export set settings.

What was fixed

If your shop moved from Webasyst, transferred orders showed no warehouse letters in the order list, even with "Show shipping warehouse" turned on. Every such order now shows which warehouse it was picked from and how many items came from it. The warehouse is filled in automatically after the update; there is no need to transfer orders again.

2.51.0 11.09.2026

What is new

A document can now open with the print dialog already up. Until now the buyer clicked the invoice link, saw the paper and had to find a way to print it: on a phone printing hides in the «Share» menu. The theme can now say «open for printing», and the dialog appears by itself as soon as the page has loaded.

Printing is called after the page is fully loaded, not right away: otherwise the sheet goes to the printer without the logo and the stamp, which had not loaded yet.

How to add it to a theme, with ready-made code, including printing without leaving the page: https://cartixx.com/docs/theme/tags?lang=en

After the update

Nothing to do. The links to forms already in your theme keep working as before — the print dialog appears only where the theme asked for it.

2.50.0 11.09.2026

What is new

A print form now shows its code. It is written in the form itself, in Settings → Print forms, as the «Form code» line next to the switch, and a button copies it; in the list of forms it sits under the name. The theme refers to the form by this code when it shows the document to a buyer — until now there was nowhere to take it from.

A document for the buyer can be asked for in another language. By default the paper comes out in the language of the order: it was placed in Ukrainian, so the invoice is Ukrainian, even if the buyer is browsing the shop in Russian right now. The theme may say otherwise and give, say, an English invoice to a partner. Only languages your shop works in can be asked for.

Examples for the theme: https://cartixx.com/docs/theme/tags?lang=en

Fixed

The link to a print form in the customer account did not work: the theme wrote exactly what the documentation says and got nothing back. In the account the shop refers to an order by its number, not by the internal row code, and the helper did not recognise it. It now understands the number, the internal code, and a formatted number such as «№1024».

After the update

Nothing to do. If you already put a link to a form in your theme and it never appeared, it will now.

2.49.0 11.09.2026

What is new

Buyers can open their own paperwork for an order. Until now only the «Payment by invoice» add-on could show an invoice, and nobody could show a delivery note or a warranty card: a manager printed them and sent them by hand.

The theme now has a helper that puts a link to any of your forms from Settings → Print forms wherever you want it. What to show and where is up to you and whoever maintains your theme: the invoice in the customer account, the delivery note on the «Order placed» page, nothing at all. The link opens a print-ready page, and a PDF link can sit next to it.

The buyer gets exactly the paper the manager prints: the document number and date are issued once, so your accounting and your customer hold the same invoice no matter how often it is opened.

The shop takes care of two things so the theme cannot get them wrong: only the person the order belongs to gets a link, and a form that is switched off or empty gives no link at all — otherwise the buyer would click a button leading to «page not found».

How to add it to a theme, with examples: https://cartixx.com/docs/theme/tags?lang=en

After the update

Nothing to do: until the theme carries a link, nothing changes for buyers. If your theme was not written by us, show the documentation page above to your developer — one line in the order template is all it takes.

2.48.0 11.09.2026

What is new

The shop can now decide which delivery and payment methods each buyer sees. Until now a method could only be switched on or off as a whole: if you accept bank invoices, both companies and private buyers saw them, and cash on delivery was offered even on a twenty-thousand order. Now you write rules: «companies pay by invoice only», «cash on delivery up to 5000», «pickup for our own customers», «prepayment on the first order».

Rules live in Settings → Payment and delivery, as a third list under the methods. A rule is four things: what it applies to (delivery or payment), what to do (hide the chosen methods or keep only them), the methods themselves and the conditions. The conditions are the same ones the discount rules use: buyer type, cart total, weight, number of products, products in the cart, customer category, whether this is their first order, how much they bought before, a schedule by days and hours. A payment rule has one more condition — the chosen delivery method: that is how «cash on delivery with Nova Poshta only» is built.

A rule can be switched off without deleting it: it stays in the list and waits for the next season. Rules only remove methods and never bring back what another rule removed, so their order changes nothing. Orders created by a manager are not affected — they take orders over the phone and may pick any method.

How to set it all up, with examples and screenshots: https://cartixx.com/docs/engine/method-rules?lang=en

Order export got three warehouse columns: «Warehouse total», «Lines from warehouse» and «Units from warehouse». With a row for every product, every row of one warehouse carries the same number, so the picker sees their part of the order at once instead of adding rows up in their head. The totals of all warehouses add up to «Items total».

Fixed

Quantities in the order export were rounded to whole numbers: 8.4 m² of flooring left as «8», and the warehouse shipped something other than what was bought. Fractional quantities now arrive as they are, while whole ones look the same as before — «10», not «10.000». The same was fixed in the «Order contents» column.

Checkout accepted any payment method id that came in the request: neither the storefront it belongs to nor «switched off» was checked. The method must now be in the list the shop showed the buyer.

After the update

Nothing is required: there are no display rules after the update, and every buyer sees every method, as before.

Once you create a rule, open the checkout and look at it through the eyes of a buyer — especially if you chose «keep only the chosen ones». A rule that keeps only invoices, combined with invoices switched off, leaves the buyer with no payment method at all.

2.47.0 11.09.2026

What's new

Order export can now separate orders with a blank row. With a row for every product an order takes as many rows as it has items, and there was no way to see where one order ended. The setting sits in the export set, next to "A row for every product".

Order rows can be sorted by warehouse: the products of one warehouse go together instead of being mixed up, so the picker no longer hunts for their rows across the whole order. The setting is in the same export set.

A customer paying by invoice now sees a payment link in their account. Before, the link was only in your order card: the customer opened "My orders" and found neither a button nor an invoice, and you had to send the link by hand.

The shop shows unfinished work. Refreshing a carrier directory, moving the catalogue into search and loading the list of towns run for hours in small portions, and a run that broke off left no trace: the shop said "not running, not finished, no errors". Such work now appears in Settings → Diagnostics as "Unfinished work" — named after the button you started it with.

Fixed

On the order payment page, right under the "Invoice" button, the shop said "this order is paid on delivery". The line appeared for every method that does not lead to a bank page and plainly contradicted the button: the money comes by bank transfer, not from a courier.

The shop no longer offers to pay an order that is paid on delivery. The payment link used to be in the order card, in e-mail, in SMS and in the bot: the customer opened it, read "this order is paid on delivery" and called to ask what to do with it.

After the update

Update the "Payment by invoice" add-on to 1.2.0 — without it the payment link will not appear in the customer's account. If you use the "Telegram" and "Nova Poshta" add-ons, update them too: 1.12.3 and 1.4.3.

If you run your own theme, update the order payment page in it: the line about payment on delivery is now switched on by the $show_offline_note variable, and without that edit it stays where it was. What the page gives the template — https://cartixx.com/docs/theme/data?lang=en

2.46.2 10.09.2026

Что починили

Суммы, цены и количества в выгрузке заказов попадали в Excel текстом: итог по колонке не считался, а сортировка по сумме шла по алфавиту — «9» оказывалось больше «44990». Теперь число лежит числом, а денежная колонка показывается как «1 234,50».

Дата заказа тоже была строкой и сортировалась по первой цифре: январь следующего года вставал перед сентябрём текущего, а отбор «с 1 по 15 число» в сводной таблице не строился вовсе. Теперь это настоящая дата, и выглядит она в файле так же, как раньше.

Номер заказа, артикул, телефон с ведущим нулём, почтовый индекс и длинный штрихкод остаются текстом. Иначе у телефона пропал бы первый ноль, а штрихкод Excel округлил бы: за пятнадцатью знаками он перестаёт хранить цифры точно.

Большая выгрузка в Excel могла не открыться совсем. Магазин записывал оформление каждой ячейки отдельной строкой списка форматов, и на десяти тысячах заказов их набиралось больше, чем Excel соглашается прочитать.

2.46.1 10.09.2026

What we fixed

The order list filters no longer disappear. A manager would filter the orders, open one of them, refresh the page — and the list showed the whole store again. The chosen filters now live in the page address: they survive a refresh, and a link to the selection can be shared with a colleague.

In the export, product features were taken from the product only. For a product with variants they are usually filled in on the variant itself — the customer bought a 50 ml flask, while the file got the product's value or an empty cell. The value of the purchased variant is used now.

Address columns starved each other: with both "Where to deliver" and "Street" and "Region" in the same set, some columns came out empty.

Recipient fields in the file were named exactly like the customer's ones: "Phone" stood next to "Phone", and only the column order told you which was which. They are now labelled "Recipient: …".

A personal export set of a dismissed member of staff stayed in the store and showed up for everyone else. It now leaves together with them.

2.46.0 10.09.2026

What's new

An order export is now built from the fields you actually need. They are grouped: order, address and tags, customer, recipient, product, product features. Besides the usual number, total and status you can now export the update date and the payment date, the amount left to pay, the order rate, the address in parts — country, region, city, street, building, apartment and postcode — the carrier's branch, the promo code and the advertising tags.

Customer and recipient fields are exactly the ones your checkout asks for, including the ones you added yourself. Values come from the order itself rather than from the contact card: cards get edited, while the order remembers how it was on the day of the purchase.

There is a new "a row for every product" mode: an order with three products gives three rows in the file, with the order number and the customer repeated in each. That is how the warehouse and accounting read the file. Along with it come product fields — name, SKU, quantity, price, line total, discount, warehouse — and product features from your own directory: volume, length, weight, whatever is filled in.

An export set now has a note saying what it is for and a "my set only" mark: a manager's personal set is not shown to everyone else. Fields inside a set can be found by name — there are more than a hundred of them.

Five more filters are available for the order list: update date, payment date, waybill number, the customer's first order, and a product in the order — by name or SKU. You turn them on where the others live, in "Order settings → Filters in the list".

What to do after the update

Open "Order settings → Filters in the list" and turn on the new filters you need — the default set of filters has not changed. Export sets need no attention: the old ones keep working.

2.45.3 10.09.2026

What we fixed

The product photo in the order editor no longer breaks the line. Nobody had set a size for it, so on a narrow screen it took half the screen and the quantity and price fields landed on top of it.

The customer's initials in the order card sit in the middle of the circle. They used to drift up and to the left and were painted pale grey, like the caption under the name.

The order card no longer keeps a button for the current status among the transition buttons. It did nothing, and the status is already written next to the order number. Only the statuses the order can actually move to are left; a member of staff who may not change statuses does not see the row at all.

2.45.2 10.09.2026

What we fixed

The cart total in the header shows the cents again. The browser used to build that line itself, rounding the sum and writing its own currency sign: the header said "100 UAH" where the store printed "99.50 ₴". The line now comes from the store ready-made — the same one the cart and the checkout print.

If the header total should go without cents, the theme asks for the short line itself: put data-cart-total-header="short" on the total element. The "Market" and "Promo" themes do exactly that.

What's new

Customers can see and edit their patronymic in their account. The store asks for it at checkout, but the profile page knew nothing about it: the field in the theme showed an empty box and saving silently lost what was typed. The field is now in all three bundled themes. With your own theme, add a field named middle_name with the value {$profile.middle_name} to the profile form and the store will accept it; a theme without that field works as before and the patronymic in the contact card stays untouched.

2.45.1 10.09.2026

What we fixed

Products from the "Recommended" block on a product page can be added to the cart again. When a theme puts such a block inside the product card, neighbouring products were given the variant of the open product, and the store refused to add them. For the same reason the price of neighbouring cards changed whenever the customer switched a colour or a size.

The customer's patronymic is visible everywhere the store shows a name: in the order list, in the order card and in the customer's account. The order name was built from the surname and the first name only, so the patronymic the customer typed stayed invisible. Along with that, the order card now shows the manager every field the store asked for at checkout — previously only the name, company, tax number, phone and email were there. For a returning customer the patronymic now reaches their contact card as well.

An order status code accepts a hyphen. Statuses moved from another platform are named after their own titles — "udalit-admin"; such a status could be neither renamed nor recoloured, because the form rejected a code the store had written itself.

What changed in the way it works

A customer signed in to their account now edits their own card right at checkout: changed the surname or the patronymic in the order form, and the card says the same. Phones and emails are added to the existing ones rather than replacing them. For a customer without an account the rule stays as before: the store fills in only what the card does not have yet.

2.45.0 10.09.2026

What's new

Orders moved from another platform can now be linked to your own payment and delivery methods. The old store sends only the method name, so such an order did not know how it was paid for or shipped: the customer saw no "Pay" button in their account, the waybill knew nothing about cash on delivery, and filtering by method did not find these orders. You say once which of your methods matches the name from the old store, and the store applies it to every such order at once — order amounts stay untouched. The linking screen lives in the "Migration from other platforms" add-on: update it together with the store.

Your theme now knows which delivery and payment method an order actually uses. Names cannot tell them apart — you rename and translate them — so order data now carries the method ids: the theme can show its own note for pickup and a tracking link for a carrier. What the theme gets on the order page is described here: https://cartixx.com/docs/theme/data?lang=en

What we fixed

The status colour and icon you chose in "Order settings" are visible again in the order list, in the order card and in the print dialog. The list coloured statuses its own way, so your green "In progress" with its own icon looked like every other status — both settings changed nothing.

What to do after the update

If you moved your store from another platform, update the "Migration from other platforms" add-on to version 1.12.0, open the "Migration" section and link the payment and delivery methods — you will see the list of names from your moved orders there.

2.44.1 08.09.2026

What we fixed

A product that was sold out in the old shop arrived in the catalogue as a product whose stock is not tracked — it went on sale as always available, and the shop took orders for goods that were not in the warehouse. An empty stock value means exactly "we do not track stock here", while zero means "out of stock"; the migration confused the two and lost zero stock levels.

What to do after the update

If you have already moved a catalogue from an old shop, open the migration and run the Products step once more. It fills in the missing zero stock levels and touches nothing else: prices, photos and orders stay as they were, and no extra entries appear in the warehouse journal.

2.44.0 08.09.2026

What's new

Customers now see their whole order in the account area, not just its number, date and total. The order page shows the items with photos and links to the products, the services chosen for each item and the old price, and below that the full breakdown of the total: items, services, discount, delivery, tax and points spent. The lines add up to the total to the penny, so a customer can check the bill without writing to you.

Next to the order status there is now the payment state: Paid, Awaiting payment, Partially paid. It also appears in the order list and in the account summary together with the amount still due — customers used to open every order one by one to find out which one they still owed for. When an order is paid through a bank and the money has not arrived yet, a Pay button appears on the order page, so the customer does not have to hunt for the email with the link.

The shop also shows customers everything they entered at checkout: contact details, company details, another recipient together with their details, the full delivery address with the region, the postal code and the chosen branch, the callback request, the waybill number, and the times the order was placed and paid. The fields are named exactly as you named them in Checkout settings.

Customers see the names of the discounts that applied and the promo code as well, so they understand why the price went down instead of staring at an unexplained "Discount −150".

What to do after the update

If you run your own theme or a copy of one of the bundled themes, move the order page and the order list from the updated themes into it. Your own theme is updated separately, and without that the new details will not reach your customers.

Everything your theme now receives — the order fields, the items with photos, the customer, another recipient, the address with the branch and the status history — is listed with markup examples here: https://cartixx.com/docs/theme/data

2.43.0 07.09.2026

What's new

The store now shows how many products stand behind each characteristic and behind each of its values, and it can pick out the ones nothing stands behind. Reference books grow with every migration and every price list you load, and until now there was no way to tell what was created "just to try" from what the whole catalogue rests on.

Duplicates are now merged instead of deleted. Two characteristics about the same thing — "Colour" and "Product colour" — or two spellings of one value — "Red" and "red" — become a single record: the products move to it on their own, and the conditions of product lists, discount rules, section filters and similar-product matching move with them, while the brand page keeps its description and logo. You can merge characteristics of the same kind that take their values the same way; system characteristics are left alone.

The Product types and characteristics section has a new screen, Reference values. It searches for a value across every characteristic at once: you remember the word "Red", and the store shows which characteristics it lives in, which product types it appears in and how many products stand behind it. The same screen removes, in one go, the values that no product stands behind.

Values can be added as a list. Paste a column from a spreadsheet — one value per line — and the store creates them all at once, skipping empty lines and repeats. For a colour, the code can be written right in the line: "Red #ff0000".

The store writes the characteristic code itself, from its name, until you correct it by hand.

What we fixed

The store no longer offers to delete a value that products stand behind. The confirmation used to promise that no product stood behind the value, and only refused after you pressed the button. Now you see straight away how many products rely on it, and are offered to merge it into another value.

Numbers in messages agree with the words around them: "is set on 1 product", not "on 1 products".

2.42.0 05.09.2026

What's new

A product list or a dynamic section can now be built by a number: volume, weight, length — by any feature your products hold as a number. The condition is set with «from» and «to», and the feature's unit stands next to its name so nobody has to guess whether it is millilitres or litres. Promotion and catalogue-discount targets run on the same conditions, so a promotion «everything of 30 ml» can finally be written — before there was no way to state it at all.

The shop no longer asks a feature for its format before its kind. A numeric feature behaves as a number everywhere: in bulk editing, in a price-list upload, during a move from another platform, and when products are selected.

What we fixed

Bulk editing wrote a list value into a numeric feature instead of a number. The owner picked a hundred flacons, chose volume «10» — and the shop remembered a dictionary row rather than the number: millilitres disappeared from the shop front, and the accessory group «for 10 ml flacons» did not find those products. A numeric feature now gets a number field with its unit, and the shop refuses a dictionary reference no matter where the request comes from.

A price-list upload created new dictionary values out of numbers: after every upload the volume vanished from the shop front and the value list grew with rubbish like «10», «12.5». Such a cell is now read as a number.

A dynamic section with a volume condition stayed empty, and the catalogue filter showed one feature twice — as a value list where every value had zero products, and as a slider.

Undoing a bulk change did not work for numbers: the shop compared what it had written with what the product holds, the values differed in a trifle, and the undo silently skipped every product.

Volume and weight went into exports and marketplace files as «10.000000» and without a unit. The file now carries «10», and the unit travels in its own field, so the marketplace writes «10 ml» itself. The product list column and the printed label also show the value with its unit, and a yes/no feature shows a word instead of a tick.

Search found a product by a feature only when the value came from a list. A number was not indexed at all, and that hit the catalogue repair: while volume sat as a dictionary reference, a search for «30 ml» worked, and after the move to numbers it stopped.

What to do after updating

If your catalogue was moved from another platform, open «Settings → Diagnostics» and look at the numeric features check: it now finds the cases it used to miss. Press «Repair», then check the volume and weight conditions of your accessory groups, sections and product lists — they have to be set as numbers.

If you export to marketplaces, update the «Universal XML feed» add-on: the unit reaches the file only with it. Owners of «Price tags and labels» should look at their layouts after updating — the value grew by its unit, and a narrow label may run out of room.

2.41.0 05.09.2026

What's new

Diagnostics now checks numeric features. It finds features of the «number» kind whose values are set as a list — that is how a shop looks after moving from another platform, where volume or weight were picked from a ready-made list. The shop shows which features these are and how many product records it can turn into numbers, and repairs them with the «Repair» button: no console and no scheduled task needed.

Values that cannot be read as a number («no volume», «on request») are left alone, and the shop tells you how many are left. It will not invent a number for you — you edit such products yourself.

What we fixed

After a move from Webasyst a numeric feature arrived as a list of values, and the catalogue fell apart: some products kept volume as a number, others as a list value. On the product page the field stood empty and asked you to pick a value, and an accessory group with a volume condition showed up on no product at all. The move now matches the feature kind right away and creates a numeric feature with number input.

What to do after updating

If your catalogue was moved from another platform, open «Settings → Diagnostics» and look at the numeric features check. If it found trouble, press «Repair», then check the volume and weight conditions of your accessory groups.

2.40.1 05.09.2026

What we fixed

A numeric feature now shows its value in the product card. Volume, weight, length and power arrive from the shop as a decimal number, and the field would not take it: the storefront printed «Volume 10 ml» while the card stood empty, as if the feature had never been filled in.

A feature of the «number» kind that also has a list of values now asks for a number everywhere. The product card used to draw a dropdown for it and say «Choose a value» even though the product had one, and in the conditions of an accessory group such a feature could not be set as a number at all — the owner picked a list value no product carries, and the group appeared on no product.

What to do after the update

If you set an accessory group condition on volume, weight or another numeric feature, open the group and set it again: it now has «from» and «to» fields. To offer pipettes for 10 ml bottles, write 10 in both.

2.40.0 05.09.2026

What's new

An accessory group can now be attached by volume, length or weight — by any feature your products fill in with a number. To offer pipettes only for 30 ml bottles, pick the volume feature and write 30 in the «from» and «to» fields. One bound may stay empty: «from 50» means 50 and above. The condition used to accept list values only, so volume or weight could not be expressed at all.

A group can be removed for a single product, even when it arrives by a rule — by product type, category or feature. The shop remembers that decision for the product: the rule and the other products stay as they are, while the removed group is listed separately and comes back with one button.

What we fixed

A group with two conditions appeared on a product that matched at least one of them: pipettes for 30 ml bottles were offered for 50 ml and 100 ml ones too. Now a product has to match every condition at once. Values of one feature still stay alternatives — «volume 30 or 50».

What to do after the update

Open your accessory groups and check the conditions on volume and weight: they have to be set again as a number instead of a value from a list.

2.39.2 05.09.2026

Feature conditions of an accessory group narrow each other

A group of related products with two conditions — say «Volume 30» and «Neck type DIN18» — appeared on any product that matched at least one of them. Pipettes meant for 30 ml bottles were offered for 50 ml and 100 ml bottles too: the second condition narrowed nothing.

The conditions now work the way the screen describes them. Values of one feature stay alternatives («volume 30 or 50»), while different features add up: a product has to match both the volume and the neck type. A product that does not have such a feature at all no longer matches the condition.

2.39.1 05.09.2026

An accessory group can be removed for a single product

A group of related products reaches a product card in more ways than one: it can be attached to a product type, a category or a feature value. There was no way to remove such a group for one product — you either changed the rule for the whole catalogue or lived with the extra block.

Now the «Accessories» section of a product card lets you remove any group, no matter how it got there. The shop remembers the decision for that product: the rule and the other products stay as they are, and the removed group is shown separately so you can bring it back with one button.

2.39.0 05.09.2026

The shop migration tells you about languages

A move now remembers more than numbers («824 products found»): it also keeps what the source knows about the old shop — which languages the content is filled in and how many translations there are. You see this when the connection is checked and for as long as the move runs, even if you closed the tab and came back later.

Languages used to be guesswork: the move showed only «500 of 824 transferred», and whether the translations would arrive was impossible to tell.

2.38.0 05.09.2026

The shop migration takes photos from disk

Photos used to be downloaded from the old site during a move, and a site only serves a downscaled copy: the originals sit in a closed folder and are not available over the network. Now, when the files of the old shop are within reach — it stands on this same server, or a bridge file lies next to it — the migration takes the original straight from disk. Photos arrive in full size and noticeably faster.

Updating the shop now also updates the screens of installed add-ons: previously, after an update the add-on version in the list was new while its screen opened the old one.

2.37.0 05.09.2026

The shop needs PHP 8.4

The shop now states plainly which PHP version it runs on: 8.4 or newer. It is written in the requirements, on the installation screen and in the shop self-check. Previously the installation on an older version broke off with a technical message that explained neither what had happened nor what to do next.

If the shop is opened on an older version anyway, instead of a blank screen you get a page that explains it: which version the server runs now, which one is needed and how to switch it in your hosting panel. The shop data is fine — it simply does not start on the old version.

2.36.0 05.09.2026

The shop migration now shows what is happening

The migration screen said «migration in progress» and nothing else: which part the shop was on, how much had been moved and whether anything was working at all was impossible to tell. Above the buttons there is now the current step with its number («Step 4 of 7 — Products and articles»), a progress bar, how many records have been moved out of how many were found, how long the migration has been running and how many records did not make it. Below are all the stages: the finished ones with a tick, the current one and those waiting their turn, each with its own counter.

The shop learns the amount of work at the connection step — where you see «found 824 products, 78 categories». Those numbers used to be lost right after the connection test; now the migration remembers them and counts the share from them.

2.35.0 04.09.2026

Order history: filtering and pages

A regular customer accumulates hundreds of orders, and a single page turned the list into a wall of rows. Orders are now split into pages, and a filter sits above the list: delivery method, payment method, order status and a date range. The choices offered are only the ones that appear in the customer own orders — there is no point offering a carrier they have never used.

The list is redrawn in place, without reloading the page, and the choice stays in the address: the customer can save such a link or return to it with the Back button. The filtering is driven by the shop while the markup is drawn by the theme, so it works in a theme written by anyone.

2.34.0 04.09.2026

Orders in the customer account make more sense

The order list now answers the questions a customer comes for: the delivery and payment methods with their logos, the number of items, the waybill number and the comment they left, all next to the order number. The same on the order card. Order history names statuses in words — it used to show service codes such as «processing». The total in the list stays in the currency the customer paid in, and the extra hash sign is gone from the number. A text page icon is shown in the menu and in the footer.

Checkout explains its refusals in plain language

An empty city used to produce «The address.city field is required» — now it says «Please name the city». The same for the delivery method, the payment method and the agreement. Text that arrives in an unknown encoding is refused with a clear message instead of failing later while the order is saved.

Small things that got in the way

An article number belonging to another product no longer slips into the cart silently — the shop refuses it. A link to an offered accessory opens exactly the variant that was offered. The site icon is accepted in .ico as well, the format the panel offered to choose. The SQL, mail and notification logs became daily and clean themselves up: query logging left switched on used to grow by gigabytes and fill the disk.

2.33.0 04.09.2026

Orders in the customer account now tell their story

A customer opens their account with two questions: where is my order and how did I pay. The order list only had the number, the date, the status and the total — everything else meant opening each order. Both the list and the order card now carry delivery and payment (the method name and its logo), the comment the customer left at checkout, the number of items and the waybill number they use to follow the parcel with the carrier.

The logo is uploaded on the method itself, in «Payment and delivery»: a customer recognises a carrier or a payment system by a familiar mark faster than by its name. An SVG or a small PNG will do.

2.32.0 04.09.2026

The shop now accepts SVG for logos and icons

Icons and logos are usually drawn in SVG: it stays sharp on dense screens and weighs little. The shop used to reject such files: an SVG saved by a graphics editor starts with a service comment, and the server reads it as plain text — the owner saw «unsupported format» on a perfectly good picture. SVG is now accepted everywhere a shop image is uploaded: logos and branding, the category menu icon, the characteristic icon, the brand logo.

The file is stored cleaned: scripts and requests to third-party servers are removed, and if the editor did not write the namespace, the shop adds it — without it a browser simply will not draw the icon.

An icon for a text page

Pages such as «Delivery», «Payment» and «Contacts» now have their own icon, uploaded on the page card. A theme receives it along with the page and can use it for the menu item and the footer link.

2.31.2 04.09.2026

An offered accessory shows its article number

Names of related products can be nearly indistinguishable — «Twist lid 82» and «Twist lid 82 SL» differ by one mark. The article number of each accessory now sits under its name, both in the window the shop shows after a purchase from the catalogue and in the «build a set» block on the product page. It is the article number of the exact variant being offered.

A theme receives the article number along with the rest of the accessory data and can place it its own way.

2.31.1 04.09.2026

The accessories window shows the product it offers them for

A customer presses «Add to cart» in the product list and the accessories window covers the card — leaving nothing to tell what that lid or case is offered for. The window now carries the photo, the name and the article number of the product just added, in its header. It shows the exact variant chosen: take the blue one and the blue one appears, with its own photo and its own article number.

A theme receives this data and renders it its own way if it draws the window itself. The «You have added: …» line stays where there is nothing to show — when the product has neither a photo nor an article number.

2.31.0 04.09.2026

Getting back to a product from the cart

A customer adds a product from a listing and then wants to check what is inside it, look at the photos or read the reviews — and until now had to search for it all over again. The name and the photo of a cart line now lead to the product page, both in the cart that slides in from the side and in the one that pops up in the middle. The link opens the exact variant that was chosen: add the blue one and the blue one opens.

The same on the checkout page: the name of a line in the order is now a link, so the customer can check the purchase without losing the form they have filled in. A product withdrawn from sale stays in the cart as plain text, so no broken links appear.

2.30.0 04.09.2026

Accessory group names are now translated

The heading of the «build a set» block is something the customer reads right on the product page, yet a group had a single name for every language: a Ukrainian storefront showed the Russian one, and there was nowhere to fix it. Group names are now translated in «Settings → Localization» under the new «Accessories» section — the same place where you translate characteristics, services, customer fields and order statuses.

On the accessories screen the name is still a single field in your own language, and the other translations stay as they were. A group you have not translated yet is shown to the customer in the shop’s main language instead of an empty heading. The Localization section also stopped closing the open record after saving — it used to look as if the translation had not been saved.

2.29.1 04.09.2026

Orders no longer hit «too many attempts»

The shop counted request rate as a single number for the whole site: delivery recalculations, city suggestions and the order placement itself added up together, and the strictest limit was the one that fired. A customer would change the address and delivery method a dozen times — ordinary behaviour at checkout — press «Place order» and be refused. Now every action has its own count, and recalculations no longer stand in the way of placing an order. The rule covers add-ons too: their addresses are counted separately as well.

If there really were too many requests, the shop explains it in its own language and says how many seconds to wait, instead of an English technical line on the order button.

2.29.0 04.09.2026

Delivery method is no longer swapped silently

A customer picks a delivery method and it disappears on recalculation — this happens when the carrier does not serve the address or its service is down. The shop used to substitute the next method quietly and change the total, so the customer reached the «Place order» button with a delivery they never chose. Now the checkout shows a line explaining which method became unavailable and asking to check the choice. The text comes from the shop itself, so it appears in any theme, including ones written earlier.

An error inside a carrier add-on no longer breaks the checkout page. Only that method is withdrawn, the rest keep working, and the reason is written to the shop log.

2.28.0 04.09.2026

An add-on job starts right away

A button in an add-on queued the job and that was that. On ordinary hosting the queue is processed once a minute, and where the scheduler is not set up it is never processed at all, so the job never started. The job now runs from the same browser you pressed in, and you see the result at once. Close the tab and the scheduler finishes it, as before.

You can see what the add-on holds

Next to the button it now says how many records the directory holds and when they were loaded. An empty directory is called empty: city suggestions do not work at all in such a shop, and that is better read than guessed.

The add-on names the block itself: instead of a generic «Actions» you get «Settlement directory» and an explanation of what happens there.

2.27.3 04.09.2026

You can see what is happening with an add-on job

You pressed a button in an add-on — «Update the directory», «Load the rates» — and «Queued…» hung next to it with no explanation and no end. There was no way to tell whether to wait or to fix something.

Now you can see how long the job has been waiting for the queue, and when the wait drags on the shop says plainly that the queue is not being processed and where to look. While the job runs it tells you about itself: «12,000 written…».

2.27.2 04.09.2026

A transfer from another platform now notices deleted records

A transfer remembers what it has already moved and does not create the same records twice. If the moved data was later removed — the shop was reset, the catalogue cleaned, a product deleted by hand — that memory started to get in the way silently: dictionaries and products counted as transferred and were not created again, while everything referring to them did not transfer at all. From the outside the transfer looked fine.

Before starting, the transfer now checks its memory against the shop: a record that no longer exists is dropped from the memory and created again, as if for the first time. Nothing needs to be pressed for this.

2.27.1 04.09.2026

After a full reset the shop starts from the first number

The reset removed records but left the numbering counter where it was: a shop with eight hundred products and tens of thousands of orders created its first product as number 825 and its first order as 65925 after a full reset. You show the order number to the customer, and there is no reason to start in the middle.

A full reset now clears the tables outright and numbering starts from the first number. A selective reset works as before: there the links between records do the work — a reference to a deleted product is cleared in the remaining order, and stock follows the item it belonged to.

2.27.0 04.09.2026

Resetting the shop no longer takes other pictures with it

The reset cleared the whole media library, and it holds pictures of the entire shop: banner slides, brand logos, page images. An owner reset the catalogue and found the previously uploaded slides gone as well. Only the pictures of what you marked for the reset go now.

The reset also removes the memory of a transfer from another platform. It remembers what has already been transferred, and after a reset it got in the way: products were «already transferred» and the report showed zero, while orders did not arrive at all because their lines referred to deleted products. A transfer can now also be forgotten with a button, without waiting for a reset.

The notification sound is back

The «Notifications» section now has «Notification sound»: switch the signal on, choose what to be warned about and upload your own sound for each event — an order and a call request now sound different. The setting is personal, every member of staff has their own. The panel plays a signal again when a new event arrives.

2.26.0 03.09.2026

Carrier branches became visible

Delivery add-ons can now show the customer more than a single point name: a second line fits underneath — for example, how late the branch works today and its phone number. Delivery method fields learned to suggest values from the carrier directory as you type and to explain what they expect.

A missing page no longer takes the storefront down

If the theme has no page for a non-existent address, or that page is broken, the shop shows its own — with plain wording and the right answer for search engines. Before that the customer could get an error page, and the broken template surfaced nowhere; now it goes to the log.

2.25.1 03.09.2026

The theme knows the product type

Product cards can now be styled by product type: the theme receives the type name, its code and its id — both on the product page and on tiles in the catalogue, search, wishlist and comparison. Write the condition in your markup using the type code, the same one you set in the product type editor. Previously the theme got only the name, and markup that relied on the type could leave the customer without a product page.

The feature code arrived in the same places — in purchase options and in comparison rows. The theme can now tell colour from size and style them differently.

Theme edits show up right away

Saving a theme file in the Design section now clears the prepared templates and the storefront page cache by itself. Before that an edit could fail to appear on the site, which looked like a broken editor.

The source view in the text editor (the «</>» button) opens in a code editor with syntax highlighting again. It stays within the bounds of the field, wraps long lines and follows the light or dark look of the panel.

2.24.0 28.08.2026

Product photo in the cart

The cart that opens after «Add to cart» now shows a photo of every line — of the exact variant the customer picked. The same photo appears on the cart page and at checkout, so the picture does not change on the way to the order.

Show the cart the way you want

Appearance settings got a new option, «How to show the cart after adding»: a panel sliding in from the side, or a window in the middle of the screen. The contents and the buttons are the same, only the presentation differs. The cart itself is now drawn by ordinary theme templates, so its look is changed by editing markup rather than by programming.

Restoring from a backup finishes the job

If a restore fails, the shop returns to the state it was in and no longer stays closed for maintenance. Old backups are removed according to the retention you set, and when moving to another server the connection settings can be taken from the archive itself.

Health checks tell the truth

The «Diagnostics» section no longer alarms you with old records: the task queue is counted from recent ones, photo availability is checked with a real request, and the section opens even after the application key has been changed.

Small things

In the «Design» section the list of theme files scrolls again — the files at the bottom are reachable.

2.23.0 26.08.2026

Resetting the shop in parts

The reset button used to wipe everything at once, settings included — storefronts, payment and delivery methods, document layouts, seller details. Now you tick what to remove — catalogue, customers, orders, discounts, warehouses or statistics — and see how much each part holds before you press. The shop settings stay in place whatever you choose.

Restoring from a backup is safer

If restoring a large database ran out of time, the shop stayed closed behind a maintenance page and only the console could bring it back. Not any more. The backup is streamed from storage, so large copies no longer hit the memory limit, and after restoring the shop clears its storefront pages and restarts background jobs on its own.

Products and storefront

A product in the archive can now be deleted straight from the product list. Product type was added to the product filter. A storefront no longer refuses to save because of a language removed from the shop.

2.22.0 25.08.2026

The admin panel now works on phones and tablets

You can run the panel from any screen. Marketing, campaigns, promotions, gifts, wholesale prices, reports, banking, settings and the system pages are rebuilt for narrow screens: long rows fold into cards with the name on top and amounts, dates and buttons below it. The record you open scrolls into view by itself, so tapping a row no longer looks like nothing happened.

Editing SKUs in the product list fits a laptop screen in full: the stock and status columns used to stay off the edge, and on a phone only the name and the code were visible. On a narrow screen every SKU becomes a card with its code, prices and stock.

The banking ledger shows the amount right away, with no sideways scrolling. Reports place figures two per row and turn the table into cards with column labels. The add-on catalogue reads well on a phone: the full name, a description across the width, and the buttons underneath.

Chart labels are fixed as well: the sales funnel and the product report showed zeros instead of "Product view", "Add to cart" and product names. Labels under charts no longer merge into one solid line. The "Logging" section is now called "Logs", matching the heading inside it.

2.19.2 25.08.2026

The warehouse in the order row and the cache database number

In the order list row every warehouse now carries its own number — how much of the goods ships from that warehouse. Previously the row showed the total item count and bare warehouse letters, which told the person packing the order nothing about what to take from where. The overall counter is no longer shown when warehouses are on, and the tooltip gives the warehouse name, the quantity and how many order lines it covers.

The Redis database number and port are no longer rejected on save. The store answered «The settings.REDIS_CACHE_DB field must be a string» exactly when the owner edited the number himself — storage settings live in the environment file as strings, while the panel sent a number. The port also stopped being displayed as «6 379»: there is no reason to group digits in a port number.

2.19.1 25.08.2026

Source code in the editor, order list settings and the Redis check

The «</>» button in the text editor opened the markup in the panel code editor — the same one used for theme templates: it filled the whole field and stretched far beyond it. The markup is now shown in a plain field inside the editor, within exactly the same bounds as the text.

Order list settings now work in the order workspace too. Previously «Colour the row by status», the shipping warehouse, the delivery method and the payment method were read only by the table, while the workspace showed the same thing regardless. The open order and an order that needs attention are not coloured by status: their left stripe already carries its own meaning.

The Redis connection check answered «Redis is not responding» in a store already running on Redis. The check now raises its own connection and writes and reads the probe value on it, and an unreachable server replies with a clear error instead of silence. In the storage settings the fields are now in a single column, and a password that is set can be seen on the field itself.

2.19.0 25.08.2026

Customer-facing text is written in an editor

Category and product descriptions, page text, the brand story, product selections and tags are now written in an editor instead of a plain markup field. You get headings and lists, emphasis, alignment, tables and quotes, links with «open in a new tab» and «do not pass link weight» options. An image can be uploaded right from the editor window, with its caption for search, width and link set on the spot. If you are used to editing markup by hand, the «</>» button shows the source code with highlighting.

You can also drop a ready-made piece of the storefront into the text: a slider, a product selection, an add-on block. The snippet lives as a separate block, shows as a badge in the editor, and the customer sees the finished result.

Also fixed: the brand story, selection text and tag page text were shown as-is, markup included; the search description was taken from the page text together with its tags; and a product selection had nowhere to write its page text in the main store language.

2.18.1 25.08.2026

The shop adds the page key itself

For a request from the browser to go through, the page needs a key — without it the shopper clicks "Add to cart" and the shop stays silent. That key used to be placed by the theme, as a single line of markup, and forgetting it was easy: the theme looked fine while the cart stayed empty.

The shop now prints the key itself and passes it to scripts along with the rest of the storefront settings. Bundled themes no longer need the line, and a theme written to the old instructions keeps working. The guide describes what scripts receive: https://cartixx.com/docs/theme/behavior

2.18.0 25.08.2026

The theme draws the accessories window, and storefront settings arrive as one object

The "goes well with this" window the shop shows after a purchase from the catalogue can now be drawn by the theme itself: add templates/partials/accessories-popup.html to it, and the shop renders the window from your template while keeping the behaviour — selection, live total, adding to the cart. Styling and behaviour can be taken over with your own files too. No template in the theme means the shop builds the window as before, so a theme written by someone else loses nothing. The window's wording comes from the theme dictionary, so the owner edits it where the rest of the storefront texts live.

The theme no longer writes the shop's action URLs by hand. Fifteen data attributes used to sit on the body tag: half of them did nothing, and a forgotten one broke the cart silently. Now the shop prints a window.CartiX object — URLs already carrying the storefront language prefix, the currency, the page section and the accessories window settings. Themes written to the old instructions keep working. The guide explains how to use it: https://cartixx.com/docs/theme/behavior

Order export no longer runs out of memory on the "Order contents" column. Line items were all loaded at once, and in a shop with large orders the file was never produced. Contents are now assembled row by row, and only what the chosen columns ask for is read from the database — the export is three times faster and no longer depends on how many lines an order has.

The export set window no longer turns blank. Switching on a column near the bottom of the long list left you with an empty window you could not get out of; the window now stays put.

2.17.0 25.08.2026

The feature order set inside a product type is now respected on the site

You arrange features by hand inside a product type — "Purpose" second for jars, tenth for bottles — and until now that order stayed in the admin panel only: the site listed features in the global order of the feature directory. The type's order is now respected by the product page, the tiles in the catalogue and collections, the variant switcher and product comparison. Features marked "for all types" follow after them, exactly as the panel shows them at the end of the type's list.

Features can now carry an icon

The feature editor accepts a picture — a weight for "Weight", a shield for "Warranty". PNG, JPG, WebP and SVG up to 2 MB are supported; raster images are resized by the shop, while SVG stays sharp on any screen. The icon appears next to the feature name in the product card. If you build your own theme, the icon URL arrives in the icon field: https://cartixx.com/docs/theme/features

In this release the admin panel finally stopped scrolling sideways on a phone: the settings and system sections are fixed, and tile grids across the whole panel can no longer stretch the page.

2.16.0 25.08.2026

The catalogue and customers open on a phone

The product list was nearly useless on a phone: the page scrolled sideways by some five hundred points, and only the thumbnail and the name were visible — the price, the stock and the status had to be found by swiping right. On a narrow screen each row now folds into a card: the thumbnail, the name and the actions button on top, then one line per column with its own label. The columns stay yours: whatever you chose to show in the list appears in the card, product features included.

Customers and the orders inside a customer card fold the same way, and the stock movement log keeps what matters on a phone: when, what happened, by how much and what the balance became. The Categories screen no longer scrolls sideways together with the Save button while an item is open for editing.

2.15.0 25.08.2026

You decide how often accessories are offered

The accessories window shown after a purchase from the catalogue appeared once per product per visit, and there was no way to tell from the outside: you add a product and the window appears, you add the same one again and nothing happens. The accessories settings now let you choose: offer on every purchase, once per product per visit (the previous behaviour, still the default), or once per visit. When you are testing the window yourself, choose "on every purchase" and it will always appear.

The "Assign accessories" button in the product list no longer disappears once you press "Select all found": a group can now be assigned to the whole selection at once — every lamp in the catalogue, for example. The same button also removes the assignments from the whole selection. The handbook describes all of this in detail: https://cartixx.com/docs/catalog/accessories

2.14.0 25.08.2026

Contacts, staff and permissions open on a phone

The CRM sections continue the work on the panel for small screens. The lists of contacts, card fields and staff were tables about a thousand points wide: on a phone or a tablet they scrolled sideways, and reaching someone's phone number, a field switch or a person's role meant swiping right. Each row now folds into a card — everything is visible at once — and the full table comes back on a wide screen.

The header of every panel screen is also fixed: the buttons move below the title on their own once they no longer fit beside it. Previously on a tablet the title was squeezed into two lines, the line under it was cut in the middle, and a button label was broken in half. In Roles, the role you pick now scrolls into view: on a phone the permissions sit below the list, so tapping a role looked like nothing happened.

2.13.1 25.08.2026

The summary strip above the list is straight on a phone

In Abandoned carts, Call requests and Back-in-stock alerts the summary strip above the list fell apart on narrow screens: the headline took the left half and the figures next to it stacked into a narrow ladder. The strip now folds — the headline across the full width, three figures in a row underneath.

That headline is also no longer cut off with an ellipsis, which on a phone used to swallow the meaning of the sentence.

2.13.0 25.08.2026

The admin panel now works on tablets and phones

You can now run your shop from a tablet or a phone, not only from a desktop. On narrow screens the section list used to disappear: once you opened the dashboard on a tablet, there was no way to get to orders or customers. It now slides in from the button in the header and from the icon on the left, and closes as soon as you pick a section.

The sections of the Dashboard group have been rebuilt for small screens. The summary decides by itself how many tiles and columns fit in a row, so on a laptop with a narrow window it no longer looks like a phone screen. The order desk works in two steps — the queue first, then the open order with a way back to the list — instead of scrolling the whole desk sideways to find the order total. The order list fits a phone screen: the number with its status, the customer and the amount stay. In the order editor the quantity and the price now sit in one row and are no longer cut off. In sections with a list and details, the record you open scrolls into view by itself. Buttons on phones are more compact.

2.12.0 25.08.2026

Sections and warehouses appear only on the storefronts you chose

If your shop has several storefronts, you can choose where a section, brand, warehouse or product list appears. Until now that choice was saved and did nothing: every storefront showed everything, and on the second domain customers saw the sections of the first one. The choice now works, and the storefront is taken from the request itself.

Rename a section and the old link still leads to the new one

When the address of a section, product or page changes, the shop tells the Redirects add-on, and it creates a rule from the old address to the new one on its own. A section moves together with its subsections and products, and a second rename does not build a chain of hops: a visitor with the very first link lands straight on the latest address.

The buttons that were missing in the admin panel

Product photos are reordered with the mouse or the arrows, and every photo now has a caption for search and a tooltip. Duplicate tags can be merged into one: products move to the tag you keep and the extra ones are deleted. Warehouses and product types can be put in the order you need. In the recommendation settings you can see what a customer would be offered right now. Rule-based lists gained an "any of the conditions" choice, and the products found by the rules move into a manual list in portions — with the real total shown. The product list gained an order control: newest or oldest first, by name, cheapest or most expensive first.

The shop no longer shortens lists silently

Reviews and questions on the product page, and the product history in the admin panel, show the latest fifty entries. A line under the list now says "showing the latest 50 of 214" — before, the list simply stopped.

Filters and speed

A disabled brand is no longer offered in the section filters, and a visible one now shows its logo next to the name. The price used for sorting and for the price slider is stored as a ready number, so a large section is no longer scanned in full on every sort and every slider move.

Choosing a variant and filtering work in any theme

Switching colour and size, and filtering products in a section, used to be part of every theme. A theme written by someone else got a product page and a section where nothing worked. The shop now does this itself: price, old price, discount size, code, availability, the buy button and the variant's specifications, and in the section — checkboxes, the price slider, ordering, "show more" and the filter panel on the phone.

If your theme handles variant selection or filtering on its own, add data-sku-runtime="theme" or data-catalog-runtime="theme" to the markup and the shop will stay out of the way.

2.11.0 24.08.2026

The product card no longer loses data

Saving a card used to take away things nobody asked it to touch: the size and colour choice disappeared from the storefront, weight and dimensions were reset, and a variant lost its main photo and its currency — a product priced in dollars started selling for the same figure in hryvnia. Now everything the form stays silent about is left as it was, and a feature can be cleared by leaving it empty.

The same class of problem is closed next door. Saving a service no longer wipes the products it was attached to, turning off «sold by packs only» no longer deletes the packs you created, and switching a collection to manual mode no longer forgets the selection rules. A single-choice feature shows its value again and does not vanish when you try to change it. If a product has features its type does not list (that happens after a migration or an import), the card finally shows them.

The buyer gets what they see

Pick size 37 in the catalogue and that variant goes into the cart, not the default one. Availability on the card is counted for the picked variant too. A signed-in buyer no longer receives a page rendered for a guest: they see their own name in the header and their own prices.

A product can no longer appear on two pages of a section at once: sorting now has a final tiebreaker, and part of the catalogue stopped falling between pages.

Money

Timed promotions start and end by the shop clock, not the server one — «until 24 August» in Kyiv used to run until three in the morning. The «Similar products» block compares prices in one currency and shows the product price, not the variant price. Bulk price editing refuses a discount over one hundred percent: «minus 150%» used to make a batch of products free.

A warehouse that still holds goods cannot be deleted, and deleting an empty one recalculates stock. A feature value used by products is not deleted silently either — the shop tells you how many products it is set on. Deleted subcategories leave the storefront search together with their parent.

Settings that used to be saved and nothing more

«Choose manually» in section filters leaves the buyer exactly the features you ticked, in your order. «Manually, order in the category» arranges products the way you decided. «Products per page» and «Load more on scroll» reached the product list. «Low» and «critical» in the list are counted by your warehouse thresholds. A service can be made required. The brand story, the link to its website and the tag description are visible on their pages.

Videos and services work in any theme

The shop could store product videos and show them in the panel, but no theme showed them to the buyer. Now the clips sit under the gallery, and the player loads only when clicked. Extra services (packaging, warranty, installation) appeared in the default theme — before that two themes out of three drew them.

Note: the «View catalogue» permission now works

It has been granted to managers and stock keepers from the start, but it opened nothing — the section simply disappeared from the menu. Now it opens the catalogue for reading: lists, cards, dictionaries and stock. Changing the catalogue still requires the management permission. Check your staff roles if the catalogue was closed to somebody exactly this way.

2.10.1 24.08.2026

Accessory conditions now work the way they read

An accessory group is shown where you tell it to: product type, category, feature value. These conditions used to work separately — a match on any single one was enough. Filling in the category “Twist glass jars” and the volume “30”, an owner got the group on every jar, and the volume condition narrowed nothing.

Now the conditions you filled in must all match: category and feature and type. A condition left empty limits nothing — a group with only a category set works exactly as before. Inside a single condition nothing changed: any of the chosen categories and any of the listed values will do.

“Individual products” stay separate: a product you picked by hand ignores the other conditions.

Check your groups if they had more than one condition

If a group has several conditions filled in, it is now shown on their intersection rather than their union: fewer products will match, and that is usually exactly what is expected. Groups with a single condition are unaffected.

The hint under “Where to show” has been rewritten — it used to say nothing about this.

2.10.0 24.08.2026

Customers see when a product comes back

The product card now has a “Back in stock on” field. Fill it in, and the date shows itself to customers: as a line in the catalogue and next to availability on the product page. There is nothing else to set up.

It is shown only while the product is out of stock. Once it is back, the date disappears on its own — no need to clear the field. A date that has already passed is not shown either: “expected on 20 August” read in September pushes a customer away harder than silence.

If pre-orders are allowed in your shop, the date is visible next to the pre-order button as well — that is exactly when a customer needs it most.

The date belongs to the product as a whole, just like “out of stock” itself. How to show it in your own theme: https://cartixx.com/docs/theme/product

2.9.0 24.08.2026

Accessories are offered right in the catalogue

A customer adds a product from a tile in the list, and the shop shows a window with accessories for it: photo, price, and the ones you marked as default already ticked. Tick what is needed, press “Add to cart” — and they are in, with the group discount. Opening the product page for that is no longer necessary.

The feature is turned on in the accessories settings and is off by default. While it is off, the storefront pays nothing for it.

The shop draws the window itself, so it works in any theme — ours and your own alike. A theme needs no code for it. Details for a front-end developer: https://cartixx.com/docs/theme/behavior

Every accessory has its own buy button

Accessories used to be available only as a set. Now each one has its own button: a customer takes a single lid without assembling a set and without clearing the other ticks. The button appeared both in the catalogue window and in the configurator on the product page.

An accessory discount is a discount for buying it together with the product. Taken on its own, an accessory goes at its usual price, and as soon as the main product is in the cart the price recalculates itself. Accessories without a discount cost the same everywhere.

Small things that got in the way

A single-choice group can now be cleared by clicking the marked option again: a customer who changed their mind about the default offer is no longer obliged to buy it. The same product placed in two groups and ticked in both is added once, not twice.

Purchases made through the accessories configurator now reach the sales funnel and the analytics counters — they were not counted there at all before.

Storefront design fixes also reach customers immediately: the stylesheet was signed with the version of a neighbouring file, so browsers kept showing the previous design until something else changed.

2.8.0 24.08.2026

Taxation type in the seller requisites

The requisites profile now has a “Taxation type” field. It is a plain line of text, and you write it the way your accountant keeps it: “Single tax payer, group 3, 5%”, “VAT payer”, “Sole trader, no VAT”. Every profile has its own — if your storefronts trade under different companies, each one prints its own wording.

In print forms it is available as the seller taxation type variable and sits in the editor’s list of placeholders next to the tax number, so you can insert it into an invoice or a delivery note with one click. How to edit the forms: https://cartixx.com/docs/engine/print-templates

The bundled forms are unchanged: a taxation line is not needed by every shop, and you choose where it goes. An empty field still never reaches a document.

2.7.2 24.08.2026

The shop reports the version it actually runs

The “What’s new” section could show “currently 2.7.1” and “update 2.7.1 available” at the same time: the version sent to the marketplace came from the record of the last update made through the button. If the shop was updated by files — developers and hosting providers do exactly that — the record stayed old forever, and the shop announced itself as a year-old version.

The same skew got in the way of installing add-ons: the shop could refuse with “this add-on needs version 2.1.0, you have 1.9.0” while running 2.4. The version is now taken as the greater of the two — the recorded one and the one in the shop files — and every screen says the same thing.

2.7.1 24.08.2026

A feature with several values now takes one row

The spec table on a product page printed a separate row for every value: a phone with five connectivity options repeated “Internet” five times in a row, and a two-colour product listed “Colour” twice. Product listings never did that, so the same product looked different on its own page and on a tile in a collection. On our demo shop a phone had 41 rows for 36 features.

Now there is one row per feature, and the values are listed inside it: “Internet: WAP, 4G, 3G, EDGE, GPRS”. Nothing to configure — products look like this right after the update.

What this gives a theme

Values also reach the theme one by one, so you can show more than a comma-separated line. Every value carries its own label, its own colour from the dictionary and its own link to a collection: colour values are drawn as dots, and a customer who clicks “blue” lands on a collection of blue products rather than on the whole row.

How to mark this up in your own theme, with examples: https://cartixx.com/docs/theme/features

The base theme, “Market” and “Promo” are already updated — in all three the values are printed by a shared piece of markup you can copy.

Values that belong to a purchase option stay separate

If weight or another value is set for a specific variant, it still lives in its own row and changes together with the chosen variant: the customer switches the pack size and sees its own weight, not the neighbouring one.

Links in the release notes are clickable

The “What’s new” section and the update screen printed release notes as plain text, so an address had to be retyped by hand. Now a link from the notes simply opens.

2.7.0 24.08.2026

Customers see the weight of their cart

The shop can show the total weight of a purchase in the cart, and it changes as soon as the customer edits a quantity. You turn this on in the checkout settings, separately for each storefront; it is off by default.

Weight comes from the product feature “Weight” — the same one shipping is calculated from, so the cart and the waybill show the same number. Weight under one kilogram is shown in grams. Products without that feature filled in add no weight row.

2.6.0 19.08.2026

The shop is noticeably lighter on the server

Every storefront page made dozens of needless database calls: each installed add-on read its own settings with a separate query, the shop languages were asked for again from every place that needed them, and the value counters in filters took two queries per characteristic. On a shop with sixty add-ons that is fifty queries on every visit — regardless of catalogue size.

All of it is now read once per page. On hosting where the database sits on a separate machine, the difference shows immediately.

Where the shop keeps its cache is now your choice

«System → Maintenance» now lets you pick the store: files, database, Redis or Memcached. Each one says when it is worth choosing, and anything unavailable explains why. The connection is tested before saving: the shop will not let you switch to a store that does not respond.

New shops are set up with the file cache instead of the database. Existing shops are unaffected — your choice stays as it is until you decide otherwise.

A characteristic's kind is set once

The kind or format of an existing characteristic can no longer be changed, and the shop explains why. Previously switching the format from «list» to «single value» silently wiped the values on every product and variant, with no way back. If you need a different kind, create a new characteristic and move the values.

2.5.0 19.08.2026

Разбор двух сплошных проверок панели. Убранная из заказа позиция возвращает товар складу. Товар из панели встаёт по цене, по которой продаётся, — с учётом акций и валюты артикула. Баллы не сгорают сверх стоимости заказа. Каталожная акция с пустым выбором больше не роняет цены на весь каталог. Кабинет чужого покупателя закрыт: сменить его пароль нельзя. Выгрузка и загрузка данных разведены по правам. Строка сводки открывает ровно столько заказов, сколько назвала. Заказ на компанию оформляется из панели, покупатель выбирается из базы, заказ удаляется. Покупатель узнаёт судьбу промокода. Появились категории покупателей, вход в магазин из карточки и выгрузка контактов.

2.4.6 18.08.2026

A failed update no longer leaves the shop closed

While updating, the shop closes with a "maintenance" notice and opens again when it is done. If an update did not go through, the shop rolled back to the previous version — but when the rollback itself failed, the shop could stay closed, which looked from outside like a site that had gone down. The shop now opens no matter how the update ends.

The rollback became sturdier as well: a single file that could not be restored no longer cancels the restoration of the rest, and the shop says plainly which files were left. There is also a safety net for updates that are cut off entirely — when the server runs out of memory, for example: the shop notices within a few minutes, opens itself and marks the update as failed.

2.4.5 18.08.2026

Updated charts in the panel

The charting library in the panel has moved to a new version: refreshed tooltips, smoother animation when the period changes, and gesture support on tablets. Vertical axis labels were fixed along the way — after the library update they started showing raw numbers such as "200000.00" instead of "200k", and they are shortened again now.

A library that nothing had been using for a long time was removed from the panel, making the package a little lighter.

2.4.4 18.08.2026

An update of what the shop runs on

The shop has moved to fresh versions of its foundations: Laravel 13.26, Symfony 8.1.4, along with updated libraries for images, phone numbers, spreadsheet exports and social sign-in. On the panel side, the Vite bundler and Vue with its surroundings were updated. Nothing changes for you visually — the same screens and the same settings — but the shop picks up the fixes and security patches released in those libraries recently.

You can update with the usual button: neither settings nor data are affected.

2.4.3 18.08.2026

Variables in letters are understood in both spellings

The shop writes variables in two ways: printed forms use one style, letters another. Mixing them up is easy, and customers received letters where the subject showed the variable name in braces instead of the order number. Letters now understand both spellings, and texts you have already set up need no rewriting.

The add-on settings also gained a list of what can be inserted, right under the text field: a human name and, next to it, how it looks in the text. Clicking inserts the variable into the field, so there is no need to remember its name by heart.

2.4.2 18.08.2026

You can see what an update brings and how it goes

In the updates section, the number of the new version now comes with a note on what appeared in it. The shop used to show only «2.4.1 available», and the decision whether to update had to be made blind. The same goes for add-ons: their release notes are now readable instead of one solid line with markup characters.

The update itself now shows its steps: checking the version, downloading, checking the signature, installing, done. Previously a toast appeared after the click and then everything went quiet — the update moved on its own no faster than once a minute. Now the work is driven by the tab where you pressed the button, and if an update is already running the screen shows it as soon as you open it. You can still close the tab: an update that has started will finish by itself.

2.4.1 18.08.2026

It is now visible that an order was placed by a company

On the order page, the «Buyer» block now says plainly that the order was placed as a company and shows its name and tax number. A manager used to see only the name, phone and email, and the details needed for an invoice had to be looked up in order editing.

A company no longer reaches an order from the customer card when the person ordered as a private buyer. For customers moved from another platform the «Company» field is filled in very often on person cards, and from there it travelled into every order of theirs, making the order look like a company order when it was not.

2.4.0 18.08.2026

Stock and customer details for themes, and a mark when a new version is out

Themes now know more about a product. A product carries its stock: how much there is in total and how much sits in each warehouse you agreed to show to customers. An empty value means "stock is not counted for this product", which is not the same as zero, so "0 left" will not appear on such a product. Accessories can be shown anywhere, not only on the product page: in a selection on the home page, in a list, in the cart. The customer's name arrives in parts — last, first and middle name separately — so you can address them by name and prefill forms without taking the full name apart.

A customer's phone number is no longer duplicated on their card. The same number written differently in the old shop turned into several identical rows after the move, and a manager could not tell which one to call; numbers are now compared after being brought to a single form, and the shop clears the accumulated duplicates itself during the update. In the panel header, a mark appears next to "What's new" when a new version of the shop is out, so you no longer have to open the updates section to find out.

2.3.2 18.08.2026

Signature and stamp now reach the PDF file

Invoices and delivery notes saved as PDF came out without the signature and the stamp: the form looked right in the browser, but the file had blank space in their place. The shop looked for the image on disk by matching its address against the shop address exactly, and a "www" or http instead of https was enough to lose it.

The address is now read the way a browser reads it: the domain is not compared, and the file is looked up both in the public folder and in the storage itself, in case no link to it was created. If a form image really is missing from the disk, the shop writes that to the log instead of quietly issuing a document without a stamp.

2.3.1 18.08.2026

Buyer in the order: who they are, what they bought and how to reach them

An order now remembers whether it was placed by a private person or by a company, and no longer contradicts the customer card. Order editing asks for the same fields as checkout, filtering by buyer kind finds such orders, and the company name in the form is no longer empty. Business details the buyer entered at checkout are added to their card when it has none, so next time they will not have to type them again.

From an order you can open the customer card, from the card you can open the contact, and "All orders of this customer" opens the list narrowed to that person. The number of purchases shown in an order counts the whole history: what the person bought as a guest and what they bought after registering. Contact search finds people by email address again — before, such a query returned nothing at all.

2.3.0 16.08.2026

Product sales chart and hand-picked recommendations

The "General" tab of the product card now has a chart: views, sales and revenue over the period you choose. The shop counts these the same way as in reports — amounts are converted to the base currency at the order's rate, and cancelled orders are left out of sales. The period is picked right above the chart: a week, a month or three months. If nobody viewed or bought the product in that time, you get a plain message instead of an empty grid. The change history and stock movements stay below the chart.

In the recommendation blocks the "Pick manually" mode finally does what it promises: below it there is a product picker with search by name and code. The customer sees the chosen products in the order you set.

2.2.0 16.08.2026

Customer consents and tags in the card

The customer card now shows real facts about the person: the product they buy most often, what sits in their unfinished cart and what they have allowed the shop to do. You can turn that cart into an order in one click, so a manager no longer has to reassemble it by hand.

The shop remembers two different consents. The "I agree to the terms" tick at checkout is finally stored: it was required before, but never recorded anywhere. Permission to receive emails about new arrivals is given by the customer — at checkout or during sign-up, if you enable the offer in the storefront settings — and taken back at any moment in their account. A member of staff can record a refusal in the card after hearing it on the phone. Campaigns skip everyone who asked to stop, and the promised recipient count is calculated the same way.

Customers can be tagged: "wholesale", "call in the evening", anything you need. A tag is created right in the card — type the name and press Enter — appears both in the contact card and in the customer card, and the customer list can filter by it.

2.1.3 16.08.2026

The journal shows the whole history

What's new used to show only the last couple of dozen versions of each add-on and of the shop itself, and the rest was quietly cut off — even though the engine has close to a hundred versions.

The whole history now reaches the journal. Forty recent releases are on the screen straight away and the rest is fetched with the button at the bottom — the page does not load hundreds of descriptions until you ask for them.

2.1.2 16.08.2026

What's new has become a real journal

The section used to show only the updates the shop lived through itself: a fresh copy opened an empty screen, even though the engine had dozens of versions behind it.

The journal now gathers the whole history — of the shop and of the installed add-ons — with a description of every version, month by month. For the versions you already run it also shows the date they arrived. Updates installed from a file do not disappear from the journal, and if there is no connection to the marketplace the section shows what it knows itself.

2.1.1 16.08.2026

The orders desktop no longer flickers

Opening another order made the list on the left reload and flash a placeholder for a moment, even though the orders in it were the same. The list now stays where it is, and the placeholder appears only where the content really changes.

The order controls on the right no longer show the previous order's data while a new one opens: the totals, the payment status and the buttons wait together with the order card. When you switch a group on the left, the placeholder covers all three columns — a different order will open in the new group.

2.1.0 16.08.2026

The shop's letters can carry a document

A letter to the customer used to be able only to tell them something and give a link. Now a file goes with it: an invoice, a delivery note, an instruction. The new «Invoice to the customer by email» add-on already works on this — it sends the customer an invoice straight from the order.

Add-on covers in the catalogue

In the Installer section every add-on now has a picture: the list shows what it is about before you open the description.

2.0.3 16.08.2026

Order export

The order list now has an Export orders button. The file is built from exactly the selection you have on screen: with no filters you get every order, inside a group you get that group, with filters you get what was found.

What goes into the file is up to you: presets are set up in Order settings. In a preset you pick the columns and their order, the file format (CSV, an Excel workbook or an OpenOffice spreadsheet), the separator and encoding for CSV, and whether the first row holds the column names. You can create as many presets as you need: a courier only needs the number, the customer and the phone, while accounting needs the whole order. When exporting, the manager picks a preset — the format does not need to be asked for, it is stored in the preset itself. Column names and content come in the language the employee works in.

The carrier waybill is filled in a window

The waybill is now created in a separate window: the carrier itself describes the fields, cities and pickup points are suggested as you type, and the delivery cost is recalculated straight away. The waybill number, its state and the print links are visible right in the order.

The What's new section

An update journal has appeared in the System section. You can see which shop and add-on updates have arrived, when that happened and what exactly changed in them.

The look of the panel

Add-on buttons and the row size in the queues now match: call requests, back-in-stock notifications and abandoned carts look the same, and the Set up button opens the add-on right on its settings.

2.0.2 16.08.2026

The Plugins section shows your whole shop

The section now lists every installed plugin, not only those with a settings form. Out of 59 plugins only 23 used to be visible — the rest simply did not exist for the owner, who then hunted for them on other screens. A plugin with nothing to configure now says so. Disabled ones are in the list too, marked as such, and you can switch them on right there. Plugins are grouped into sections, there is a search by name, and each one shows its version, what stops it from working and where it embeds itself into your storefront.

Work counters right in the menu

Sections now carry numbers: orders waiting for a manager, conversations with no reply, reviews pending moderation, unanswered product questions, callback requests and customers waiting for a product to come back. The numbers are live — the panel recalculates them every ten seconds, right after any change you make and when you return to the tab, and a badge goes out once the work is done. Each section counts according to your permissions: a manager who only handles their own orders sees only those. The bell now shows the number of unread notifications instead of a dot.

A plugin brings its own settings

A plugin describes its settings itself and the section draws the form from that description — the engine no longer needs a line of code for it, and a disabled plugin takes up nothing in the panel. Settings can be per storefront: a storefront picker appears above the form and the values are kept per storefront. A plugin learns that its settings were saved and refreshes whatever it prepared in advance, so a new analytics counter appears on the storefront at once instead of after the cache expires.

A plugin can also bring a whole screen when a form is not enough: form profiles, a bot menu, a migration wizard. Such a screen lives inside the plugin and travels with it.

Order list settings and product photos

Three switches in order settings were saved and changed nothing: load-more on scroll, tinting a row with the state colour and the warehouse column. They work now, and "Orders per page" also controls how many orders the shop returns at a time. When picking a product and in the order contents a box icon was drawn instead of the photo — the picture is there now.

2.0.1 15.08.2026

Work counters right in the menu

Sections now carry numbers: how many orders are waiting for a manager, how many conversations have no reply, how many reviews are pending moderation, how many product questions are unanswered, how many callback requests came in and how many customers are waiting for a product to come back in stock. You no longer have to open a section to find out whether there is work in it.

The numbers are live: the panel recalculates them every ten seconds, right after any change you make, and when you come back to the tab. A badge goes out once the work is done. Each section counts according to your permissions: a manager who only handles their own orders sees only those in the badge. Which order states to count is up to you in order settings. The bell now shows the number of unread notifications instead of a dot.

Order list settings actually work

Three switches in the settings were saved and changed nothing. "Load more while scrolling" — the list fetches further orders on its own, with no pages involved. "Tint the row with the state colour" — a row takes the colour you gave that state. "Show the shipping warehouse" — a column with warehouses and the amount from each. The "Orders per page" setting now also controls how many orders the shop returns at a time.

Product photos in the order

When picking a product and in the order contents a box icon was drawn instead of the photo. The picture is there now — a product is recognised by eye rather than by a ten-word name. The rule for choosing the photo became shop-wide: the variant's main photo, then a gallery photo tied to that variant, then the product's first photo.

Fiscal receipts moved into the plugin

The receipts panel in the order, the issue and refund buttons and all their wording now belong to the Checkbox plugin — the engine only provides the place in the order card. Plugins can now show their own blocks inside an order and run their actions straight from them.

2.0.0 15.08.2026

Shop money behind a permission

You now decide which staff members see money. A "Finance" section was added to permissions: revenue and average order value on the dashboard, money reports and product cost price are shown only to the people you allow. A manager without that permission works as before — orders, products and customers are all there, only the shop-wide figures are not.

Access to other people's orders was closed as well: a member of staff who only handles their own orders can no longer reach the rest anywhere — in customer emails, documents and receipts, not just in the list.

Orders behave correctly

Cancelling an order returns the goods to stock, drops the discounts and gives the customer back the points they spent. If the order is brought back from cancellation, the points are spent again, and when there are no longer enough of them the order is recalculated at the regular price. Changing the payment state no longer leaves amounts belonging to the previous one.

Finding an order got faster: type a number, a name, a phone or an email, the shop suggests what it found, and one click opens the order. The separate "search by" field is gone — it was not needed.

You build the list filters yourself

In order settings you choose what to filter by: state, payment and its method, delivery, customer type, storefront, assignee, date, total, city, warehouse. The "Filters" button shows how many filters are on, so orders never disappear unnoticed. Delivery and payment methods include the ones your existing orders were placed with, even if you removed them from the settings.

Printing documents for several orders at once and plugin buttons — label printing, for example — moved to the top of the list: you can reach them without opening an order.

Plugins can do more

A plugin button can now take a picture of the order into the clipboard, ask for confirmation before it acts, ask which orders to work with first, and take you to the right screen afterwards. Plugins show their own blocks right in the order card and their own buttons in the product card.

Storefront

Product features come from the shop itself — in the card, in listings and in collections. The theme no longer has to fetch them, and the features are available everywhere a product is shown. A product already in the cart stays marked on the storefront after the page is reloaded.

Numbers in the panel are declined properly in Russian and Ukrainian.

1.36.3 12.08.2026

Method settings now show what they actually do

A setting with a default opened switched off while working switched on: Nova Poshta showed «Delivery to a branch» as off, yet branches were offered to customers. Toggling it back and forth «to turn it on» was what actually turned it off, and switching off all three delivery types that way could remove the method from checkout entirely.

The form now fills in the defaults when it opens, and settings are saved in full: you see exactly what the shop works with. Your own choice is never overridden by a default — switched off stays switched off. This applies to shipping, payment, messaging channel and cash register settings.

1.36.2 12.08.2026

The requisite profile number is visible in its settings

A print form names the company by its profile number, and there was nowhere to get that number: you had to print a document and see whose details came out. The number now sits above the profile form with a copy button, and next to the name in the profile switcher.

Together with the warehouse number added earlier, these two numbers are what tie a warehouse to its legal entity: in a form with several sellers you set the pairing explicitly instead of counting profiles by their order.

1.36.1 12.08.2026

Preview a print form on the order you need

The editor used to show the paper on the latest order, while you edit a form because of a particular one: an order from a company, an order split across two warehouses, an order with a service in a line. The preview panel now has an order number field — type a number and the paper is built on that order.

Write the number the way it looks in the order list: both «#1005» and plain «1005» lead to the same order, even when the shop stores a different number and the rest comes from the number format. Leave the field empty and, as before, you get the latest order with items; if there is no such number, we say so in plain words.

1.36.0 12.08.2026

See what data a template actually has

While editing a theme or a print form you no longer have to guess what an order holds. Put {dump} into the template and you get a list of everything the template has: the name of each value, its kind and its size. {dump var=$order} prints one value in full, and {dumpc var=$order} sends it to the browser console instead of the paper. The print form hints now have a group of their own for this.

Only a staff member signed into the panel sees this: a customer gets nothing, even if you leave the tag in the theme by mistake. Passwords, keys and signatures are replaced with asterisks, and long lists and deep nesting are cut short.

1.35.5 12.08.2026

A real editor for print forms, and a page that no longer fails

You now edit a print form in a code editor: syntax highlighting, line numbers, search within the template, collapsible blocks and Ctrl+S to save. Drag the corner to make the editor taller, and a placeholder picked from the list lands where the cursor is instead of at the end of the template. The same fix applies to customer emails.

The shop no longer serves an error instead of a page when several visitors create the same working directory at once. It happened after maintenance and after an update: the first request created the directory and the rest failed because it already existed. The directories used for printing documents are fixed the same way — documents are often printed in batches and from several tabs at once.

1.35.4 12.08.2026

The print form decides which company the document comes from

The order screen used to offer a list of companies above the print buttons. It gave you nothing: a form that names its own seller ignored the choice, and the choice was never saved — reprinting the same invoice could issue it from a different legal entity, while the copy emailed to the customer always came from the storefront seller.

Now the company is the same everywhere: the order storefront sets it, and a form may name its own with the {profile id=…} tag. An invoice from your second legal entity is a separate form, and it looks the same on paper and in the email to the customer.

1.35.3 12.08.2026

The warehouse number is visible in the list

«Catalogue → Warehouses» shows the number next to every warehouse name. A print form tells warehouses apart by it when an order is split across several, so you no longer have to open a warehouse card just to look the number up.

1.35.2 12.08.2026

Carrier directory updates and the delivery address in documents

The «Update cities and branches» button in the add-on settings now shows what is happening: «Downloading cities: 1,200» and a summary with the number of cities and branches. Previously it stayed at «Queued…» even while the directory was loading, and for Nova Poshta the cities were never downloaded at all.

Print forms show the full delivery address again. When an order goes to a branch, no street is written into the order address, so the form printed just the city; now the chosen branch or pickup point is included, and there are new placeholders for separate fields: the branch, its number and the city. Customers see the same in their account.

The warehouse number is shown in its settings and copied with a button — a print form tells warehouses apart by it when an order is split across several. A saved access key now says «Saved» in words.

1.35.1 11.08.2026

A delivery method now says when it cannot work

You can install a carrier add-on, enter the key, switch the method on — and never press «Update cities and branches». The method looks ready, yet customers do not see it at checkout: there is nothing to pick a city or a branch from. Previously customers reported this; now the admin panel says what is missing — in the method list, in the storefront checkout and in the add-on settings, right next to the update button.

1.35.0 11.08.2026

Payment and shipping now have their own section

Shipping and payment methods moved out of the storefront card into «Settings → Payment and shipping». A method is set up once for the shop, and storefronts switch it on: either «on every storefront» or by name, each with its own display order. A shop with two storefronts no longer needs two Nova Poshta methods with the same keys.

Checkout is a section of its own too: storefronts are listed on the left, and the steps — Cart, Contacts, Shipping, Payment, Confirmation — open one at a time. The shipping step shows only what customers see and in what order.

Add-ons in the panel are grouped by section and can be searched by name.

An order can no longer be placed without a delivery address

A shipping method may require its own field: a pickup point, an address, a branch number. The customer cannot skip it any more — orders used to go through with the delivery priced and the address empty.

Print forms

Warehouses are now available in a form: each line shows where it ships from, and the order is available split by warehouse, each with its own lines and total. A shop whose warehouses belong to different legal entities prints the bill from the right company by declaring it with the {profile} tag. The editor hint carries a ready-made snippet for such a bill.

Hidden product features now reach the document too: customers do not see them in the shop, but the delivery note needs them. And there is a one-word way the order is received — branch, parcel locker or courier.

Settings you fill in as a table

An add-on can ask you for a list rather than a single value — the cities and addresses you deliver to. A row is added with a button, moved with arrows and removed with the bin.

Settings fields no longer accept browser hints and are not highlighted yellow by it.

1.34.0 11.08.2026

Discounts, cart and orders add up correctly

Testing discounts in a live shop turned up places where the shop showed one total and charged another. Rule limits («no more than 500», «not below 300») are no longer wiped when you save the rule again, a coupon discount survives an order edit by the manager, and the cart shows current totals: a promotion that has just started or ended is recalculated straight away. A discount is now spread only across the products it applies to, so returning such a product refunds the right amount. An order is no longer re-priced at todayʼs shipping rate just because you pressed Save.

Storefront settings save again: a language switched off in regional settings no longer locks the form, and a setting pointing at a deleted record no longer blocks the whole screen. When the server refuses, you see why instead of a silent button. Your shop name reaches the customer — browser tab, footer, emails and search-engine markup — and the delivery method name you wrote for customers is no longer replaced by the carrierʼs own.

1.33.0 08.08.2026

Sell products by the pack

You can now describe the packs a product is sold in: «Pack of 50», «Bundle, 1.4 sqm». On the product page the shopper switches between packs and units, enters the number of packs and immediately sees how many metres or pieces that is and what it will cost. If a product is only released in whole packs, the shop rounds the amount up to a whole pack itself. The pack is remembered in the order, so in the cart, in the customer letter and on the delivery note the line reads the way the shopper described it: «6 packs (8.4 sqm)».

Weight and dimensions now reach everywhere they are needed: print forms, delivery calculation, product export and shopping feeds. You can set them for the whole product or for a single purchase variant. Print forms can now include product characteristics — the whole list or any single one by its code — and units of measure are translated into every language of the shop. The customer letter now lists what was ordered instead of just «items: 2». Shipment details are shown in the order only if you turned them on, and the delivery note gets what the manager actually entered instead of a value filled in by default.

1.32.5 07.08.2026

Form placeholders now have plain-language labels

The «what you can insert» list used to be a solid ribbon of codes like $order.items_total, and you had to read them letter by letter. Now it is a grid of cards: a clear name like «Items total» on top and, under it, the code that goes into the form when you click. Recipient fields and data added by add-ons are labelled the same way.

The search settings sections now match the rest of the panel: the importance fields are laid out in a grid with the label on top, and the «Add» and «Clear» buttons moved into the section header — they used to sit in the same line as the explanation and read as part of the text.

1.32.4 07.08.2026

Delivery and payment method can now be used in a form

Print forms now carry the id and the code of the delivery and payment method: $shipping.id, $shipping.code, $payment.id, $payment.code. Use them for conditions in a form — for example, print bank details only when the customer chose payment by invoice. Until now there was nothing to check but the method name, and a name you rename or translate makes the condition quietly stop working.

The hint under the form editor also gained the internal order number, its state, the creation date and the document title. They were always available, but there was no way to learn about them.

1.32.3 07.08.2026

Dark mode in the admin panel fixed

In dark mode some elements stayed light — most visibly in the print form editor, where the list of placeholders looked like blank white chips. The cause was shared by the whole panel, so the fix covers all of it: lists, tables, the category tree, the design editor and the settings now keep one tone.

1.32.2 07.08.2026

The other recipient is visible in the order

When someone other than the buyer collects the order, you now see it at once: the order card has a highlighted «Other recipient» block with their surname, phone and the rest of the fields you ask for at checkout. Previously the workspace did not show the recipient at all — a manager entered them while editing, came back to the card and saw only the buyer.

The block carries a «Change» link that opens the order editor right at the recipient fields.

1.32.1 07.08.2026

Files are shown as a list

The «Files» section now opens as a list: name, size and date are visible at once, and the row you need is found faster than in a grid of pictures. The tile view with thumbnails is still there — it switches with the button next to the search box, and the shop remembers your choice.

1.32.0 07.08.2026

A section with your own files

The admin panel now has a screen for your own files: price lists, manuals, certificates and images for descriptions. Files live in folders, upload by dragging, and each one has a link you can paste into a product description or send to a customer.

The section itself is switched on by the «File manager» add-on — install it from the add-on catalogue.

1.31.1 07.08.2026

Release notes are readable now

Release notes in "Installer → Updates" were shown together with the markup characters: every heading came with hash signs in front of it and the text ran as one solid block. Headings, paragraphs and lists are now rendered properly, so the description actually tells you what the version was released for.

1.31.0 07.08.2026

Documents are printed on behalf of the right company

Seller details now come entirely from the set you picked. An empty field is no longer topped up from the shop's general settings: previously an invoice from your second company reached the customer carrying the phone and address of the first, and you only found out when they asked. Whatever the shop relied on through that substitution has been moved into the main set — there is nothing to fill in again.

A set now has a shop name of its own — the name your customers know the company by. The logo, the signature and the stamp are uploaded as files again; before that the field only accepted a link, while the hint below it offered to drop a picture.

A layout knows who it prints for

Put {profile id=2} at the top of a layout and it will be printed on behalf of that company. That turns "Invoice from the sole trader" and "Invoice from the company" into two separate layouts, so there is nothing to choose at print time — and in an emailed invoice there is nobody to choose at all. The editor suggests the company numbers itself.

Language and printing right on the document page

A bar appeared above the document: the languages the layout is filled in for, a print button and a "Download PDF" button. Previously a document opened only in the language of the order, so an invoice for a foreign customer had to be retyped by hand. The bar never reaches the paper.

A PDF file is now saved under a readable name; before it landed in downloads as a string of random characters with no extension at all.

You describe the other recipient yourself

What to ask the person who receives the order is up to you — in the "Checkout" tab next to the customer fields. Previously a recipient was described by two fields hard-wired into the shop: name and phone. Now you can add a surname on its own line (the carrier asks for it), a patronymic, an email for the delivery notice — whatever your shop needs. The phone is always there: the courier calls it.

If a company receives the order, mark the fields you need as "company only" and the customer sees them once they tick the box at checkout. A Nova Poshta waybill for such an order is issued to the organisation by its tax code, not to a private person.

The recipient is printed on the invoice and the delivery note as a separate block; in your own layout it is available as $recipient, and you can check whether it is there at all.

The print form editor

The document preview moved into a sliding panel — the editor got the full width of the screen and the paper stopped being shown as a fragment. The "what you can insert" list was missing a dozen and a half values that do reach the document, including ones already used by the factory layouts.

1.30.0 05.08.2026

Order documents as files, and an icon for every add-on

Any printed order document can now be downloaded as a PDF file, not just printed — from the order card and from the list of forms, including several orders at once. Add-on buttons on an order got smarter: an add-on can show its button only on the orders where it belongs, for example for certain payment methods.

In the «Plugins» section and in the list of installed items every add-on now has its own icon instead of identical boxes, so you find the one you need at a glance.

1.28.0 05.08.2026

First-run setup wizard

A fresh shop now greets you with a wizard: language, currency, name, country and time zone — and you can start working. The same wizard opens after a shop reset, because a reset copy is no different from a freshly installed one.

On the last step the shop offers to fill the catalogue with demo products: 194 products with photos, categories and features across five themes at once. You can see how the catalogue, the product page and the cart look before adding your first product. Those products can be removed with one button later or replaced with your own.

1.27.1 04.08.2026

A freshly installed add-on works right away

An add-on installed in the shop could open as an empty section: the shop kept answering from its previous list of addresses, so every request from the new section ended in a «page not found» error. It looked like a broken add-on even though the installation was correct. The shop now forgets the previous lists as soon as an add-on is installed.

1.27.0 04.08.2026

Prices now match everywhere in the shop

The compare-at price you set on a product variant now reaches the cart. Shoppers used to see the discount in the catalogue and then a product that looked full price once it was in the cart. Prices are calculated by one shared rule in listings, on the product page, in the cart and in documents, so the numbers can no longer drift apart between screens.

The sale unit is spelled out: shoppers see "pcs", "kg" and "m" instead of an internal code. Add-ons can now show a shopper their own price — wholesale for trade customers, a special one for regulars — and the shop charges exactly the amount it displayed.

Migration from other platforms

A category whose own products sit in its subcategories no longer opens empty: the "show products from subcategories" setting comes across with the catalogue. Units of ordinary numeric features are carried over too — "10 tablets" and "12-month warranty" used to arrive as a bare number.

1.26.2 04.08.2026

An update no longer brings the shop down because of an older add-on

A carrier add-on released before the waybill window switch stopped matching the updated core, and the whole site answered with an error — storefront and admin alike. The switch is now optional: an add-on that knows nothing about it keeps working. You can update in any order.

Errors now carry a reference code

The error page no longer shows a bare «500». It carries a reference code, and the same code goes into the shop log — give it to whoever runs the shop and the record is found by search. Visitors no longer see any technical details.

1.26.1 04.08.2026

The waybill check window can be switched off

When all your parcels are alike, the extra window only gets in the way: places and dimensions are already set in the order. The carrier add-on settings now have a switch — with the window off, the button issues the waybill straight away.

The branch and the city reach the waybill

The pick-up point chosen by the customer at checkout is now passed to the carrier together with its name, not as a bare code.

1.26.0 04.08.2026

You see the waybill before it goes to the carrier

The shop no longer issues a waybill in one click. The button opens a window showing everything that goes to the carrier: sender, recipient, destination, places, weight, dimensions and payment. The delivery date and price are shown there too and are recalculated while you edit the fields. The waybill is issued only by the button in that window.

Shipment details live with the order

Next to the issue button there are now the number of places, dimensions, total weight and pallet. Whoever packs the parcel fills them in; they are stored with the order, prefilled into the window and survive deleting and re-issuing the waybill.

1.25.0 04.08.2026

The waybill knows how much to collect

When the customer pays on receipt, the shop passes the outstanding order amount to the carrier as cash on delivery. It used to send a zero, so parcels were handed over for free. Partial prepayment counts: the recipient is charged only what is still due.

The order shows where the parcel is

The shop remembers the parcel state and shows it in the order card together with the time of the last check. An order placed by a company goes to the carrier as a shipment to a legal entity, and when someone else collects the parcel the waybill is issued to that person. Add-on settings now support mapping tables: the service states on the left, your own statuses on the right.

1.24.1 04.08.2026

The selected orders are always visible

In the «Several orders» dialog the ticks survive paging and filter changes — that is how a batch is put together. But as soon as the status was changed, the ticked orders left the screen: more was printed than could be seen.

The selected orders are now shown in a row above the list. Each one is removed with a click, with «Clear all» next to them.

1.24.0 04.08.2026

Order picking for add-ons

The «Several orders» dialog the shop uses to print forms in batches can now be opened by add-ons too. An add-on button inside an order asks which orders to work with: the order it was pressed from is ticked straight away and the rest are added to it. Such buttons also appeared in the order list header, next to form printing.

The first to use this is the «Price tags and labels» add-on: stickers for the day shipment print as a single batch. Only the orders the member of staff is allowed to see appear in the picker.

1.23.0 04.08.2026

Product barcode and the groundwork for label printing

Every product variant now has a «Barcode» field — until now there was nowhere to keep the code from the package. The product is found by it in search just like by its SKU: holding a scanner to the package is enough.

The groundwork for printing tags and labels is now in place: the catalogue and the product page can show add-on buttons. The printing itself arrives with the «Price tags and labels» add-on, installed separately from the marketplace.

1.22.1 04.08.2026

Variants are labelled the way the shop named them

When a product has several SKUs without buy options, the variant switcher is now labelled with their names (“black”, “white”) — the way the shop owner named them. Previously, if a numeric per-SKU feature was set up, the labels were silently replaced by its values (“275 g”, “290 g”). The feature is only used when the SKUs have no names.

1.22.0 04.08.2026

Per-SKU features and variant choice on the product page

A feature can now be set not only on the product but on each SKU — a number, text, date or yes/no. Previously the «set values for SKUs» switch only worked for list-based features: a numeric one was saved but there was nowhere to fill it in.

A product whose SKUs are not told apart by buy options now lets the shopper choose: the switcher is built from the SKU’s numeric feature (“10 pills” / “30 pills”), or from SKU names when there is none. Before that there was no choice at all and the product always sold as its default SKU. Per-SKU features are shown on the product page and follow the selected variant.

1.21.0 03.08.2026

Points are visible where people look for them

The order card now has a «Paid with points» line — before, a manager saw the total and could not tell how it added up. The customer card now shows the account: balance, movement history with links to orders and expiry dates, plus adding or taking points by hand — for a delay, for a review, as an apology. Every such move is signed by the employee.

Checkout

Typing an amount of points now recalculates the order immediately, not only the «All» button. Both fixes came from live testing: the field accepted a number while the total stayed the same.

1.20.0 03.08.2026

Customer bonus points

Shoppers now have a bonus account: they see the balance and history in their account and pay for part of an order with points right at checkout. What was spent is shown as its own line in the totals, and a cancelled order returns the points.

How much to earn and how much may be spent is set by the «Bonus points and loyalty» add-on. The shop itself makes sure points cannot exceed the balance and that the order total adds up to the last cent.

Small things

The order log no longer signs a shopper action with an employee name.

1.19.2 03.08.2026

Browser notifications and the shop on a phone

Your shop gets a free communication channel: a shopper allows notifications once and hears about their order, restocked items and discounts even with the site closed. Notifications sit next to email and SMS — same events, same texts, same log — and the same channel sends broadcasts.

The same add-on turns your storefront into an app: shoppers add it to the phone home screen.

Broadcasts no longer claim false success

A broadcast whose channel is unavailable now stops with a clear explanation. Previously it was marked as sent without delivering a single message. Installing an add-on also restarts the task worker, so a new channel works right away.

1.18.0 03.08.2026

An assistant answers common questions

You set the shopper's words and a ready answer — the shop replies by itself, shows matching products or calls a manager. The conversation shows the answer was automatic, so your manager never repeats it.

1.17.0 03.08.2026

An order straight from the conversation

A shopper lists product codes, the shop recognises them with quantities and offers to add everything at once, while the manager gets an order form already filled in.

1.16.0 03.08.2026

You can see what the shopper already picked

The card now shows what is in their cart — together with the question itself, not after it. Half of all chat questions are about exactly that.

1.15.0 03.08.2026

You can see who you are talking to

Every question now comes with a card about the person: a known shopper with their phone and purchases, a guest with the page, device and where they came from. A plain message is enough to reply — no need to use «reply».

1.14.0 03.08.2026

Website questions arrive in Telegram

A shopper's chat message is forwarded to whoever answers in Telegram, and their reply goes back to the shopper. You can answer from your phone without opening the shop.

1.13.0 03.08.2026

Admin sections now look the same

Section headers, buttons, panels and tabs now look and behave the same everywhere. Previously every screen was laid out on its own, and sections slowly drifted apart.

Add-on sections — «Callback requests», «Back-in-stock notifications», «Short links» — were brought to the same look: content sits in the section card, and filtering by state moved to the left panel with counters.

Product search in the admin works like the storefront

The product picker in an order used to search its own way — strict name matching. A manager could not find what a customer found on the storefront.

Now everywhere you pick a product — order contents, accessories, product lists, gifts, discounts, promotions, campaigns — the same search and the same settings apply as for customers: synonyms, wrong keyboard layout, latin and cyrillic, ranking by importance. Suggestions now show product photos. An exact article code is always found.

The order editor was rewritten

  • Editing has its own address: you can share the link, and «back» returns to viewing.
  • «Edit» from the workspace opens editing straight away — before you had to press the button a second time.
  • Customer on the left, order contents on the right, delivery and payment below.
  • A line item takes one row: quantity, price and sum on the right.
  • The shipping method is picked from a list, and carrier fields load after the choice.

Small things you notice

  • Dropdowns no longer sit empty with no hint — across the whole admin.
  • The «Shop name» field now explains where customers see it.
  • The product list code hint is written in plain language.
1.12.0 03.08.2026

Repeat an order

Your manager opens a new order pre-filled from the previous one, with prices and stock checked again.

1.11.0 03.08.2026

Gifts with an order

The shop can hand out a product as a gift: its price is not touched by discounts and stays at zero all the way to checkout.

1.10.4 02.08.2026

Order items grouped by warehouse

Order lines are sorted the way they are picked: by warehouse.

1.10.3 02.08.2026

A notification for any order status

An email or message to the shopper can be tied to any status, including the ones you created.

1.10.2 02.08.2026

Product columns in your own order

The column order in the product table stays exactly as you arranged it.

1.10.1 02.08.2026

Orders remember the customer fields you need

The fields you set up at checkout are stored in the order and shown to your manager.

1.10.0 02.08.2026

Install and reset never leave you without a storefront

After installation and after a reset the shop stays usable: storefront, theme and settings are in place.

1.9.1 31.07.2026

One customer, one card. Phone numbers are stored in international format everywhere, so a local number and its +380 form are no longer two different people, and the phone field no longer accepts arbitrary text. A guest whose number already has an account is asked to sign in instead of getting a third card. Registration and social sign-in pick up the card of someone who previously ordered as a guest, and editing a card in the admin now carries the phone and email over to their account. Existing duplicates are cleaned up with the Find duplicates button in Contacts: orders, conversations and field values move to the card you keep.

1.9.0 31.07.2026

Order status names are now translated into the shop languages. Customers see the status in their own language in the account and in emails, and the name for each language is set in Localization → Order statuses. Existing names are kept as the shop main language.

1.8.1 30.07.2026

Print several orders at once

Select orders on your desk and print waybills or forms as a batch instead of one by one.

1.8.0 30.07.2026

Scheduled catalog promotions start and end on their own again: the task responsible for it failed on every run, so an expired promotion kept discounting.

The password recovery e-mail moved into the Notifications section — its wording, language and channel are now configured like every other customer letter.

The E-mail channel got a «Do not verify the server certificate» switch, for a mail server of your own with a self-issued certificate.

The mail check in diagnostics now reads the shop settings instead of a configuration file and shows your mail server.

Fixed the test message in the channel settings: the recipient address was lost while saving.

1.7.1 30.07.2026

Links to your shop look tidy

A section gets its own social image and a page its own description, so a shared link shows exactly what it should.

1.7.0 30.07.2026

Make the shop look like yours

The browser tab icon is uploaded right in the settings instead of being pasted as a URL. You compose the admin menu yourself: your own set of items, separate menus for the shop and articles, a single-row top menu.

1.6.1 29.07.2026

Исправлено: ссылка на заказ в личном кабинете покупателя вела на пустую страницу. Тема «Промо»: выровнено оформление — единый вид кнопок, одинаковая высота карточек товара, на телефоне ленты товаров листаются и видно, что их можно листать, заработала кнопка «Каталог» в нижней панели.

1.6.0 28.07.2026

Seller details are now sets: if your storefronts trade under different legal entities, each prints documents with its own data, and at print time you can choose whose name the invoice goes out under. They live under the Company details tab of Print forms; anything filled in earlier moves across on its own. Order numbers: the shop stores the number itself, while a prefix such as «#100» is added when it is shown — so transferred orders carry it too, and the format can be changed at any time. After a move, new orders continue the old shop numbering. The badge next to Orders counts the statuses you pick in the order settings.

1.5.3 28.07.2026

Fixed category transfer: in the previous version categories did not move at all. The connection check no longer confuses an unreachable database with someone else\x27s — the reason now comes from the database server itself and stays on screen. Attribute values and the names of categories and products arrive filled in for every language of the shop, even when the old shop translated only some of them. The orders workspace now has print forms and add-on buttons, which used to live only on the full order page.

1.5.2 28.07.2026

Moving from another platform no longer depends on the scheduler: the transfer runs from the shop window, batch by batch, and two batches no longer step on each other — that is what used to lose individual products. Attribute values now arrive filled in for every language of the shop, even when the old shop translated only the names. Orders can be printed: an invoice and a delivery note, with layouts edited under Print forms. Add-ons can now put their own buttons and blocks right on the order page.

1.5.1 28.07.2026

Orders can now be printed: an invoice and a delivery note. The layouts are edited to suit your bookkeeping under Settings → Print forms, with a preview on a real order and a way back to the factory look. Seller details live under Settings → Company details. Linking directories during a move is clearer: blocks are collapsed, you can see what will be linked, and matching names can be linked in one click. Product types in an attribute are picked from a list.

1.5.0 28.07.2026

The Installer section brings the add-on and theme store, everything you have installed, updates and file installs together in one place. An update now starts the moment you press the button instead of waiting for a schedule. Before it runs you can see whether the server is ready, what might stop working and whether there is a recent backup. Settings for installed plugins moved to their own Plugins section.

1.4.1 28.07.2026

Обновление начинается сразу по кнопке, а не по расписанию, и показывает честный ход установки. Названия статусов старого магазина при переезде.

1.4.0 28.07.2026

Две темы оформления со светлым и тёмным видом. Варианты покупки прямо в каталоге: покупатель выбирает цвет или объём памяти на карточке, меняются фото, цена и наличие. Доп-услуги товара доходят до корзины. Раздел «Акции»: страница акции со сроком и скидкой на подборку. Темы ставятся из маркетплейса. Исправлен переезд с Webasyst напрямую из базы.

1.3.8 27.07.2026

Order migration no longer stops at the ten-thousandth order and no longer passes itself off as finished.

For some numbers the old shop answers incorrectly and invents the record count; about 15% of orders actually arrived. Orders are now walked by record count, every batch is verified, and on failure the migration stops with a reason.

Option names are now translatable. Products, categories and features had translations while the purchase option («40 W», «Blue», «XL») did not, leaving half a card untranslated in a multilingual shop.

Purchase totals are recalculated by the shop itself: if the task queue stalled, the Customers section could show zeros for everyone.

Database backups work on hosting that forbids starting helper programs.

Diagnostics shows your hosting limits and explains what each one changes for your shop.

The button that opens access to photos explains what to do instead of showing a technical error.

1.3.7 27.07.2026

Migrating a shop from another platform in the background no longer stalls. It was not making a single step: the counter froze while the migration still counted as running.

Migrating customers is noticeably faster. Looking up people you already have scanned the whole contact list for every single person, so each thousand made the migration slower.

The Stop button now works: previously the migration resumed by itself after three minutes. And a migration stopped by a real problem is no longer revived endlessly — it stops and shows the reason.

Database backups work on hosting that forbids starting helper programs. On such hosting a backup could previously neither be made nor restored at all, and the owner saw a technical error.

Diagnostics now shows your hosting limits and explains what each one changes for your shop — before something breaks, not after.

The task queue no longer reports work it did not do: customer emails, exports and updates run to completion. Tasks also run during maintenance mode — previously the very update that switched the mode on could not finish.

The button that opens access to photos explains what to do instead of showing a technical error.

1.3.6 27.07.2026

The queue is now processed on hosts where pcntl functions are disabled: previously the worker crashed, so no emails were sent, no updates applied and background migration stood still.

1.3.5 27.07.2026

The schedule now works on hosts where proc_open and pcntl are disabled: previously not a single task ran — no emails, no queue, no migration — while cron reported success.

1.3.4 27.07.2026

Diagnostics no longer claims the scheduler is dead while cron is running. Background migration resumes by itself after a broken chain, and the on-screen counter stops freezing.

1.3.3 27.07.2026

Key fix: the scheduler crashed on hosts where pcntl functions are disabled, so neither the queue nor background migration ran even though cron was fine. An unfinished migration now reopens by itself after a page reload. Migrated customers appear in the section right away.

1.3.2 27.07.2026

Fixed: a single interrupted task run muted the whole schedule for a day, and diagnostics reported a dead scheduler while cron was fine. Added a «Release scheduler locks» button.

1.3.1 27.07.2026

The update now says what it is doing: queued, downloading, verifying, replacing files. All labels and the changelog arrive in the language of your admin panel.

1.3.0 27.07.2026

Shop migration now runs on the server: you can close the tab. Continue picks up where it stopped instead of starting over. Purchase totals are recalculated after the migration.

1.2.3 27.07.2026

В карточке покупателя появились покупки: итоги и история заказов. Категории покупателей пересчитываются ночью — условие «покупал за последние N дней» теперь срабатывает само.

1.2.2 27.07.2026

Раздел «Покупатели»: шапка встала вровень с остальными разделами, у числовых полей появились подсказки.

1.2.1 27.07.2026

Режим обслуживания: сотрудник теперь видит полосу «магазин закрыт», а страницы, открытые сотрудником, больше не попадают в общий кеш витрины. В архив добавлена инструкция по настройке сервера.

1.2.0 27.07.2026

Появился раздел «Покупатели»: кто покупает, сколько принёс, история заказов, категории покупателей со своими названиями и автоназначением по покупкам. Фотографии больше не нарезаются все сразу при загрузке — перенос ускорился в сотни раз. Мастер установки открывает доступ к фотографиям сам и показывает, что нужно настроить на сервере.

1.1.7 27.07.2026

Скидка в корзине теперь объяснена: прежняя цена зачёркнута, рядом название акции, в итогах — «Ваша выгода». Акция на категорию применяется сразу при сохранении, а не через минуту. Переключатель языков остаётся на том же домене. Один знак валюты на всём экране.

1.1.6 27.07.2026

Названия и описания плагинов теперь на языке админки — и у установленных, и в списке доступных к установке. Ссылка на скачивание обновления живёт сутки вместо получаса.

1.1.5 26.07.2026

Появилась кнопка «Сбросить магазин»: возвращает копию к состоянию после установки, сохраняя плагины, лицензию и сотрудников. Витрина и язык интерфейса берутся из того, что указали при установке. Перенос с другой платформы больше не спотыкается на длинных ключевых словах, не замирает на фотографиях, а о непрошедших записях сообщает понятным текстом.

1.1.4 26.07.2026

Отозванная лицензия теперь распознаётся магазином, а не остаётся активной навсегда. В диагностике видно, работает ли планировщик и когда он отработал. Маркетплейс разбит по категориям целиком. Мастер установки задаёт языком магазина тот язык, на котором его проходили.

1.1.3 26.07.2026

Фоновые задачи наконец выполняются: письма покупателям, выгрузки и обновления больше не копятся молча. Неактивированная копия не получает платные разделы. Переезд с другой платформы работает без настройки сервера и показывает ход работы.

1.1.2 26.07.2026

Установка на чистом сервере проверена целиком: исправлен посев данных на нескольких языках, мастер больше не закрывается на шаге администратора, копия ставится в рабочем режиме, а не в отладочном.

1.1.1 26.07.2026

Установка в базу, где остались таблицы от прошлой попытки, объясняется словами, а не ошибкой SQL, и базу можно очистить прямо из мастера. Исправлено имя индекса, из-за которого установка обрывалась посреди миграций. В мастере появился фирменный знак.

1.1.0 26.07.2026

Установка на чистом сервере доводится до конца: мастер больше не спотыкается на переходе к настроенной базе. Сам мастер теперь на трёх языках — открывается на украинском, переключается на русский и английский.

1.0.0 24.07.2026

Первый релиз CartiX: каталог, заказы, доставка и оплата, админка, витрина.