Changelog

Follow new updates and improvements to Upmind.

January 19th, 2026

Happy new year! We start 2026 with a bang, and a whole load of updates for you. Here’s what’s been going on over the holiday period…

Integrations:

  • SPanel - The all-in-one cloud management platform

  • .BD domain reseller

  • SSL Commerz payment gateway

New Functionality:

Widgets 2.0 (Beta Preview) Improvements:

Widgets 2.0 are now faster to instantiate, benefit from cached styles and are easier to configure/pass options to.

  • Refactored prop parsing to support either individual HTML attributes (simplest) or an application/json child <script> block (whilst keeping the bind approach for backwards compatibility).

  • Implemented dynamic slot detection using MutationObserver, so slot changes are picked up even when content is injected after initial render.

  • Fixed tooltips failing on highlighted cards (in certain browsers) when a background blur filter was applied.

  • Moved Tailwind CSS from repetitive inlined style blocks to a separate, cacheable, versioned stylesheet link; widgets now resolve CSS robustly across hosting environments with automatic cache-busting via build-time version injection.

  • Removed redundant HTML/head/body tags from the Custom Element template and standardised the Shadow DOM structure around a single root <section>, keeping the widget component as a pure presentation layer consuming reactive state from the composable.

  • Reduced the main JS bundle by ~72 KB (~417 KB → ~345 KB) by externalising styles (CSS emitted separately at ~71 KB).

Other functionality:

  • New contract product filter to the 'Tickets' tab, when viewing clients;

  • New setting to add a default support department per product;

  • Now showing the validation status of company tax numbers;

  • Added staff controls to manage and (re)validate tax numbers;

  • Now showing tax amount in dry-run 'amount to refund' calculation;

  • Updates to Duda provisioning integration (aligning to updates from Duda);

Fixes:

  • Broken query when invoice product doesn’t exist yet;

  • Catch errors during report generation cron loop;

  • Error opening lead ticket due to empty strings being passed;

  • Error submitting domain names settings form;

  • Prevent setting domain cookies on restricted apex domains;

  • Improved error handling for DLocal payment gateway;

  • Fix adjust promotions when combined with other percentage promotions;

  • Incorrect usage of ticket_department_id vs brand_ticket_department_id;

  • Wrong injection key breaking the mapping step for imports;

  • Remove auth provider management controls from API tokens view;

  • Update version of libphonenumber-js to support new mobile ranges;

  • Updates to TitanMail provisioning config;

Internal:

  • Additional API debugging;

  • Safeguard deleting invoice payments;

  • Upgrade Laravel to 6.20.45;

  • Refactor mapState and mapGetters to computed properties;

  • Add protection against early issuing of consolidation invoices;

  • Additional protections for duplicated waiting payment;

  • Update final components to utilise the useClientInjector composable;

  • Refactor injections to use composable pattern;

  • Remove $ prefix from provided data and method names;



December 17th, 2025

As we come to the end of the year, we would like to thank you all for being a part of our journey. There are plenty more things to come in 2026, but for now, here is our final changelog for 2025...

Integrations:

  • Ranking Coach

  • Netistrar

Functionality:

  • “Book a demo” added to Upmind website

  • Glue record management

  • Advanced manual filters

  • Ability to apply custom/manual filters on admin listings

  • Capability to add a custom (non-suggested) notification trigger condition

  • Improved notification templates row design

  • Row toggle for enabling/disabling notification templates

  • Ask for email 2FA code during both client AND staff username or password change

  • Surface default company name in client listings and profile view

  • 'Copy to clipboard' option for payload/debug/event data across event log modals

  • Allow deletion of empty brands as long as another brand exists in the org

  • Expose CP calculated suspend / cancel / close dates in Invoice template

  • Gateway Setting: Round Value if Currency has no decimals

  • Manage staff authentication providers: password, SAML etc

  • Manage client authentication providers

  • Manual status filter for contract product listings

  • Improved IP whitelist checks during authentication

