Sprint 58
may 30, 2025
Sprint 59 brings powerful upgrades to the order history, with advanced filtering, sorting, and smart search options. We’ve also improved packaging unit handling in our interface with Exact Online, extended our Microsoft D365 F&O interface with support for product data, and ensured performance stability with heavy traffic caused by search engines indexing your site.
Plenty of smaller features and fixes too — from VAT accuracy to external image syncing to multi-currency price exports.
👉 See something useful? Reach out to Shoxl — we’re here to help you get the most from our evolving e-commerce platform.
The order overview has been upgraded with an advanced view that helps users quickly locate relevant orders through enhanced search, filter, and sort capabilities.
This new view includes:
- Search functionality by order number, customer reference, article number/name, and order date.
- Filters by order status (e.g. All, Open, Delivered, In progress).
- Sorting options on all order-level columns, both ascending and descending.
- Improved paging and significantly better performance.
The search requires a minimum of one character and displays a clear result set, including a customizable "no results" message when applicable. Long result lists include a “show more” option to reveal additional items in batches of 20. A clear filter icon allows users to quickly reset search and filter inputs.
This functionality is only available when the Shoxl ERP caching layer is active and must
be explicitly enabled through the LayoutSettings
.
In Exact Online, it's possible to define multiple package units for a single article (e.g., units, boxes, pallets). To represent these in the shop, the Exact Batch Interface can create separate articles for each package unit. Each of these receives a unique name—typically the article description followed by the unit size—since Exact does not assign a unique GTIN/EAN to each packaging variation, but the shop requires unique identifiers.
Until now, each of these generated articles was placed in its own article group, resulting in multiple single-item groups. This approach ensured consistency with the shop's structure (which always expects article groups and their variants), but it also meant that no variant selection page was shown.
A new feature now allows these related articles—each with a different package
unit—to be
grouped automatically together under a single article group using the
MapPackageUnits:GroupArticles
setting in the Exact Batch Interface. This
results in a true variant experience for visitors when multiple packaging options exist.
The article group page then displays all variants, allowing users to choose between package units through icons, a dropdown menu, or a list format—depending on the shop's configuration.
We’ve introduced a deeper integration with product master data in Microsoft Dynamics 365 Finance & Operations, making it possible to manage commercial product content directly from F&O—similar to how a PIM system would operate.
This advanced interface allows for:
- Multilingual product category support and full category hierarchy integration via OData endpoints.
- Access to product images and attachments through
ReleasedProductDocumentAttachments
. - Retrieval of article-level attributes via
ProductAttributeValuesV3
, enabling enriched metadata and filtering.
These enhancements bridge the gap between ERP-managed product data and rich e-commerce presentation, supporting localized content, better filtering, and consistent product experiences across markets.
An OData layer has been introduced on top of the Shoxl Webservices used to retrieve order history data from the ERP cache, the cache we use to store ERP data in the background to speed up retrieval and display.
OData (Open Data Protocol) is a standard protocol for querying and updating data using RESTful APIs. It allows clients to request only the data they need, apply filters, sort results, and handle paging—all using a consistent and widely supported format.
With this new layer, it is now possible to access order history data more flexibly and efficiently. The OData implementation supports advanced filtering, field selection, and pagination (such as skipping or limiting results), making it ideal for integrations and reporting tools.
This feature requires the ERP Cache connector to be active and an API key to be configured for secure access.
The article group import functionality has been extended to support multiple classifications, including the ability to specify article group positions per classification path.
Previously, the import format supported a single Position
field, which was
not sufficient when dealing with multiple classifications or deeper category structures.
With this enhancement, the import can now handle multiple classification paths and
assign specific positions within each path.
To achieve this, the import format now allows repeated pairs of fields:
ClassificationPath_1
, Position_1
,
ClassificationPath_2
, Position_2
, etc. These fields map to the
ClassificationNodePosition
and ArticleGroupPosition
values in
the ClassificationNodeArticleGroup
table.
In systems with multiple classifications, an additional level of indexing is used: for
example, ClassificationPath_1_1
and Position_1_1
. The first
number indicates the classification index, while the second indicates the position
within that classification structure.
The classification path includes both the path itself and the name of the classification. The import supports the following scenarios:
- Single classification and single category
- Multiple categories within a single classification
- Multiple classifications
- Multiple classifications with multiple categories
After the import, all updated article group positions are automatically synchronized to the shop.
Vendisto supports assigning an article group to multiple classifications when configured accordingly. However, the bulk Excel import function in the PIM encountered an issue when different classifications contained identical node names at the top level of the structure.
This caused the importer to match article groups with the wrong classification, which in turn resulted in incorrect categorization and—in some cases—a generic "Unknown error" during import.
This problem has now been resolved. The import logic has been updated to correctly distinguish between identical node names across multiple classification trees, ensuring accurate classification assignment during bulk import operations.
Shops often receive background traffic from search engines that scan and index product and content pages. In certain cases, this indexing activity caused unnecessary load, which could lead to performance degradation or temporary unresponsiveness.
This issue has been resolved by optimizing the way such traffic is handled. The shop now processes background indexing more efficiently, maintaining stable performance even during periods of intensive crawling by search engines.
In Exact Online, it's possible to assign the same email address to multiple contacts
within a single customer account. This can lead to duplicate user creation attempts when
ImportContactMode
is enabled, as each contact would trigger the creation of
a user with the same email and user ID—causing import errors.
To resolve this, a deduplication mechanism has been implemented. When
ImportContactMode
is not set to None
, the system will now
create exactly one user per unique email address within a customer, based on the
combined set of the main contact and associated contacts.
Email addresses must always be unique within a single customer. This is necessary because email can be used as a login credential in the shop. The Shoxl platform supports login via either debtor number or email address—but email-based login only works correctly when the address is unique within the customer's scope.
An email address may appear in multiple customer accounts. If a user logs in with such an email address, and that address is linked to several customers, the system will prompt the user to select the correct account from a list.
This enhancement ensures a consistent import process, prevents duplicate user errors, and guarantees correct login behavior based on unique user identities.
In the Vendisto platform, users—not companies—log in to the shop. When a customer is imported without any associated contacts, a default user is automatically created to enable login.
Previously, if contact data was imported at a later stage, Vendisto would create a user account for each contact and delete any users not included in the import—based on the assumption that the contact user list was complete. As a result, the initially created default user was removed.
This caused confusion for customers who had already started using the shop with the automatically created default user account. Once contacts were supplied, the default user could suddenly no longer log in, even though the credentials were still familiar to the customer.
This behavior has now been corrected. The system will preserve the default user that was created during the initial import, even if contacts are imported at a later time. This ensures uninterrupted access for users who were already logging in before contact data became available.
Resolved an issue in the quote request flow where the payment method was automatically preselected as "Buy on Credit" if it was available for the customer. If this method had a configured payment discount, the discount was incorrectly applied during the quote process—even though no actual payment was being made at that stage.
This caused unintended pricing behavior and confusion during quoting. The logic has been adjusted so that payment discounts are no longer applied in the quote flow.
As a result, quotes now reflect the correct pricing without prematurely factoring in payment-related discounts.
The Microsoft Navision Batch Interface has been updated to correctly handle non-product order lines, such as shipping costs.
Previously, all order lines—including cost lines—were assigned a
LocationCode
. However, Navision does not support location codes on
non-inventory items, which caused the order to be rejected with an error.
The system now omits the LocationCode
for lines that are not linked to
physical products, ensuring smooth order processing in Navision.
The PriceList export in the Batch Interface has been updated to correctly support multiple currencies per item. Although the XML format already allowed this, the internal implementation did not fully process prices defined in different currencies.
With this improvement, customer prices can now be exported with multiple currency
values—for example, both USD and EUR—within the same export block. Each
NettoPricePerItemExclVat
and DiscountAmountPerItemExclVat
field includes a Currency
attribute to clearly indicate the applicable
currency.
This enhancement enables better international pricing support and integration with systems that require multi-currency price structures.
A bug has been resolved that affected the interaction between quantity selection and the "Add to Basket" button in order lists (used to manage favorites).
Users could increase or decrease the quantity using the plus/minus buttons, which correctly activated the "Add to Basket" button. However, when entering a quantity manually via keyboard input, the button became inactive—preventing the product from being added to the basket.
This issue has been fixed. Both manual input and use of the plus/minus controls now consistently activate the "Add to Basket" button, ensuring smooth ordering from order lists.
Resolved an issue in the Exact Batch Interface where the Customer Price export incorrectly applied an exchange rate conversion based on the article’s default currency, rather than the currency specified for the actual customer price.
This resulted in prices being exported with unintended currency conversions, leading to incorrect price data being returned to the shop or external systems.
The export logic now correctly uses the currency associated with each price entry, ensuring that no unnecessary or incorrect exchange rate conversions are applied.
Resolved an issue in the shopping basket where the total VAT amount was not recalculated after increasing the quantity of an item.
This caused the displayed VAT to remain incorrect until the page was refreshed or reloaded. The logic has now been corrected to immediately update the VAT total in real-time when quantities are adjusted, ensuring accurate tax display at all times.
Product images in the Shoxl shop can be uploaded and managed directly in Vendisto. Some customers, however, manage product images externally and reference them using image URLs instead of uploading them.
Previously, the synchronization from Vendisto to the Shoxl performance database did not correctly process externally hosted image URLs. As a result, images were sometimes missing on the product overview pages, even though they were visible on the article group page.
This issue has now been resolved. Images provided via external URLs are now properly handled during synchronization and consistently shown in all parts of the shop.
A bug in the Vendisto article import process caused classification nodes to be matched using their title instead of their internal name. This led to the creation of duplicate nodes whenever the displayed title differed from the system name.
This issue has now been fixed. Classification nodes are correctly matched based on their name, preventing unintended duplicates during import.
Resolved an issue where downloadable files could not be saved correctly in Vendisto when the user interface language was set to anything other than Dutch.
This problem was caused by language-dependent handling in the file creation process. The logic has now been corrected to ensure that downloads function properly regardless of the selected UI language.
Sprint 57
may 9, 2025
Sprint 57 brings smarter variant selection directly in article tiles, making ordering faster and more intuitive. Behind the scenes, we’ve made key progress on multi-shop PIMsupport and improved handling of packaging units in Exact Online. And we completed our Microsoft Navision integration.
Plenty of smaller enhancements too — worth a look!
👉 See something useful? Reach out to Shoxl, we’re here to help you benefit fully from the ongoing improvements to our e-commerce platform.
The article group overview page previously only showed the number of available variants per article group, without the option to select a specific one.
It is now possible to select and order a specific variant directly from the tile (or row, in list view). The selection dropdown is based on a product property that uniquely identifies each variant within the group—allowing for immediate and precise ordering.
On both the article group overview page and the article group detail page, articles can be added directly to the shopping cart when the Quick Order functionality is enabled. The presence of elements such as the order button, pricing, product features, and stock information may vary per article group.
To ensure a clean and consistent layout, technical improvements have been made. Article cards now maintain equal height without relying on scripts, regardless of which elements are shown.
On article group overview pages, article groups with only one article can be ordered directly and typically show stock availability. When an article group contains multiple variants, users must first navigate to the detail page to select and order a variant.
In some cases, when both types of article groups were shown together in the same overview, the stock status was not displayed for groups with just one article—despite it being possible to show it there. This has now been corrected: stock information is displayed consistently for article groups with a single article.
Previously, the Exact Online integration included a setting that enforced ordering in the highest packaging unit when multiple units were defined for an article. In the webshop, this could be displayed in two ways: either purchasing in the largest packaging unit with its corresponding price, or purchasing per base unit with a calculated unit price, while requiring a multiple of the packaging quantity.
This approach has now been replaced by a more flexible and transparent setup. In Exact, you can now define a minimum number of base units per order, as well as the increment in which the item must be purchased. Additionally, if multiple packaging units are specified for a single item, each unit is now shown as a separate article in the webshop.
This change eliminates the need for the old ‘PriceUnitType’ setting and simplifies both setup and ordering logic.
In the upcoming release, articles representing different packaging units will automatically be grouped into a new article group. The minimum order quantity setting will continue to apply when ordering per base unit.
Static product lists embedded in content pages can now display the full order interface, including the order button and quantity selector.
This ensures consistent ordering functionality, regardless of where the list is used within the webshop.
The ArticleGroup Excel export has been updated to support both multiple classifications and multiple category assignments per classification.
Instead of using a single 'Classification Path' column with slash-separated values, the export now follows the same structure as the article export. Classification and level data are split into separate columns using a structured naming convention.
This includes:
Level_[category position]_[n]
for single-classification setups with multiple category levelsLevel_[classification position]_[n]
for multi-classification setups with one category per classificationLevel_[classification position]_[category position]_[n]
for combined cases
The export also includes corresponding Classification_[n]
columns to
identify classification roots, enabling full import compatibility.
Vendisto now supports the import and display of customer-specific VAT rates.
This allows tailored tax handling per customer, based on external system configuration.
Uploading images in Vendisto would fail when the filename already existed, even if the upload was valid. This blocked users from replacing or updating existing images via the UI.
The issue has been resolved, allowing seamless uploads regardless of whether the filename already exists.
In environments where multiple shops are connected to a central PIM system—each with its own local (slave) PIM—it is now possible to block article data from being imported into the slave system.
This allows shops to import only locally relevant data, such as lifecycle status, while excluding centrally managed product content from the article XML feed.
It is now possible to place orders to Vendisto using the BuyOnCredit payment method in environments with multishop configuration.
This extends compatibility of the BuyOnCredit method with newer order routing logic across shops.
The ShippingCostAPI
now correctly falls back to the general shipping cost
configuration when no specific rates are defined for a user's linked pricelist.
This fallback already applied to guest accounts and is now consistently applied to all user types.
In certain configurations involving article groups and the article selection wizard, external image URLs were not displayed correctly. This was partly due to invalid characters in the image paths.
The handling of external images has been improved to ensure they are now properly shown in both overview and detail pages, regardless of the component combination used.
Users with full access rights were previously unable to open quote details, despite having the correct permissions.
This has been resolved so that authorized users can now view all quote details as expected.
News categories consisting of multiple words were not filtered correctly in the webshop. As a result, clicking on such a category did not always return the expected articles.
This issue has been resolved. News category filters now work properly, regardless of the number of words in the category name.
When a classification node or product is renamed in Vendisto, the corresponding shop URL changes. The previous URL is then stored as a historic reference, intended to automatically redirect to the updated URL.
A bug in this redirection process has been resolved. Historic URLs now reliably redirect to the correct new location when accessed by users.
When a classification node or product is renamed in Vendisto, the corresponding URL in the shop changes. The system automatically registers the old URL as a historic reference.
If a user accesses the old URL, the shop now correctly redirects to the updated URL.
An XML-based import option for product relations has been added, following the same structure and behavior as the existing Excel import.
This allows external systems to synchronize product relationships in a single step, without leaving outdated data behind.
The Microsoft Navision integration now supports ordering article variants. Previously, variants were not available in the webshop when using this ERP connection.
This enables full support for product variant structures in both browsing and order processing.
Within the Microsoft Navision integration, variant articles managed now support fallback pricing. If no price is defined for a variant, the system will automatically use the base article’s price.
This ensures consistent pricing behavior, even when variant-specific prices are omitted in the data source.
When logged in as a representative, the user dropdown menu now correctly displays 'Choose another customer' instead of 'Sign out'. This matches the behavior already present in the customer portal.
Previously, when a user switched from 'List View' to another display mode (such as 'Tile View'), the setting would revert back to the default view after applying a filter.
This behavior has been corrected. The selected display mode now stays active when filters are used.
In cases where a product had no image of its own, the webshop would automatically use the image from the first variant during synchronization to the performance database.
This mechanism did not trigger when the main product had a PDF document but no image. This has now been corrected: images from variants are once again used as fallback, even if a PDF is present at the main product level.
The view_item
event in Google Tag Manager was not triggered in certain
cases, causing product views to be missed in tracking.
This has been corrected so the tag now loads reliably across all relevant pages.
Orders that included component articles were incorrectly flagged as failed during the purchase tracking step. This led to confusion in order confirmation reporting.
The logic has been updated to properly recognize and process these types of orders.
When a guest account places an order, the integration between the shop and Exact Online can automatically create a corresponding customer record.
Previously, these records were created without a country setting, causing Exact to apply the default country code 'NL'—even for international customers. The country is now correctly derived from the invoice address.
The article table component could fail to render when the layout included
AccumulatedProperties
and one or more articles had no properties defined.
This scenario is now handled gracefully, preventing layout errors in such cases.
Sprint 56
april 18, 2025
This release brings powerful new personalization options, including customer- and product-specific content, to create even more tailored shopping experiences.
We've also expanded control over what logged-in and non-logged-in users see, such as stock visibility, giving you greater flexibility.
Our improved Dynamics F&O integration makes it easier and faster to connect new installations.
And as always, we've resolved several minor issues to keep everything running smoothly.
For articles that include multiple components, a direct "Add to order list" button is not always appropriate. We've updated the article overview pages (both list and tile views) to replace this button with a "View" button for such articles, guiding users to the detailed product page first.
With the Authorized Contents Template, you can show different content to different users or user groups based on their authorization profiles. Here's how it works:
A content block is linked to a specific authorization profile. Customers or customer groups are also linked to authorization profiles. After logging in, a customer will only see the content for which they have access according to their assigned profile. This allows you to deliver highly personalized content experiences within the webshop.
This mechanism operates in the same way as product authorizations in Shoxl: the system can be configured so that users only see the products linked to their authorization profile. With Shoxl’s authorization features, you can effectively offer every user their own personalized version of the shop.
We also fixed several issues related to the handling of authorized content blocks, ensuring that authorized content is now correctly displayed according to user profiles.
Dynamic content in Vendisto allows you to add product-specific information directly to product pages. It works by defining a layout with content blocks, where each block is linked to an editor in the "Dynamic Content" tab within the Vendisto CMS for that product. This gives you maximum flexibility to enrich product pages with tailored content.
Previously, a bug in the classification module prevented users from adding new subclassifications when dynamic content was active. The save button remained disabled, blocking the addition of new classification nodes. This issue has now been resolved, allowing full use of both classification management and dynamic content editing.
We introduced a new configuration option to tailor how stock information is shown to different user types. In the webshop settings, you can now define separately for anonymous visitors (passers-by) and logged-in users whether they see:
- ColorIcons (stock status through color icons)
- Numbers (exact stock quantity)
- ColorIconsAndNumbers (both status and quantity)
This allows you to offer more detailed stock insights to logged-in customers while keeping information for anonymous visitors more general.
Google Tag Manager (GTM) simplifies managing tracking scripts on websites. Previously, enabling the "MeasureViewBasket" setting could cause crashes in the shopping basket when handling products composed of multiple components.
The GTM tracking code has been updated and now correctly processes these bundled products.
We've introduced the option to set distinct MultiSafePay API keys per country, based on the customer's invoice address. This enhancement provides greater flexibility in managing your payment processing across different regions.
Support for the Polish payment method Przelewy24 has been added to the webshop settings. You can now easily enable and configure this option for your customers during checkout.
The various F&O endpoints now provide timestamps along with their data. This improvement enables our caching layers to selectively import only updated records, making data synchronization faster and more efficient.
Microsoft Dynamics 365 F&O is highly configurable, which can lead to variations in how data is structured between customers. We have now developed a generic mechanism that interacts directly with the oData layer, making it possible to support multiple F&O setups without the need for customer-specific adjustments.
We resolved several issues that occurred when paging through search results after applying a price filter. Previously, the minimum and maximum prices set via the slider or input fields were incorrectly converted to integer values after moving to another page.
Now, the minimum and maximum price values remain accurate throughout navigation, and are correctly based on CustomerPrices or PriceList prices when applicable.
Some webshops use multiple classifications within the Vendisto PIM to manage different storefronts from a single system. Previously, these classifications were stored in a random order, causing the default PIM classification to not always appear first.
We have now introduced a mechanism to position classifications in a logical sequence in the database, ensuring consistent and predictable ordering.
Postmark is a reliable email delivery platform used by Shoxl to ensure smooth and dependable email communication. When placing a pickup order as a guest user, the confirmation email previously showed the customer's invoice address instead of the store's pickup address.
This has now been corrected. Confirmation emails for pickup orders placed by guest users clearly show the correct store pickup address.
A robots.txt file instructs web crawlers (search engine spiders) which pages or files they should or shouldn't access on your website. By default, the Shoxl platform automatically generates this file to ensure essential directives are always included.
We've introduced greater flexibility: You can now manually create your own robots.txt file. When this custom version is present, the platform will no longer overwrite it, giving you full control over specific crawler instructions.
Category pages previously experienced crashes when articles contained properties defined in multiple languages. This issue has been resolved, ensuring category pages remain stable regardless of language-specific attributes.
In Shoxl, article tables are fully configurable: you can define exactly which columns are shown by using our layout language — the same language used to design overall page layouts.
Previously, columns in article tables could get stuck on "loading" when viewed by users who were not logged in. This issue has been resolved. Additionally, a new LogInToView layout setting has been introduced, allowing any column to display a login button instead, redirecting anonymous users to the login page.
In Vendisto, images can be managed at different levels of the product structure: at the product variant, product, or classification node level. The webshop displays these images on the relevant pages and, when a product image is missing, automatically substitutes it with the image from the first product variant.
A bug that sometimes prevented this substitution from occurring has now been fixed. All article groups now correctly display an image in the overview, even when a direct product image is missing.
Delivery schedules can include overrides to block specific dates from being selectable. A bug previously caused some of these overrides to be ignored, allowing blocked dates to appear as available. This issue has now been fixed, and all exceptions are correctly enforced.
Previously, it was not possible to add an article composed of multiple components to the basket together with one of its standalone components. This issue has now been resolved, allowing both the bundled article and its individual components to be added to the basket simultaneously.
In Vendisto, the Batch Upload function for images could crash when uploading more than 100 images at once. This issue has been fixed, ensuring smooth and reliable uploads even for larger batches.
When ordering an article with components, using the back button from the basket did not correctly restore the selected configuration. As a result, the article page failed to load the appropriate price and stock information. This issue has been fixed, and returning to the article page now fully restores all selections and displays accurate data.
We developed a more memory-efficient version of the article export function, reducing server load when exporting articles to Excel. During this update, we also fixed a bug where articles imported from the ERP system without a Title element were unintentionally omitted from the bulk export. All articles are now correctly included in exports, regardless of title presence.
To prevent outdated data from being served, we've introduced an "expire after" setting (in hours) for cached responses from the Product and Product Group APIs. This ensures that order book information remains fresh and up-to-date without requiring manual cache clearing.
We fixed an issue where the Country field on the customer registration form was not always visibly marked as required, even though it was technically mandatory. The form now clearly indicates that the Country field must be completed.
We fixed an issue where products that had a customer-specific net price but no gross price could not be added to the basket. The order button now correctly becomes active as long as a valid customer-specific price is available.
We've optimized the synchronization process for images and other assets between Vendisto and the shop. Updates are now faster and more reliable, ensuring that new and updated product images are reflected in the webshop with minimal delay.
Sprint 55
march 28, 2025
Sprint 55 was all about enhancing quality and user experience. Highlights include improved handling of bundled products, making it effortless to combine a base product with required or optional components. We've also extended the capabilities of our PIM system, paving the way for smoother integrations with popular data distribution platforms like Channable. And uploading your order books? That's now faster and more efficient than ever!
In the shop, a component relationship can be established between a base product and related articles. This setup changes the behavior on the product detail page: components can be selected via dropdowns and added to the basket along with the base product. These components can be optional or mandatory. In the basket, the base product and its selected components are shown as a single line, which can later be split into individual order lines depending on the ERP system's capabilities.
An issue arose where clicking back to a product with selected components from the basket failed to properly initialize the product detail page. As a result, the order interface appeared disabled and users could not modify or reorder the product setup.
This behavior has been corrected. Returning to a product with selected components now properly initializes the page, allowing users to interact with the order interface as expected.
The basket encountered issues where removing a bundle item did not properly remove the associated product due to a flaw in the basket logic.
This behavior has been corrected. When a bundle is removed, the associated product is now correctly deleted from the basket as expected.
In Vendisto, new relation types, such as "replacement" or "complementary," can be defined. These relation types are categorized either as "related" or "component."
Previously, a timing issue in the Vendisto UI made it difficult to add related items correctly. This experience has been improved: the "Add Related Product" button is now more responsive and reliably available when setting up new relations.
This enhancement streamlines the process of linking related products, making it faster and more intuitive for users.
Channable is an online feed management and automation platform that helps companies distribute their product data to marketplaces, comparison websites, and advertising platforms. Within our setup, Channable connects directly to our generic Product API to retrieve product information for feed generation and distribution.
We have enhanced the AutomaticProductImportManager tool by introducing a small parser that supports dynamic placeholders in filenames. The available placeholders are:
- {TIME}
- {DATE}
- {DATETIME}
- {TIMESTAMP}
These placeholders allow greater flexibility: feeds can now have either dynamic filenames (based on the timestamp or date) or static filenames, depending on the configuration.
This improvement simplifies integration with platforms like Channable and provides more control over feed file management.
The article XML file forms a crucial part of the automated data stream between ERP systems and the shop. Imported article data is stored in the Vendisto PIM database, which then synchronizes with the shop.
Within Vendisto PIM, article data can be enriched with additional properties and assets, such as images and documents. Articles can also be activated, suspended, or deleted through the concept of a "lifetime state."
We have enhanced the Article XML import functionality by introducing a new setting: ArticleDefaultLifetimeState. This new feature allows users to define a default lifetime state for newly imported articles if the state is not explicitly set in the XML. Previously, new articles without a specified state were automatically set to 'Active'. Now, administrators can configure whether such articles should default to 'Suspended', offering greater control over article activation workflows.
This functionality was developed in response to customer needs for better control over article visibility immediately after import.
During article imports, merging two article groups while simultaneously updating their group names could incorrectly trigger a validation error. This situation has now been improved to allow both operations to be performed smoothly without errors.
VAT rates are typically determined based on the region to which goods or services are delivered. However, in some business cases, VAT handling needs to be adjusted on a per-customer basis. For example, special VAT agreements may apply to educational institutions, healthcare providers, export customers, or resellers operating under specific tax exemptions.
To address these needs, we are extending the platform to support customer-specific VAT rates. The foundation for this functionality has now been laid: customer-specific VAT percentages can already be stored in the Vendisto database, and the Exact Batch Interface has been extended to import these rates from Exact systems.
This enhancement paves the way for even more flexible and accurate tax handling across different customer groups.
Previously, the free delivery threshold did not consistently account for discounts, which could lead to incorrect eligibility for free delivery. This behavior has been improved: discounts are now correctly factored in when calculating whether an order meets the free delivery conditions. This adjustment ensures a more accurate and fair application of delivery policies for all customers.
Some products were not orderable because the basket button on certain article detail pages contained an incorrect link. This resulted in users being unable to place orders directly from those pages.
The issue has been corrected. The basket button now properly links to the ordering process, ensuring that products can be added to the basket without problems.
Navigating from the sidebasket now correctly points to the selected variant instead of the default product.
Cloudflare's Rocket Loader is a feature that improves website performance by optimizing the loading order of JavaScript. It asynchronously loads scripts and prioritizes page rendering, helping to speed up the initial display of content for users.
However, Rocket Loader can sometimes interfere with custom JavaScript functionality by changing the execution order of scripts. This caused issues with our webshop's scripting behavior.
We have now added support to ensure that the webshop runs correctly alongside Cloudflare’s Rocket Loader optimization, maintaining full functionality without scripting conflicts.
Users were unable to reorder items from their order history due to an error in the Shoxl REST service layer. This issue interrupted the reorder process, preventing customers from quickly duplicating previous orders.
The problem has been corrected, and the reorder functionality now works as expected, allowing users to easily place repeat orders from their history.
The "lists" functionality allows article and article group lists to be displayed at various positions in a Shoxl shop or portal. Depending on the chosen configuration, these tiles can also show article attributes and (gross or customer-specific) prices. If prices are not yet available, a "loading..." placeholder is shown temporarily.
However, if prices could not be retrieved or were not allowed to be displayed, the "loading..." placeholder would remain visible indefinitely, causing confusion.
This behavior has been improved. The placeholder is now properly removed when prices cannot or should not be shown, ensuring a cleaner and clearer user experience.
In earlier setups, images imported from Exact Online required a file extension (such as .jpg or .png) to be included in the asset name. Without this extension, the system could not correctly recognize or handle the imported files.
We have improved this process: the file type is now automatically detected based on the content header of the imported asset. This means that manual addition of extensions is no longer necessary, making the import process more reliable and user-friendly.
This enhancement simplifies asset management and reduces the risk of import errors, improving the overall efficiency of product data handling.
One of the essential principles of the Shoxl platform is that the shop does not duplicate functionality already present in the connected ERP system. This approach ensures consistency, simplifies maintenance, and avoids potential conflicts between systems. It also means that, especially when completing an order, the shop should ask the ERP whether any additional costs or discounts apply. This communication happens via the CalculateOrder request.
An issue had arisen where the CalculateOrder request incorrectly added a null entry to the list of order lines.
This behavior has now been corrected, ensuring clean and accurate communication with the ERP system for a reliable calculation of the final order.
OAuth2 is a widely used standard for secure authorization. It enables users to grant limited access to their resources on one site to another site without exposing their credentials. OAuth2 plays a crucial role in modern authentication flows by ensuring secure and manageable access to protected APIs and applications.
To enhance the configurability and ease of deployment of our OAuth2 server, we have expanded the available logging functionality. This improvement provides better insight into authentication flows and system behavior, making it easier to troubleshoot and fine-tune configurations during deployment and maintenance.
Within the Shoxl platform, several generations of CSV upload processing have been developed. The latest generation significantly improves speed and efficiency. This advanced method has now also been applied to the Order Book functionality.
The Order Book allows customers to download a fully configurable Excel file that lists their personalized product assortment. Customers can easily compile a new order by filling in quantities for the desired products and uploading the file again. The selected items are automatically placed in the shopping basket in the specified quantities.
We have introduced the 'EnableFastCsvUpload' setting for the Excel Order Book, ensuring faster and smoother handling of uploads for even the largest customer catalogs.
The products and product variants in Vendisto are structured within a classification tree that can span multiple levels, depending on the shop configuration. Images can be assigned at different levels: Product, Product Variant, or Classification Node.
When a product lacks an image, the shop previously displayed the image from the first product variant. Similarly, a classification node without an image would inherit the image of the first product classified beneath it. Higher-level nodes would inherit from the first child node.
We have now enhanced this mechanism: product variants' images are properly propagated upwards to ensure products and classifications always display a relevant image when no specific image was assigned.
---The structure for products and variants allows assigning images at multiple hierarchy levels. In cases where no image was available for a product, a fallback mechanism ensures an image is still displayed, pulling from associated variants or classifications.
An improvement was made to strengthen this fallback logic, ensuring that images are accurately inherited from lower levels when needed. This change enhances the visual consistency across the storefront, even when direct images are missing.
---Vendisto organizes products into a tree structure with classifications. Images can be attached at the product or classification level. If an entity had no assigned image, the system would fetch the first available image from linked articles or classifications.
We refined this inheritance behavior to better handle missing images, ensuring that the first available product variant image is now properly displayed at higher classification levels when necessary.
A Shoxl shop features an article group overview page that lists all article groups. This overview is available in both List View and Tile View. If an article group contains only one article, that article can be purchased directly from the overview page (if configured accordingly). For article groups with multiple variants, the number of available variants is shown, and users must click through to select a variant before purchasing.
When the overview included both single-article groups and multi-variant groups, a problem occurred: no prices were displayed for the articles that could be purchased directly. This happened because the rendering logic was inconsistent depending on whether a row contained an article or an article group. The layout would also misalign columns.
We improved the rendering logic to ensure that prices are now correctly displayed in all cases. The layout has also been harmonized so that all rows contain a consistent number of columns, ensuring a clear and uniform presentation.
In previous versions, optional components linked to articles were not correctly added when users compiled order lists. This led to incomplete orders being created when optional items were expected.
The handling of optional components has now been improved. When articles are added to an order list, any optional components selected by the user are correctly included, ensuring a complete and accurate order list experience.
A bug was fixed where articles could be added to an orderlist without selecting mandatory components. This ensures that all required fields are now properly validated before items are added, preventing incomplete or incorrect entries.
When using the quote functionality, users who were already logged in could sometimes incorrectly see the "log in and order" button. This behavior has been corrected to ensure a smooth flow.
Additionally, the product overview was unable to display the "request quote" button and defaulted to showing the standard order interface. We have improved this behavior: the overview can now correctly show a mix of "request quote" buttons and standard ordering options, depending on the individual article settings. This update has been applied to both the list view and the thumbnail view.
Resolved an issue where the news overview incorrectly included archived news items. This resulted in the display of outdated content, incorrect filter counts, and misleading category options. The filter now exclusively shows active, published news items to maintain content relevance and clarity for users.
We identified and corrected a bug in the handling of delivery dates during the checkout process. Customers were previously able to select a delivery date that would later be rejected when finalizing the order, making it impossible to complete purchases for certain dates. This issue has now been resolved to ensure a seamless and reliable order placement experience.
To optimize pricing data storage and handling, the ErpCache price service has been enhanced. In addition to detailed pricing per customer and product, it now supports customer-specific discounts applied at the product group level, based on the standard price list prices.
This improvement reduces the amount of data needed, particularly in cases where customers are assigned to groups with defined product group discounts, minimizing storage load while maintaining accurate price calculations.
Sprint 54
march 7, 2025
In Sprint 54, our development team took a deep dive into improving integrations with both Microsoft
Dynamics F&O and its older sibling, Dynamics NAV (the proud ancestor of Business Central).
Meanwhile, our shop users received a shiny new feature—a deceptively simple but technically heroic
price filter based on customer-specific pricing.
Oh, and we casually threw in Finnish language support, significantly upping our Finnish skills in the
process. So, if you’re ever tempted to conquer Finland, we've got your back—or should we
say, your "selkä"!
A price filter can now be configured as part of the Shoxl shop. This filter allows users to select articles within a specified price range, either by adjusting a slider or manually entering minimum and maximum values.
Previously, the filter only worked on gross prices. Now, the functionality has been extended to support filtering based on net prices.
To use this feature, the ERP system's price model must be mapped to PriceLists and customer-specific prices. The expectation is that customer-specific prices serve as exceptions to the standard PriceList prices. However, if ERP price calculations require a customer-specific price for every product/customer combination, this solution (and net price-based filtering) may not be viable.
Future enhancements planned on the Shoxl product roadmap include implementing a default pricelist and supporting customer discount percentages to further improve this functionality.
The shop includes a setting that determines which net price is displayed on search result tiles after filtering or searching. For products with multiple quantity discount prices, this setting allows the system to show either:
- The lowest cumulative discount price
- The price of the cumulative discount with the lowest quantity (the unit price)
Previously, the net price filter did not follow this setting, leading to inconsistencies in price display. This has now been corrected—the net price filter will now respect the configured setting, ensuring consistent price representation across the shop.
The shop now supports the Finnish language, allowing users to navigate and interact with the platform in Finnish.
This enhancement improves accessibility for Finnish-speaking customers and ensures a better user experience in their preferred language.
Currently, the Shoxl shop sends various emails, including contact form confirmations, password reset emails, order confirmations, and quote-related messages. These emails are sent through a mix of external mail services and internal mail servers.
To improve efficiency and reliability, a dedicated email microservice is being developed. This new service will centralize all email sending, ensuring better management and consistency.
The initial development has started in this sprint, with full functionality planned for upcoming releases. A key benefit for shop administrators will be the ability to customize all email templates directly.
Previously, gross prices were incorrectly retrieved due to a mix-up in DataareaId values. Price calculations for gross prices also relied on the PriceAgreement entity, which could pull data from multiple divisions. If the system was set to retrieve price agreements from both Division A and B while gross prices were only meant to come from Division A, the final price calculation mistakenly included prices from Division B as well.
This issue has now been fixed by ensuring that only price agreements that match the same Division ID as the gross prices are considered in calculations.
Gross prices were not being exported because of missing permissions on the TaxEntity. This entity is required for gross price calculations, and without proper access, the export process failed.
Another issue was that price currencies were not handled correctly. The exporter only supported a single currency instead of multiple, limiting its functionality.
Solution:
- Permissions to the TaxEntity have now been granted, ensuring proper gross price calculation and export.
- The exporter now correctly supports multiple currencies, resolving the limitation.
These fixes ensure that gross prices are now exported correctly and without restrictions.
The batch interface for F&O relies on OData metadata to determine which entities and fields can be accessed. When a customer modifies the standard entity configuration by adding a new field, the locally cached metadata must be updated by retrieving the latest version from the customer's backend.
To streamline this process, the batch interface now includes a recovery mode. When an OData error is detected, the recovery mode automatically downloads the updated metadata and replaces the outdated cache. This ensures that changes in the customer's entity configuration are handled dynamically without manual intervention.
In the Shoxl cache, pricelists and price agreements result in storing a price for every combination of user, article, and quantity. While this setup ensures very fast response times, it can also lead to extremely large databases when dealing with a high number of users, multiple pricelists, and extensive quantity discounts.
To address this, an initial improvement has been implemented where the cache now utilizes pricelists more efficiently. This approach helps reduce database size while maintaining fast performance. This feature will be GA in the next release.
Sales representatives associated with a customer are now included as Global Access Users in the BatchCustomer export for Microsoft Navision Batch Integration. Additionally, an option has been introduced to configure Global Access settings.
In the customer interface, a salesperson_code is used. The question remains whether NAV can also provide an email address for each salesperson. If not, the system will map salesperson codes to email addresses or names that still need to be retrieved from FACE.
Furthermore, it is now possible to manually assign representatives to each customer. A combination of both automated retrieval from NAV and manual assignment should work seamlessly.
Permissions for sales representatives and regular users can now be managed during shop deployment, with Access Users being identified by their email addresses.
The quote overview was missing when a user had no permissions assigned. This led to confusion, as users without explicit quote-related rights were unable to see any relevant information.
To improve this, the system now ensures that users without specific quote permissions can still access the quote overview if they have general access.
This adjustment enhances transparency and provides a more consistent user experience.
Previously, the order history displayed incorrect VAT amounts due to a miscalculation. The system mistakenly used a percentage range of 0-100 instead of the correct 0-1 range when applying VAT to order totals. As a result, instead of adding 21% VAT, the system multiplied the total amount by 21.
This issue has now been resolved, ensuring that VAT is correctly calculated and displayed in the order history.
A new version of CalculateOrder (/V2/CalculateOrder
) has been implemented,
which supports decimal quantities. This allows more flexibility when processing orders
that require non-integer values.
The system now determines which version to use based on the setting
ShoxlRestCallV2CalculateOrderMethod
:
- If set to True,
/V2/CalculateOrder
is used. - If set to False, the system falls back to
/V1/CalculateOrder
.
This enhancement ensures better handling of decimal order quantities while maintaining backward compatibility.
A new option has been added to control the loading of price, stock, and order interfaces for items in static lists. This setting allows administrators to enable or disable price calls on these lists.
By disabling price calls, this feature helps reduce the load on slower back-end systems, improving overall performance and responsiveness.
Previously, the customer import process in Vendisto could cause duplicate pricelist records to be created in the database. This led to inconsistencies in price authorizations and potential pricing errors.
This issue has now been resolved, ensuring that the import process correctly checks for existing records before adding new pricelist authorizations.
When using the article selection wizard, the price and order UI did not load when clicking on the main image or link from an article group overview. This caused important product details such as SKU, price, and stock information to be missing from the page.
This has been corrected, ensuring that all relevant product details are properly displayed when navigating from the article group page.
Contact forms were not appearing after the page loaded. This issue was caused by the system failing to use the DefaultForm while, at the same time, attempting to validate custom form fields only on form submission instead of during page load.
The implementation has been adjusted to ensure that form validation occurs correctly during the page load process, allowing contact forms to display as expected.
Certain user pages did not redirect to the login page when accessed by a non-logged-in user. Instead, these pages either displayed an error message or redirected to the homepage, causing confusion.
This behavior has now been corrected. Users who attempt to access restricted pages without being logged in are now properly redirected to the login page.
Sprint 53
february 14, 2025
Sprint 53 brings exciting enhancements to help you boost conversions and improve your e-commerce experience:
- A new empty basket page, designed to guide visitors back into the buying journey—proven to increase conversions.
- More flexibility in customer discounts, allowing you to display them more explicitly than your ERP system supports.
- Smarter search capabilities, now including exact match support for phrases with spaces, delivering more precise results.
- …and much more!
📌 Check out the full list and reach out if there’s anything that could benefit your business!
With this update, you can now specify a customer discount in Vendisto. This discount will be transferred to Exact Online and will appear in the discount section of the order totals, rather than being factored into the line-item prices. This aligns with our core philosophy: if the ERP system lacks a specific capability, we enhance it to meet our customers' needs.
During Exact Online’s scheduled maintenance window (4:00 - 5:00 AM), the system was generating unnecessary email notifications due to service unavailability.
To prevent this, email notifications in the Exact Batch Interface have been disabled for specific HTTP responses, such as Service Unavailable. This ensures that only relevant alerts are sent, reducing unnecessary notifications.
It is now possible to apply authorization profiles to the OrderBook Excel download. This ensures that every user gets a personalized catalog, containing only the products they are authorized to see.
Since this Excel file can also be used to upload an order, this improvement helps streamline the ordering process while maintaining the correct access restrictions. Additionally, a loading spinner has been added to provide better feedback during the download process.
The search engine now supports exact match searches by using quotation marks
(""
). Previously, the system automatically added wildcards to every search
term, which sometimes led to too many results.
With this update, users can now search for an exact phrase by enclosing it in quotation marks. This provides more precise search results, ensuring that only exact matches are returned.
A bug prevented redirects from functioning correctly if they did not include a
classification (e.g., /NL/
). This issue has now been resolved, ensuring
that such redirects work as expected.
However, redirects for existing pages will not work. This is because the system always checks whether a page exists before looking for a redirect. If the original page is still present, no redirection occurs. This behavior follows best practices to ensure that valid pages remain accessible while only missing pages trigger redirects.
Previously, Vendisto automatically converted all relative URLs in the Visual Page Editor into absolute URLs by prefixing them with the Vendisto domain. This caused issues when copying and pasting links within the editor.
This behavior has now been corrected. Relative URLs will remain unchanged, ensuring that links function as expected without being altered unnecessarily.
The API now allows full management of OAuth2 audiences, providing more control over application access levels. Users can create, read, edit, and delete audiences directly via the API, making it easier to adjust authentication settings as needed.
Additionally, a new overview and search function has been added, enabling users to quickly find and manage existing OAuth2 audiences within the system.
A bug caused classification documents to be overwritten when new menu items were added. Additionally, catalog pages could disappear when synchronizing data from the central PIM to multiple shop instances.
This issue has now been resolved, ensuring that classification documents remain intact and catalog pages are preserved during synchronization.
A bug caused English-language resources to be missing from the asset dropdown in Vendisto, making it difficult for users to select the correct assets in an English-language environment.
This issue has now been resolved, ensuring that all necessary resources are available in the dropdown as expected.
The system now utilizes the ArticleOrderConfiguration entity in Microsoft Dynamics F&O to enforce minimum order quantities and addition quantities per product. This ensures that products can only be ordered in predefined increments, improving consistency and preventing incorrect order quantities.
This update also integrates these settings with the gross price per product, ensuring that pricing calculations align with the configured order quantities in Microsoft Dynamics F&O.
When placing an order, some fields that cannot be modified from outside the system should be changed. As a workaround, users can refresh metadata using one of two methods:
- Start the batch interface with the
--clearMeta
parameter. - Manually delete the metadata file (
Metadata.trimmed.xml
) from the system folder and restart the batch interface.
This ensures the correct value is applied without manual intervention.
Sprint 52
january 24, 2025
Sprint 52 introduces exciting new features, including an expansion of Vendisto PIM with shop-specific classifications. This enhancement enables multiple shops to be powered by product data from a single Vendisto installation.
Additionally, a solid foundation has been established for price filters based on customer-specific pricing. Previously, filtering was only possible using gross prices.
Finally, it's worth mentioning that support for item charges, such as deposit fees, is now also available for products sold in multiple packaging units.
All this and much more in Release 52!
With this update, products in Vendisto PIM can now be assigned to specific classifications, ensuring that each shop only receives the assortment relevant to its classification.
This new feature allows for precise control over product availability in multi-shop environments, automatically syncing data to the correct shop (performance) databases based on configured classifications.
With the Exact Batch Interface extended for CustomerPrices and PriceLists exports, filtering results now correctly reflect the selected price range using net prices.
This enhancement ensures that price filtering is fully aligned with actual customer-specific pricing, making it more accurate and relevant for users.
With this update, the Exact Online Batch Interface now correctly collects and applies the appropriate ItemCharge values for each generated item when "EnableItemPriceToArticleMapping" is set to true.
This ensures that the correct deposit fees ("statiegeld") are assigned based on the packaging unit, improving pricing accuracy and compliance within the shop.
With unit mapping, the articles listed in price lists do not directly exist in the Shoxl shop. Instead, when importing items, they are suffixed with the packaging unit. This caused issues where the system could not correctly match price list entries to available products.
To resolve this, the Exact Batch Interface has been improved to accurately map item numbers with their corresponding unit suffixes in the PriceListAuthorizations lookup.
Additionally, price list and gross price exports now function without errors, ensuring that items with suffixed packaging units are correctly processed and matched to their corresponding price lists.
This has now been fixed by ensuring that the entire query string (including sortMember, sortDirection, pageSize, and display mode) is always appended. Additionally, this improvement allows users to share product listing links with consistent sorting and display settings, ensuring the same article view for other customers.
- Delivery Scheme Overrides Now Applied Correctly
Webshop users can now successfully apply overrides to the default delivery scheme. Previously, an issue prevented this, but correct delivery settings are now enforced. - Accurate Delivery Schedule Retrieval
A date format issue occasionally caused incorrect delivery schedules to be displayed. This has been resolved, ensuring visitors always see the correct schedule. - Improved Date Validation in Delivery Schedule API
The delivery schedule API now correctly validates dates, preventing errors caused by format mismatches. This ensures accurate delivery date checks.
- Articles
- Batch Customers
- Batch Gross Prices
- Customers
- Price Lists
This ensures better handling of temporary failures by automatically retrying failed requests, improving stability and reliability in communication with Exact Online.
With recent changes in Exact Online, shipping costs are now a recognized concept, allowing them to be written directly to the shipping cost line.
As a result, the option to create a separate order line for shipping costs has been removed from the Exact Batch Interface, ensuring better integration and more accurate order pricing.
Sprint 51
december 13, 2024
This sprint, we’re excited to deliver full support for Item Charges. These are cost lines automatically added to orders based on predefined business rules in the ERP system. Item Charges are now also visible in the shop, ensuring accurate order calculations.
Additionally, we have finalized work on customer-specific minimum order values. You can now specify the basket total value required for individual customers to proceed with placing an order.
Finally, we resolved several bugs that impacted performance and usability. For details, check out the full list of release notes!
Shoxl shops can display item charges by querying the ERP system to determine, based on the basket contents, whether item charges apply. The ERP system then returns the applicable charges. However, not all ERP systems support such queries through their API—Exact Online is one example. This system does not allow for queries like: "Hey, take a look at this basket. Are there any costs associated with it that I should show in the shop?"
In such cases, the shop needs to calculate the applicable item charges itself.
This functionality has now been implemented for Exact Online. We collect all specified item charges, apply them to the products they are linked to, and display them in the shop.
Management of customer-specific minimum order amounts can be handled in the ERP system or in Vendisto. For instance, in Exact Online, you can create a customer classification to define the minimum order amounts.
In the screenshot below, a minimum order value of € 2000 for this customer results in a red warning box and a deactivated "Next Step" button as long as the Basket Value (excluding VAT, excluding surcharges) is lower than this threshold.
Sprint 50
november 22, 2024
We’ve increased our release frequency from once a month to every 3 weeks. This means new features will reach you faster, and case overviews will be shorter and clearer, making updates more manageable and insightful.
Highlights of the current Sprint include support the introduction of a schedule for opening times of pick-up locations; support for synchronizing multiple PIM-installations; and we started work on the option to specify customer-specific minimum order values.
The name of the delivery location is determined based on field availability:
- If the Company field is filled, the Company name will be used.
- If any of the Firstname, Middlename, or Lastname fields are available, the location name will be a concatenation of these fields (e.g., Firstname Middlename Lastname).
- If none of these fields are populated, a GUID will be assigned as the location name to ensure uniqueness.
october 2024
release 2024.10
This releases features the option to show products in multiple categories within the same classification. Categories and positions within categories can be managed in Vendisto through the user interface, or using Excel imports and exports.
On the integration side of things, we have focused on our interfaces with Exact Online and Microsoft Dynamics Finance & Operations.
The topmost category is designated as the "main" category. Users can adjust the category order by drag-and-drop in the Vendisto product detail screen or through the import/export functionality. Additionally, a new dialog allows users to set the default position of products within categories, visible in the shop when the default category sort order is selected.
Traditionally the export supported a number of Level_[n] columns to define the different classification levels of the classified articlegroup.
The Level columns were postfixed with a _[n] where n defines the depth of the classification level.
E.g. Level_1, Level_2, and Level_3.
The export now supports multiple categories per classification.
For databases with one classification, the Level columns are numbered according to the Level_[category position]_[n] scheme:
The position attribute defines the position of the category of the classified articlegroup.
For an articlegroup that is classified in multiple categories, the first category will be used as the default for the shown crumb path.
E.g. Level_1_1, Level_1_2, Level_1_3, Level_2_1, Level_2_2, and Level_1_3.
The export also supports the classification in multiple classifications.
For databases with multiple classifications, and only one classified category per classification per articlegroup, the Level columns are numbered according to the Level_[classification position]_[n].
The importer will interpret the first number after the level as the classification position if classification_[classification position] columns are added to the Excel sheet.
E.g. Classification_1, Level_1_1, Level_1_2, Level_1_3, Classification_2, Level_2_1, Level_2_2, and Level_2_3.
The two above solutions can also be combined for databases with multiple classifications per articlegroup and multiple classified categories per classification.
Level_[classification position]_[category position]_[n]
E.g. Classification_1, Level_1_1, Level_1_2,
For some of the implementations, this importer is already in production but not for all shops since the importer is still lacking some of the functionality.
With this update, the article bulk XML import now supports the ArticleGroupDefaultTitle import setting.
The ArticleGroupDefaultTitle can be set to Undefined (this is the default value), ArticleNumber, and ArticleTitle. If set to ArticleNumber, this setting specifies that for new articles the ArticleNumber will be used as the title of the ArticleGroup when creating an articlegroup for the article if no Title element is present on the ArticleGroup XML. The same applies for ArticleTitle.
Learn more (from our Google friends)
september 2024
release 2024.09
In the September release, a highly requested shop feature is now available: the ability to create custom lists of articles, article groups, and product categories that can be displayed in various areas of the shop.
Furthermore, we have introduced support for Google sitemaps to better handle larger product ranges and made several improvements to the management of vouchers and delivery schedules.
On the ingration side of things, we have focused on our interfaces with Exact Online and Microsoft Dynamics Finance & Operations. Exact Online now supports bundled products, while F&O includes support for managing multiple administrations (or divisions) within a single shop.
Additionally, we are in the final stages of developing an import facility that supports products appearing in multiple categories within a classification. This extensive upgrade will be GA (generally available) in the October release.
A good example would be defining a list of articles on offer, a list of new articles added to the assortment, or a list of articles related to the one a visitor is viewing. The following video show a homepage that starts with some fixed content, followed by three lists: a list of product categories, followed by a list of popular products, and ending with a list of product innovations.
Previously, users could populate these lists themselves, but the lists had to be created by Shoxl first. Now, it is possible to create lists directly through the Vendisto interface.
- We now support multi-language nodes and a multi-language sitemap.
- Additional modules, such as news and wiki, have been added to the sitemap.
- An issue where duplicate URLs could be added to the sitemap has been fixed.
- The sitemap will now automatically be split into several separate sitemaps, with a sitemap index, if the maximum size defined by Google is exceeded.
- The rendering of the sitemap has received a performance boost.
When both B2C and B2B customers can make purchases in a shop, B2C customers are sometimes allowed to buy in smaller quantities than B2B customers. Thus a customer may add items to their basket while still anonymous (under B2C rules), and then log in as a B2B customer. After logging in, the smaller quantities they added earlier may no longer meet the minimum quantity requirements for B2B customers. In such instances, the quantities in the basket must be adjusted to comply with the B2B purchasing rules.
Now, a notification popup appears to summarize automatic quantity adjustments when certain conditions are met. These adjustments occur under the following circumstances:
- An anonymous user logs in.
- The user's account is linked to price agreements.
- These price agreements cover products in the user's basket.
- The minimum order quantity is not met and/or the additional quantity is not divisible by the current article quantity.
This feature ensures that quantity requirements are automatically adjusted to meet minimum order thresholds.
This issue has been addressed by adding a visible "processing" indicator and disabling buttons after the first click on some pages. This prevents users from clicking multiple times while their request is being processed.
This problem was caused by the shipping cost API not properly handling exceptions when selecting a country for which no pricelist-bound shipping cost rule had been defined. This issue has been addressed, ensuring that the system now handles such exceptions correctly, allowing orders to be placed without errors.
The Voucher Customer Excel import phas been extended with several important validations to improve data accuracy:
- Resolved Import Issues: Fixed broken functionality in the Excel import.
- Redemption Limit Validation: Ensured that voucher redemption limits are validated as non-negative numbers.
- Duplicate Entry Detection: Added validation to identify and prevent duplicate customer-voucher links.
- Non-Existent Voucher Validation: Added checks for invalid or non-existent voucher codes.
- Customer Validation: Ensured that non-existent customers (based on debtor number) are identified during import.
For example, if there are three category items in two languages, both languages will have their own positions (1, 2, 3), ensuring better organization and management across different languages.
august 2024
release 2024.08
The August release focused on enhancing integration capabilities and resolving minor issues. Highlights include:
- Instant Stock Updates: Automatically reflect new stock positions and perform stock checks in the ERP system when an order is placed.
- Product Bundle Stock Calculation: Calculate stock availability for product bundles based on the stock levels of individual components.
- Authorization Enhancements: Support for authorizations linked to customers based on their assigned price lists.
For a complete overview, take a look at the full release notes!
july 2024
release 2024.07
The July 2024 release of the Shoxl e-commerce platform introduces several powerful new features and enhancements.
Key updates include the ability to dynamically toggle between displaying prices inclusive or exclusive of VAT, catering to both B2B and B2C customers. We've also added the option to use price lists as the basis for displaying customer-specific assortments. Additionally, shipment costs can now be calculated based on customer segments, determined by their association with specific price lists or even by debtor number.
Furthermore, we've made major upgrades to our interfaces with Microsoft Dynamics F&O and SAP ByD, which now utilize the OData interfaces of these platforms.
- Discount tables
- OrderLists
- FavoritesLists
- Basket preview
In the example below, our customer Grapedistrict uses this technology to present each customer with a dedicated wine assortment.
In this specific case, we fixed an issue where the default setting for authorization profiles was incorrectly set to 'Allow' in Vendisto. The default is now correctly set to 'Deny'.
A powerful new feature now offers granular control over payment costs through customizable filters. This functionality is designed to provide enhanced flexibility and precision in managing payment costs. With this feature, payment costs can now be adjusted based on the specific price list a customer is associated with, as well as the customer's debtor number. This allows for more tailored financial management, ensuring that payment costs are aligned with each customer's unique profile.
Key Features
- Flexible Filtering Criteria
- Filters can be applied based on PriceList and DebtorNumber.
- Each criterion supports both WhiteList and BlackList configurations.
- WhiteList and BlackList Options
- WhiteList: Ensures strict inclusion by requiring a match with the specified PriceList or DebtorNumber.
- BlackList: Excludes specific entries without requiring a match unless there is a direct conflict.
- Priority Handling
- When both WhiteList and BlackList are populated, the BlackList takes precedence.
- This ensures that any conflicting entries are excluded according to the BlackList rules.
- Combined Filtering
- Filters can be applied simultaneously on both PriceList and DebtorNumber.
- This allows for complex filtering scenarios, such as requiring a user to be linked to a specific PriceList while also excluding certain DebtorNumbers.
Usage Examples
- No Filters Applied
- If both WhiteList and BlackList are empty, or if PaymentCostsFilters is null, no filters will be applied.
- Single Filter Applied
- WhiteList Only: Filters are applied only when there is a match with the specified PriceList or DebtorNumber.
- BlackList Only: Filters are applied when there is a match with the BlackList. If no match is found, the filter is not applied.
- Combined Filters
- Both Lists Populated: The BlackList takes precedence over the WhiteList. Entries present in both lists will be excluded.
Example Configuration
{
"PaymentCostsFilters": {
"PriceList": {
"WhiteList": [
"PriceListA"
],
"BlackList": []
},
"DebtorNumber": {
"WhiteList": [],
"BlackList": [
"20021204"
]
}
}
- Users linked to PriceListA are included unless they have DebtorNumber 20021204, in which case they are excluded due to the DebtorNumber BlackList.
Benefits
- Enhanced Control: Provides granular control over which users are subject to payment costs based on their PriceList or DebtorNumber.
- Improved Flexibility: Allows for complex filtering scenarios to be easily implemented and managed.
- Priority Management: Ensures that exclusions are handled effectively with the BlackList taking precedence.
We hope this new feature enhances your experience and provides the flexibility and control needed to manage payment costs effectively. For more details and usage guidelines, please refer to the full documentation.
If we find a pricelist that does not yet exist in our cache, we will create one. But when it's an orphan, we will not remove it
- Implemented OData for the SapByD Webservice.
- Fixed a bug where suspended articles could not be set to active due to sharing an article group in Vendisto, but not in the exported XML.
- Fixed the duplicate ArticleGroupDefaultTitle bug in the Article XML
- Set Order Origin to Internet when a customer selects the Bank Transfer payment method while placing an order (SapByD Webservice)
june 2024
release 2024.06
The June release includes several exciting new features. Among them is the option to calculate discounts
for selected users based on the order total. Additionally, it is now possible to restrict payment
methods displayed based on the shopper's country. The User Portal now supports the display of Track
& Trace codes.
We've made numerous improvements to VAT handling, including support for specific Spanish taxes. Another
frequently requested feature now implemented is the ability to show article groups in multiple shop
categories.
Furthermore, there are extensive enhancements to our integrations with Exact Online, SAP Business One,
SAP ByDesign, and Dynamics F&O.
We could go on and on... Check the release notes to get the complete picture!
The first record of the classification Paths is the main classification. The classification order can be altered by drag and drop. Also, a classification can be removed by selecting a classification path and pressing the delete button.
By default, this functionality is disabled. The setting: UseMulticlassification, must be set to use this new functionality.
Price Display Toggle for Inclusive VAT
If the setting Price.Enable
Specify the starting date for syncing entities to the ExactCache. By default, the period is set to 1 year. You can customize this period using the following formats:
1y for 1 year
2m for 2 months
8w for 8 weeks
40d for 40 days
Additionally, a new CLI flag --forceFullSync has been introduced, which fully syncs entities specified after this flag.
- VAT Display Switch
- If the webshopsetting 'EnablePriceDisplayToggleInclusiveVAT' and the layout setting 'ToggleInclusiveVAT' is set to false, the VAT switch will not be shown.
- The value of the VAT switch is determined as
follows
- First, we check the user’s session. If a value is
stored
there, we use it.
- If the session value is empty, we look for the VAT switch
value in a local cookie. If found, we use that value.
- If both session and cookie values are empty, we check if
the user has provided a company VAT number. If a VAT number is
provided, prices will be displayed exclusive of VAT.
- Whenever the VAT switch changes, we update both the session
and the cookie.
The XML object will now only be rendered when an XML attribute has a value/default value. It will only render the field multiple times when translatable is true and at least the node is not empty or an attribute has a value.
may 2024
release 2024.05
Our latest update introduces significant improvements shipping schedule management, including new settings for handling shipping costs within orders. We've enhanced import/export functionalities, allowing for the import of customers with missing addresses and improved validation for shipping cost rules. Additionally, user interface improvements include enhanced filter functionalities, displaying deleted articles, and resolving issues with language dropdowns and YouTube video loading. New functionalities also include integrating the Azure service bus for the upcoming ImportExport Dashboard and specifying article weight fields.
april 2024
release 2024.04
Our April update introduces significant improvements to stock management with the implementation of Exact Stock Webhooks for real-time updates. We have enhanced import/export functionalities with support for language-specific translations and improved XML import capabilities. Additionally, user experience has been improved with advanced handling of payment conditions, better navigation in the shopping cart, and enhanced filter and search functionalities. We have also addressed key bugs and introduced new settings for maintaining property order and shipping scenarios.
ShippingCostFree (No shipping cost has to be paid)
ShippingCostPostCalculation (Shipping cost will be paid on post calculation)
ShippingCostApplied (you have to pay shipping cost, can be on condition)
Shippingcost scenarios can now be defined in Vendisto. Three types are now supported: ShippingCostFree, Postcalculation, and shippingcost threshold met.
In order to communicate with Exact Online, we need a token that is part of the OAuth flow that is needed to call the Exact Online API. The first token is generated by a manual process and hence refreshed by an automated process.
The problem was solved by configuring the latest version of the article XML import which under the hood contains a totally different architecture compared to the old mechanism.
The shop can now show the shippingScenario labels in the shop in a correct way
The order confirmation mailing can now show the correct shipping scenario label.
Change the position by drag-and-drop
Change the position by position field: