Item

1) New Focus for Basic, Plus, and Max Ecommerce Plans

data-doc-id="none"

The Basic, Plus, and Max ecommerce plans have been restructured to better align with current customer needs. Several features have been moved down across plan tiers, expanding the value of the Basic and Plus plans, while the Max plan is temporarily withdrawn from the available plan options.

Plan pricing remains unchanged and no new plans have been introduced. See the updated plan overview at webinone.com/new-pricing.

What changed

Basic plan: The following features, previously available only from the Plus plan, are now included in the Basic plan:

  • Attributes

  • Inventory Management

  • Gift Vouchers

  • Discount Codes

Plus plan: The following features, previously available only on the Max plan, are now included in the Plus plan:

  • Wholesale Pricing

  • Custom Order Statuses

  • Shipping options (Shipping Integrations)

Max plan: The Max plan has been temporarily removed from the list of plans available when creating a new site. New sites are now created on Content Pro and Ecommerce Plus plans.



2) Decimal Number Support for Custom Properties

data-doc-id="2139"

A new Decimal Number custom property type has been added, allowing fractional values to be stored and processed in module items. Previously, the Number custom property supported integer values only; Decimal Number extends this capability to decimal values such as 1.5, 0.75, or 10.25.

The existing Number property remains unchanged and continues to support integer values only.

Key capabilities

Flexible decimal input: Decimal values can be entered using either a dot (.) or a comma (,) as the decimal separator. After saving, the value is automatically normalized and displayed according to the configured country/locale format, consistent with the behavior of system product fields such as Weight, Width, Height, and Depth.

Admin panel support: The new Decimal Number type is available when creating or editing custom properties in the admin panel.

Open API support: Open API endpoints accept and return decimal values for properties of type Decimal Number.

Import / Export support: Decimal values are fully supported when importing and exporting module item data.

Frontend item forms: Create and edit (draft) item forms rendered on the frontend support decimal input for Decimal Number properties using a standard numeric input:



<div> <label>{Name}</label> <input type="number" name="prop_{Name}" step="0.01" value=""> </div>

3) Advanced Cleanup Rules Builder with Structured Condition System

data-doc-id="3542"

The Data Cleanup Rules functionality (both Auto Cleanup and Manual Cleanup) has been redesigned to use a flexible, structured condition builder. Fixed presets such as "Created more than 30 days ago" or "Last login for 90 days" have been replaced with a universal system that allows administrators to combine condition types and parameters dynamically.

This removes hardcoded time intervals, unifies the condition structure across all entities, and makes cleanup configuration scalable for future condition types.

New condition structure

Each condition group is now composed of:

  • Condition Type – the attribute being evaluated (e.g., Creation date, Last updated, Status)

  • Condition – the comparison operator (e.g., Older than, Within last, Has order)

  • Dynamic parameters – value, period, multiselect options, or date range, depending on the selected type

Logic rules

  • AND is applied between different Condition Types

  • OR is applied within multiselect values of a single Condition

  • Records with an active recurring subscription remain protected and cannot be removed

Manual Cleanup – Specific period

Manual Cleanup additionally supports a Specific period option for date-based conditions (Creation date, Last updated, Last login), providing a date range picker (from – to). This option is not available in Auto Cleanup.

Exceptions

Exceptions have been migrated to the same structured model. The previous "Items and records with active recurring subscriptions" exception has been removed and replaced with a permanent system note: Contacts with active recurring subscriptions are always protected and cannot be removed. The same logical condition cannot be selected simultaneously in Conditions and Exceptions.


4) Open API Support for CRM Contact Billing Fields

data-doc-id="3260"

The CRM Contacts Open API endpoints now support billing address fields in both request and response payloads, allowing external systems to read and update contact billing details through the API in line with the data already available in the admin panel.

The following endpoints have been updated:

  • GET /api/v2/admin/contacts

  • POST /api/v2/admin/contacts

  • GET /api/v2/admin/contacts/{id}

  • PUT /api/v2/admin/contacts/{id}

The newly supported fields are:

  • BillingAddress

  • BillingCity

  • BillingState

  • BillingZipCode

  • BillingCountry



5) Order Customer Snapshot and Independence from Contacts

data-doc-id="2351"

Orders are now self-contained and no longer depend on the existence of their associated contact. When an order is created, a customer snapshot (email, first name, last name, billing address) is saved directly on the order, alongside the existing shipping snapshot. If the contact is later deleted, the order remains intact and displays safely-masked customer data.

Contact deletion behavior

The MemberId field on orders is now nullable and is automatically set to NULL when the related contact is deleted. The order itself, including its snapshot, is preserved.

For orders with a deleted contact, standard API and UI responses return masked values:

  • Email – a***@gmail.com

  • First / Last name – J***n / S***w (three asterisks between the first and last character)

  • Billing and Shipping address – fully masked as ***

Standard order endpoints never return the original snapshot values.

New admin permission – Can View Customer Snapshot Data

A new permission ‘Can View Customer Snapshot Data’ has been added to the admin role configuration for orders, after the existing ‘Can View’ permission.

  • Enabled – the ‘Reveal Data’ button is shown on the order and the admin can disclose the original snapshot values.

  • Disabled – the button is hidden and the data-reveal endpoint returns 403 Forbidden.