Fixes:

  • Stopped showing 'pay online' link on legacy invoice PDFs

  • Resolved issue with MercadoPago payments incorrectly crediting

  • Fixed broken href passing within ULink components

  • Fixed issues with Razorpay payments

  • Client credit message missing a value in Admin Portal

  • Assign all admin users to brand ticket departments

Internal:

  • Tool for merging brands

  • Sync Localazy translations

  • Introduce new useSensitiveActionChain composable

  • Update provision types imports

  • Improve provider type definitions

  • Sync Localazy translations

  • Improve UX/UI of the 'Legacy invoices' listing

  • Update Enhance SDK for PHP 8.5 compatibility

  • Security enhancements to password reset functionality




November 19th, 2025

Here is a summary of the latest Upmind changes. We’ve been busy working on lots of new features and integrations to improve the platform:

  • New provider integrations:

    • PanelAlpha

    • Webuzo

    • ISPManager

  • New functionality

    • Click to copy a brand's UUID from the admin 'Brands' list view

    • 'Read-only' option setting for custom client fields

    • Improve UX/UI of the 'Legacy invoices' listing

    • Improved notification templates row design

    • Surface default company name in client listings and profile view

    • Row toggle for enabling/disabling notification templates

    • Toggle for a domain provider's inclusion in availability lookups

    • Quickly search & switch between client products when clicking the product title

    • Convenience one-click option for regenerating reports

    • Convenience option for downloading invoice PDFs from a list view

    • Bulk product updates

    • Ability to download deleted client invoices

    • Add staff 'Copy to clipboard' control for contract product names

    • Capability to add a custom (non-suggested) notification trigger condition

    • 'PDF Templates' settings group to accommodate additional PDF types

    • Customise your brand's 'Wallet Statement PDF' template

    • Option to download wallet statement as CSV

    • Bulk 'Issue next invoice' contract operation

    • Create, manage and assign reusable email layouts

    • Option to grant staff access when enabling support departments

    • Setting to require 2FA when Upmind clients change email or password

    • Added getVerificationStatus() and resendVerificationEmail() functions with implementations for OpenSRS, HRS and SynergyWholesale domain providers

    • Razorpay checkout gateway

  • Fixes

    • Fixed .lu domain transfers

    • Broken href passing within ULink components

    • Position of percentage change amount within MRR stat card

    • Credit note redirection route

    • Remove focus trap within sibling product search

    • Incorrect options for 'Recipient Type' notifications filter

    • Bug showing translation validation errors

    • Skip fetching of main invoice when value is none from import

    • Add client_id fallback in case invoice current data is empty

    • Reactivity bug when restoring initial template state

    • Improvements to the support “take ticket” function

  • System reliability & performance updates

    • Smoother background job handling, report regeneration optimization, and improved error resilience

    • Safer cron operations, improved job concurrency, and duplicate payment prevention for Stripe, MercadoPago, PayPal Billing Agreements

    • Security improvement — removed admin IP addresses from client hook log endpoint

  • Internal updates:

    • Added additional log metadata for hook exceptions to improve debugging and monitoring

    • Deprecated “Bulk Updates” in favor of “Bulk Operations”.

    • Introduce new useSensitiveActionChain composable

    • Update provision types imports

    • Improve provider type definitions

    • Sync Localazy translations

October 9th, 2025

It’s been a little while since our last release roundup, so consider this another bumper edition. Over the past few months, we’ve shipped a series of updates across billing, automation, and the admin experience. Highlights include a new option to split contract products by units sold, support for iDEAL and SEPA payments via Stripe, staff impersonation for admin users, and a powerful new Monaco (VSCode) editor in the admin area.

Here are the full release notes, neatly categorised for convenience 🙂

