./bin/console suitecrm:version
Released: 30th April 2026
SuiteCRM 8.10 is one of our most significant releases to date. It brings the Documents and Notes modules fully into the SuiteCRM 8 UI, introduces the long-awaited Image Field, lays the groundwork for large-scale async background processing, and delivers a substantially improved email compose experience. This release also merges SuiteCRM 7.15, bringing PHP 8.4 support and advanced calendar sync.
You can now upload and display images directly within any module — making it ideal for product photos, profile pictures, logos, and other visual assets. Image fields can be added via Studio in the Admin panel, just like any other field type, with configuration options for storage type, display dimensions, and preview behaviour.
In List Views and Subpanels, SuiteCRM automatically generates thumbnails and lazy loads images to keep performance in check at scale. Both the thumbnail dimensions and the lazy loading behaviour are configurable via config_override.php.

Documentation: Image Field
Writing emails in SuiteCRM previously meant working within a constrained modal with limited formatting space and no way to attach documents without leaving the compose window. SuiteCRM 8.10 addresses all of this:
Maximise — The compose modal can now be expanded to full screen, giving you the space you need for longer messages.
Attachments — Documents can be attached directly from within the compose window, without switching context.
Variable Injector — Dynamic content (such as recipient name or account details) can be inserted inline using the new Variable Injector button.
Draft Management — Full draft support is now included. Drafts are saved automatically and can be managed, resumed, or discarded from a dedicated Drafts area.
Documentation: Composing an Email · Managing Drafts
Campaigns that hit SMTP errors or exceeded error thresholds previously continued sending silently, making it difficult to detect and respond to broken outbound configurations. SuiteCRM 8.10 introduces automatic pause-and-resume behaviour:
Paused Status — An Email Marketing Record is automatically paused when the error threshold per batch is reached, or when the selected Outbound Email account cannot connect to SMTP. Both queueing and sending stop while paused.
Warning Banner — A banner is displayed on the record showing the most recent error that triggered the pause.
Resume Action — Use the new Resume action to continue from where the campaign left off, without re-sending to already-processed recipients.
Two new configuration options are also available:
| Option | Description |
|---|---|
Maximum send retries per recipient on failure |
How many times SuiteCRM retries a failed send before marking the recipient as permanently failed. |
Error threshold per batch |
Maximum errors allowed in a single batch before the record is auto-paused. Set to |
Documentation: Campaigns
Both the Documents and Notes modules have been fully migrated to the SuiteCRM 8 interface, replacing the legacy views with consistent, modern patterns.
File Field — File attachments now use the new File field type, with malware scanning support if configured.
Storage Type — Documents and Document Revisions both default to private-documents storage. Both fields must use the same storage type — changing only one is not supported.
Document Revisions Widget — A new table widget replaces the previous subpanel. From it you can add new revisions, download files by clicking the filename, and delete revisions using the trash icon. Note that the active revision cannot be deleted until a newer revision exists.
PDF generation has been updated on several key modules to use the SuiteCRM 8 entrypoint and compose modal.
Print as PDF — Available from the action menu within the record view for Accounts, Quotes, Invoices, Contracts, Contacts, and Leads. Select a template, and the PDF is generated and downloaded automatically. A Note record is also created with the PDF attached.
Email PDF — For Quotes, Invoices, and Contracts, an Email PDF option opens a pre-composed email with the PDF already attached and content populated from the record.
Bulk PDF Generation — Select multiple records from the list view, then use Print as PDF from the bulk action menu to generate a single merged PDF. A Note is created for each selected record with its respective PDF attached.
Documentation: PDF Templates
File Fields can now be added to any module directly through Studio, without custom development. If malware scanning is configured on your instance, file uploads through the File field will be scanned automatically.
Documentation: File Field
SuiteCRM 8.10 introduces Async Tasks — a new type of background job designed to process large volumes of data without blocking the application or overloading the server. Tasks are queued and processed by a background worker, and progress is tracked in real time.
Action Required — SuiteCRM 8.10 introduces a new background worker that must be configured for async tasks (including Manual Migration Tasks) to function. Without a running worker, these tasks will remain in Pending status indefinitely.
See the Messenger Setup guide for full instructions on how to configure the worker.
Manual Migration Tasks are a specialised type of Async Task for handling complex data migrations. They run in the background so you can continue using SuiteCRM normally while a migration is in progress.
Navigate to Administration Panel → Admin Tools → Migrations to access them.
Key behaviours:
Tasks are added automatically after an upgrade, but can also be created manually.
Data is processed in small batches to avoid server overload.
Progress is tracked in real time: items processed, succeeded, and failed.
Failed items can be retried individually or the entire task can be re-run.
The following migration tasks are included with the upgrade to 8.10:
Migrate Lead Photos
Migrate Contact Photos
Migrate Prospect Photos
Migrate Document Revision Files
Migrate Notes Attachments
Migrate Legacy Google Calendar Meetings
Migrate Legacy Google Calendar Users
The default transport uses your existing database (Doctrine) and works without any additional infrastructure. If you process high volumes of data, RabbitMQ (AMQP) and Redis are also supported.
Key configuration areas in .env.local:
| Setting | Purpose |
|---|---|
|
Primary transport (default: Doctrine) |
|
Where failed messages are sent |
|
Log verbosity (default: |
|
Optional custom log file |
|
Route specific tasks to specific transports |
Batch sizes are controlled in config_override.php:
max_migration_items_to_queue_per_run (default: 50)
max_migration_items_to_process_per_run (default: 20)
Documentation: Async Tasks · Developer Guide: Async Tasks · Manual Migrations
The media upload directory structure has been updated for consistency. If you have custom code or integrations that reference these paths directly, they will need to be updated.
| Before | After |
|---|---|
|
|
Top-level directory: |
Top-level directory: |
Private media endpoint: |
Private media endpoint: |
On upgrade, existing files are migrated to the new directories automatically.
Upon upgrading to 8.10, existing file attachments for Contacts, Leads, Prospects/Targets, Document Revisions, and Notes stored in the legacy file storage system can be migrated via the Manual Migration Tasks described above.
As a fallback, backwards compatibility support has been added for legacy files — existing file fields using the old storage system are auto-detected and continue to display correctly without any manual intervention.
A new TEMPORARY_FILE_BASE_DIR option has been added to .env to control where temporary files are stored during upload and processing. The default value is tmp.
A new click action system has been added for record thread items, firing on row click rather than requiring a dedicated button.
Base class: RecordThreadItemClickActionHandler — implement run(), shouldDisplay(), and checkRecordAccess()
Config: RecordThreadItemClickActionConfig — accepts key, asyncProcess?, params?, activeOnFields?, modes?, acl?, and default?
RecordThreadConfig now accepts clickActions?: RecordThreadItemClickActionConfig[]
New properties on ButtonInterface:
dynamicEndIcon — reactive end icon
endIconTitleKey, endIconKlass, endIcon — static end icon configuration
dynamicLabelKlass — dynamic label class
hideIfLoading — hides a widget row while the statistic is loading
dynamicLabelTooltip — enables a tooltip on a dynamic label in a widget row
emptyDynamicLabelKey — alternate label key displayed when the field has no value
hideIfEmpty — display logic shorthand
A new linkActions array in a field’s viewdef controls how clicking a field value navigates or triggers an action.
Base class: LinkActionHandler — implement isRouterLink() and getLink()
Manager: LinkActionManager — holds an actions map per mode
Built-in actions:
default — existing navigation behaviour
async-process — fires a backend process on click
record-link — navigates to a record using params.moduleField and params.recordField
emit-event (EmitEventAsyncAction) — reads data.event and emits on AppStateStore.eventEmitterMapper
record-thread-modal (RecordThreadModalAsyncAction) — opens a record-thread-modal popup from a backend process response
modal-create (ModalCreateLineAction, mode: list) — opens a RecordModalComponent to create a related record inline without leaving the list view
Three new action zones, each with its own manager and abstract handler:
| Zone | Purpose |
|---|---|
Header: |
Actions placed in the modal header, next to the title |
Footer: |
Actions placed in the modal footer, next to the buttons |
Record: |
Actions targeting the current record |
Four new operators are available:
| Operator | Behaviour |
|---|---|
is-true |
Compares against |
is-false |
Compares against |
previous-value-equal |
Compares a field against its previous value |
previous-value-not-equal |
Inverse of |
Documentation: Operators
A new console command is available to check the currently installed SuiteCRM version:
./bin/console suitecrm:version
SuiteCRM 7.15 has been merged into the 8.10 release. Key features it brings include:
PHP 8.4 support
Advanced Calendar Integration & Sync
Survey Styling Improvements
Updated Automatic Email Import
V8 API: OAuth Auth Code Grant
For the full list of changes from 7.15, see the 7.15 Release Notes.
SuiteCRM is built with and for its community — thank you to everyone who reported issues, submitted feedback, and contributed code to this release.
Special thanks to the following contributors for their contributions to this release:
Visit Releases for the appropriate upgrade package for your installation.
Found a Bug? Submit an Issue
Want to contribute? Open a Pull Request
Translations: Join us on Crowdin
To report a security issue, please follow our Security Policy.
For professional support and enterprise services, visit SuiteCRM Ltd Support Services.
Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.