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…
SPanel - The all-in-one cloud management platform
.BD domain reseller
SSL Commerz payment gateway
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);
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;
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 🙂
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
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
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
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
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