Billing Updates

  • NEW: Option to 'split' items into separate contract products based on units sold

  • NEW: Surface 'payments' associated with a credit note, if applicable

  • NEW: Add 'Credit notes' tab for invoice view if document has been credited

  • NEW: Staff option to 'Issue credit note' when topping up account credit

  • NEW: Staff option to provide a 'Reason' when topping up account credit

  • NEW: 'Credit transactions' row design, including optional top-up reason

  • NEW: Client option to manually request affiliate commission withdrawal

  • NEW: Add internal_name field to payment gateway providers form

  • NEW: Surface internal gateway names in admin contexts

  • NEW: Stripe » Support for iDEAL payment method

  • NEW: Stripe » Support for SEPA Debit payment method

  • NEW: Stripe » Restrict PayPal method to presentment currencies only

  • NEW: Stripe » Minor-unit computation for zero-decimal currencies

  • NEW: Stripe » Minor-unit computation for UGX currency

  • FIX: Decimal bug when defining custom billing terms

  • FIX: Relay manual payment result after account credit top-up

  • FIX: Change default invoice sort order to use 'Date issued'

  • FIX: Minor bug when stepping back in the quick invoice modal flow

  • FIX: Broken invoice item routing when the underlying product is hidden

  • FIX: 'Multi-currency options' field not reflecting brand default setting

  • FIX: Breaking invoice display when options are not returned as Array

  • INTERNAL: Refactor order route handling in various components and views

  • INTERNAL: Refactor account credit

  • INTERNAL: Remove obsolete wallet transactions table

  • INTERNAL: Refactor currency recalculation options with centralised bindings

  • INTERNAL: Refactor gateway-related imports to use centralised types

  • INTERNAL: Remove deprecated gateways model

Automation Updates

  • NEW: Implement notification hook/trigger conditions

  • NEW: Expose recipient type category variables when authoring templates

  • FIX: Empty parameters when creating a segment from bulk notifications

  • FIX: Disabled submit when trying to bulk update contract intervals

Security Updates

  • NEW: Staff user impersonation for admin users

  • NEW: Set read-only domain-level cookies for guest and client sessions

  • FIX: Bug adding whitelisted IPs for staff users and API tokens

  • FIX: Uncaught error when revoking API tokens

  • INTERNAL: Add psl package for improved domain/hostname parsing

  • INTERNAL: Expose new getApexDomain method to use within cookies helper

Settings Updates

  • NEW: Message signature feature

  • NEW: Brand tokens field for storing design tokens (for Cart/Panel 2.0)

  • NEW: Support for setting a custom 'Google Tag Manager' script URL

  • NEW: Add support for custom storefront_url within brand meta

  • NEW: If shown to users, make custom cancellation fields optional for staff

  • INTERNAL: Shuffle around 'order in bulk' catalogue settings

  • INTERNAL: Set default values for show_to_customer & show_on_invoice to false

UX/UI Updates

  • NEW: Contract product tags

  • NEW: Improved UX/UI for selecting and managing object tags

  • NEW: UTag component with a 'subtle' display variant and in-built tooltips

  • NEW: Implement Monaco (VSCode) Editor into admin area

  • NEW: Add twig language support within UMonacoEditor

  • NEW: Add 'Preview records' control during import step

  • NEW: Indicator to highlight default user permission groups

  • NEW: Adaptive datetime formatting across support-related components

  • FIX: Bug in UDropdownMenu component

  • FIX: Click handler on UIconControl component

  • INTERNAL: useMonacoTwig composable for Twig language auto-completion

  • INTERNAL: Deprecate Codemirror editor in favour of Monaco Editor

  • INTERNAL: Deprecate JsonEditorVue editor in favour of Monaco Editor

  • INTERNAL: Deprecate tagsProvider in favour of new useTags composable

  • INTERNAL: Sync Localazy translations

July 4th, 2025

Welcome to our latest release roundup. Over the past few weeks we’ve delivered a stack of upgrades; client-level IP whitelisting, sharper fraud protection with keyword-based rules, an improved UX for scheduling price changes, a re-engineered dataLayer boot sequence, and plenty of behind-the-scenes polish.