List, detail, and search behavior

  • Orders are listed regardless of whether the related contact still exists. If the contact exists, current contact data is shown; otherwise the masked snapshot is shown.

  • The order detail page remains fully functional when MemberId is NULL.

  • In the Trash, orders with deleted contacts are shown using the masked snapshot, and data reveal is not available.

  • The order list now exposes two search fields per customer attribute (live contact data and snapshot data). With the ‘Can View Customer Snapshot Data’ permission, search runs across both (OR); without it, only live contact data is searched.

Export

Snapshot fields for deleted contacts are always exported in masked form, regardless of the exporting user's permissions. Revealing original values through export is not allowed.

Open API

  • A dedicated GET endpoint has been introduced for retrieving an order's customer snapshot.

  • A new Open API scope CrmOrdersSnapshot - read has been added; the snapshot endpoint is accessible only to clients with this scope.

Restoring orders from Trash

If the original contact still exists, the order is re-linked to that contact. If the contact has been deleted but a snapshot is available, the order is restored with MemberId = NULL and continues to use the snapshot. Deleted contacts and related entities are not recreated.



6) Orders Trash Management with Restore and Retention

data-doc-id="2351"

A new Trash section has been added to the Orders area of the admin panel. Deleted orders are now temporarily stored in the Trash, where administrators can restore them or remove them permanently. This prevents accidental data loss and provides a controlled retention window for deleted records.

Access

A button has been added in the Orders section to open the Trash as a separate screen. From the Trash, administrators can return to the main Orders list at any time.

Trash list view

The Trash displays the list of deleted orders with standard pagination and search. The following are intentionally not available in the Trash:

  • Order details page navigation

  • Create order button

  • Import button

  • Export button

Available actions

Two per-order actions are available:

  • Restore – returns the order to the main Orders list and restores it to an active state.

  • Delete permanently – removes the order and all related data (payments, order lines, and other dependent records) with no possibility of recovery.

A global Delete all action is also available, which permanently clears all orders from the Trash.

All permanent deletion actions require explicit confirmation.

Retention

Orders are stored in the Trash for up to 90 days. After this period, they are automatically and permanently deleted, along with all related entities. The retention countdown starts from the moment the order is moved to the Trash; a dedicated field on the order entity stores the move-to-trash date and time used for this calculation.

Open API

The Trash management endpoints have been added to the Open API specification and documented in Swagger.


7) VAT Invoice Number Generation for Orders Without Gaps

data-doc-id="2351"

A dedicated ‘VAT Invoice Number’ has been introduced for orders, providing a strictly sequential, gap-free numbering stream that complies with EU VAT requirements. The existing ‘Invoice Number’ continues to operate unchanged as an external reference for payment system integrations.

Behavior

  • VATInvoiceNumber is generated only after an order has been successfully paid.

  • It uses its own sequential numbering with no gaps and is immutable once assigned. Attempting to regenerate the VAT invoice number for an order returns an error.

  • InvoiceNumber continues to serve as the external payment reference, with its existing logic unchanged.

  • VATInvoiceNumber is treated as the legally significant invoice number.

The sequence counter is initialized to the maximum existing value to ensure no duplicates are produced for newly generated VAT invoice numbers.


8) Self-service site transferring (portal - not available now) in process

data-doc-id="new"

A new ‘Transfer Sites’ section has been introduced in the WebinOne Portal, allowing partners with the Reseller role to transfer one or more sites to another partner account. The functionality covers the entire flow — from creating a transfer request, through receiver confirmation and Stripe payment, to scheduled execution and post-transfer history.

Key capabilities

Transfer Sites section A dedicated menu item with Outgoing, Incoming, and History tabs is available to portal owners. A badge highlights active requests that require attention.

Transfer request A request can include one or more sites and is created through a guided wizard covering site selection, receiver, fee payer, subscription handling (Keep / Cancel), and transfer time (Immediately / Off-hours). Unfinished requests are saved as Draft and can be resumed at any time. The receiver can accept, decline, or modify the request through a limited Change Request flow.

Payment Each transfer is charged at a fixed rate of $100 per site, paid by either the sender or the receiver via Stripe Checkout, depending on the selected Fee Payer.

Transfer execution Sites are transferred sequentially after payment. Off-hours transfers run within the 00:00–06:00 window in the data center's local time to minimize downtime. Aggregated and per-site progress is displayed on the request detail page.

Status history & notifications Every request maintains an immutable chronological log of status transitions, available from the request page. Email notifications are sent to the sender and receiver at all key events (request created, accepted, updated, declined, completed).

Constraints

  • A site can participate in only one active transfer request at a time.

  • Transfers are allowed only within the same data center region.

  • A request expires automatically after 7 days without confirmation.

  • Once paid, a request can no longer be edited.





Bug fixes

Portal

  • Added SVG image support in portal branding.

Admin panel

  • Fixed a duplicate Workflows entry in the admin role permissions list.

Email and notifications

  • Fixed an issue where file links in emails contained an extra //, resulting in URLs such as //_form_submissions/12345/.

Modules

  • Fixed an issue where applying a template from the item list via Apply Template updated only the frontend output but not the OSE.

  • Custom properties are now exported in alphabetical order in module item exports.

  • Added support for bulk-moving custom properties using CTRL / CMD selection.

  • Fixed an issue where admin users could not see editable fields on the module item details page.

WYSIWYG editor

  • Fixed an issue where files uploaded via the WYSIWYG editor were placed in the root of File Manager instead of the selected folder.

  • Fixed an issue where links and configured indentation were lost when switching between WYSIWYG and code view.

File Manager

  • Fixed an issue where files could be created without a file extension.