Here are the full release notes:

  • NEW: Create and manage 'keyword' fraud rules

  • NEW: Pagination and quick search capabilities for segment lists

  • NEW: Improved UX/UI for scheduling bulk & individual contract price changes

  • NEW: Create and manage tax exemption codes for tax templates and clients

  • NEW: Add missing 'Account Credit' route under 'Manage My.Upmind'

  • NEW: Add missing 'Billing Settings' route under 'Manage My.Upmind'

  • NEW: Top level 'Store catalogue' menu item for faster inventory management

  • NEW: Apply brand grouping to option-based filters when in multi-brand mode

  • NEW: Product ID filter available on contract product listings

  • NEW: Profile menu control for faster access to a client's pinned vault assets

  • NEW: Admin controls to manage your own IP whitelisting preferences

  • NEW: Product automation setting to 'Auto accept cancellation requests'

  • NEW: Setting to show and capture contract cancellation fields from staff users

  • NEW: Product catalogue descriptive tooltips to provide additional context

  • NEW: Pre-populate username field if passed in query param

  • NEW: UX/UI for managing brand & staff IP restrictions

  • NEW: IP whitelist capability for securing client accounts

  • NEW: Swap invoice payments feature

  • NEW: Refund option to 'Adjust invoice balance and issue credit note'

  • NEW: Implement support for additional fraud reasons

  • NEW: Force conscious field type selection when creating custom fields

  • NEW: DataLayer events for product views and page views

  • NEW: Make billing term optional when scheduling bulk price changes

  • NEW: Push default gtm and uetq consent settings

  • NEW: Implement recommended GA4 select_item event

  • NEW: Implement recommended GA4 begin_checkout event

  • NEW: Implement custom invoice_paid order event

  • NEW: Implement upm_actor cookie management

  • NEW: Expose brand_id and org_id for stitching upm events

  • NEW: Convenience link from cProd provisioning to catalogue product settings

  • FIX: Bug authoring segments in multi-brand mode

  • FIX: Checkbox value bindings for Lock due date to billing cycle? field

  • FIX: 'Select all' behaviour when configuring payment provider currencies

  • FIX: IP whitelist verification errors on untouched forms

  • FIX: Multi-brand catalogue category guarding

  • FIX: Routing to admin security and currencies settings

  • FIX: Console errors when listing API tokens

  • FIX: 401 error handling on logout call

  • INTERNAL: Deprecate 250+ instances of {object} string interpolation

  • INTERNAL: Trust can_see_ticket_messages flag for determining thread visibility

  • INTERNAL: Add hook code mappings for scheduled actions

  • INTERNAL: Improve fraud rule descriptions and terminology

  • INTERNAL: Refactor UI18n component to facilitate passing text to scoped slots

  • INTERNAL: Add translation mappings for proforma invoice hooks

  • INTERNAL: Refactor IP whitelist management to use composables

  • INTERNAL: Omit Sentry errors where this are no stack-trace frames

  • INTERNAL: Remove allowUrls from Sentry config as no longer required

  • INTERNAL: Filter out third-party Sentry errors & tweak replay settings

  • INTERNAL: Update @sentry/vue and dependencies to version 9.22.0

  • INTERNAL: Increased memory limits when running builds

  • INTERNAL: Refactor boot sequence of GTM and dataLayer

  • INTERNAL: Deprecate upmDataLayer in favour of dataLayer

  • INTERNAL: Sync Localazy translations

May 16th, 2025

Here's our latest release roundup. Over the past few weeks, we’ve added powerful new controls for managing dynamic staff access, parent branding, and account delegation – alongside UI enhancements for invoice breakdowns, credit statements, and faster brand switching. As always, we hope these changes improve your day-to-day Upmind experience.

Here are the full release notes:

  • NEW: Introduce 'Default' staff user groups

  • NEW: Optionally restrict staff access to clients, requiring an assigned ticket or pin

  • NEW: UI & line-item breakdown for invoices; aligning with recent PDF changes

  • NEW: List and download wallet credit statements as PDF

  • NEW: Improved UX/UI for assigning existing delegates to tickets & products

  • NEW: Controls for managing & uploading parent-child branding

  • NEW: Add city support when defining tax tag locations

  • NEW: Brand name filter for organisations operating with 5 brands or more

  • NEW: Delegated contract product message for staff in a delegate context

  • NEW: Dedicated 'Activity log' for staff viewing a client profile

  • FIX: Quantity support for product attributes

  • FIX: Alphabetical ordering of brands in the admin panel

  • FIX: Region selection mapping from Google Places suggestions

  • FIX: Asterisk missing when address region is required

  • FIX: Display issue/race condition related to tax tag locations

  • FIX: postTranslation hook logic to check for active locale translation

  • FIX: Potential undefined error in i18n translation retrieval

  • INTERNAL: Update DAC component to version 1.4.3

  • INTERNAL: Pass custom maxWidth value to the onboarding component

  • INTERNAL: Add Google Maps type definitions

  • INTERNAL: Refactor addressSearch component to use the new Google Place API

  • INTERNAL: Add .well-known/apple-developer-merchantid-domain-association file

  • INTERNAL: Refactor more components to use @upmind-automation/types

  • INTERNAL: Update Sentry ignored sources and error patterns

  • INTERNAL: Sync Localazy translations

April 4th, 2025

We've been so busy building that we completely forgot to announce our February and March releases, so consider this a bumper edition of goodness.

Over the last few months, we’ve introduced a number of major improvements across account management, pricing, and client experience. You can now create and assign delegates at an account level, bulk update pricing and automation settings for contract products, and schedule future changes to pricing and billing terms. These are powerful tools for managing clients and subscriptions at scale. We’ve also added new features and controls around credit limits, invoice automation, and manual invoice generation. Oh, and we’ve completely redesigned our invoice PDFs for a cleaner, more professional look.

Here are the full release notes:

  • NEW: (BIG) Implement account level delegates

  • NEW: Controls for adding, listing, managing and revoking client delegates

  • NEW: Sequential client numbering feature

  • NEW: (BIG) Bulk update prices & automation settings for contract products

  • NEW: (BIG) Schedule contract product price and billing term changes

  • NEW: UI to show historical bulk/scheduled updates

  • NEW: Confirmation step before actioning bulk updates

  • NEW: Billing cycle months filter option

  • NEW: "Parent client" branding overrides

  • NEW: Setting to white-label and remove branding from client auth routes

  • NEW: Support i18n overrides via brand meta data

  • NEW: Improved post-registration UX with auto-login and invite acceptance flows

  • NEW: Implement 'Company required' messaging and guards on checkout

  • NEW: Optionally capture cancellation reason for staff

  • NEW: 'Select all' control when managing user department assignments

  • NEW: Account credit limit feature

  • NEW: Brand settings to manage credit limit availability

  • NEW: Admin and client UIs for managing and consuming credit limits

  • NEW: Setting to define timeframe for manual invoice generation

  • NEW: Improved and re-designed default invoice PDF template

  • NEW: Use calculated_next_invoice_due_date within 'invoice next due' messaging

  • NEW: Client automation override settings to forcefully block suspend, terminate etc

  • NEW: Surface client External ID whether linked to import or not

  • FIX: Hide 'Manual price' tooltips in client context

  • FIX: Quick invoice config price always showing gross price

  • FIX: Bug referencing brand meta within SmartDomainField

  • FIX: Min/Max validation bug for non-numeric fields

  • FIX: Retentions listing loop bug

  • FIX: Logic combining credit and dataFunc methods within payment provider

  • FIX: Error within client 'Cancel order' modal

  • INTERNAL: Update DAC component to version 1.4.0

  • INTERNAL: Implement new custom UI18n component to support postTranslation hook

  • INTERNAL: Replace <i18n> with <u-i18n> component

  • INTERNAL: Refactor ULink component to use render functions

  • INTERNAL: Refactor contract product listing and row item

  • INTERNAL: Small refactor relating to filters and segments

  • INTERNAL: Add min, max & step attributes for provision number fields

  • INTERNAL: Implement new impersonation endpoint

  • INTERNAL: Migrate and pull upmind/types from Github

  • INTERNAL: Implement new endpoint to unassign lead ticket user

  • INTERNAL: Remove default draft filter from provision request logs

  • INTERNAL: Remove deprecated language strings

  • INTERNAL: Sync Localazy translations

January 29th, 2025

Over the past month, we've rolled out several updates to streamline support and ordering workflows. Ticket management is now more intuitive, with smarter listing logic and dedicated staff profile views for assigned, watched, and closed tickets. Ordering has been improved with a setting to preselect product options and attributes, while optimised loading states enhance the speed of contact product listings.

Here are the full release notes:

  • NEW: Ticket listing logic (get all vs assigned) depending on assigned functionalities

  • NEW: "Assigned", "Watched" & "Closed" tickets view under each staff user profile

  • NEW: Exclude departments from "take ticket" assignments with new limited setting

  • NEW: Show client's default phone number on profile card

  • NEW: Setting to preselect product options and attributes when placing an order

  • NEW: Optimise loading state (reduce latency) of contact product listings

  • NEW: Deprecate contract product onboarding screens to prevent blocking requests

  • NEW: Make filters, sorters and quick search immediately available for contract listings

  • NEW: 'Admin Access' boolean filter for staff users listing

  • NEW: "More details" control to access cancellation request fields in different contexts

  • NEW: Support for Hungarian (HU) locale

  • FIX: Send test email flow breaking for certain object types

  • FIX: Logic determining whether refund options should be shown during cancellation

  • INTERNAL: Refactor ticket status handling to use status_code instead of status_id

  • INTERNAL: Refine ticket inbox filters to simplify options based on user permissions

  • INTERNAL: Refactor to retrieve cancellation request fields and values as a relation

  • INTERNAL: Create a new shared component for displaying cancellation request fields

  • INTERNAL: Refactor import types across several core objects

  • INTERNAL: Sync Localazy translations

December 22nd, 2024

As the year comes to a close, we’re excited to share details of our latest release. You now have greater control over contracts with the ability to rename products, options, and attributes for better customisation. New subscription settings allow you to disable immediate cancellations and capture custom fields for 'soft' (end-of-term) cancellations, offering improved insights into customer churn and retention opportunities. Lastly, we’ve added MercadoPago as a payment gateway, expanding options for businesses serving Latin America.

Here are the full release notes:

  • NEW: Change contract product, option, and attribute names

  • NEW: Setting to capture cancellation fields for 'end-of-term' (soft) cancellations

  • NEW: Setting to prevent clients from requesting immediate (hard) cancellations

  • NEW: MercadoPago payment gateway (supporting credit/debit cards)

  • NEW: Relay segment ID when selecting bulk notification test recipient

  • NEW: Surface original contract product names if they've been customised

  • FIX: Bug within the upgrade/downgrade dry-run modal

  • FIX: Logic behind when to show auto-renew toggle controls

  • FIX: Warning when checking impersonation permissions of child accounts

  • INTERNAL: Guard legacy invoices using new has_legacy_invoices flag

  • INTERNAL: Refactor contract cancellations from provider to composable

  • INTERNAL: Replace imports from '@/models/clients'.

  • INTERNAL: Resolve import issues with shared types on the CI pipeline

  • INTERNAL: Sync Localazy translations

December 6th, 2024

In this release, clients and staff can now manage their notification preferences, meaning users can pick which updates they receive and how – whether it’s billing alerts, support updates, or service notifications. We’ve added an IP lookup modal, providing deeper insights when reviewing orders and fraud events. Lastly, staff can now use a quick search feature in the admin catalogue, making finding products, options and attributes faster and easier.

Here are the full release notes:

  • NEW: Client notification preference management

  • NEW: Staff notification preference management

  • NEW: Token-based notification preference management

  • NEW: IP address lookup modal for orders and fraud events

  • NEW: 'Quick search' on staff catalogue product listings

  • NEW: Provision configuration filter within TLDs listing

  • NEW: Registrar 'Auto mode' option within manage TLD modal

  • NEW: Show username in clients list when different to email

  • FIX: Payment attempt param not being encoded correctly during redirect flow

  • FIX: Related product selection when creating tickets

  • FIX: Use of cProdsListing instead of ProductsTable

  • INTERNAL: Import shared @upmind/types

  • INTERNAL: Adjust pagination limit defaults

  • INTERNAL: Reduce the number of with relations when listing templates

  • INTERNAL: Sync Localazy translations