Changed: Customers see every ticket sent from their account email. Tickets that arrive from email, Core Forms, Contact Form 7, WPForms, Gravity Forms, Fluent Forms or a connected site now belong to the WordPress account with that exact email address as soon as they arrive, so they appear in that customer's portal and reply emails link to it. Older unowned tickets are linked the next time the customer opens the portal. Tickets that already have an owner never move. Because the sender of an email or a signed-out form is not verified, the portal labels these tickets "Sent by email", "Sent from a website form" or "Sent from <site>", so one sent by someone else using the address is easy to spot.
Read full notes4 changes
ChangedCustomers see every ticket sent from their account email. Tickets that arrive from email, Core Forms, Contact Form 7, WPForms, Gravity Forms, Fluent Forms or a connected site now belong to the WordPress account with that exact email address as soon as they arrive, so they appear in that customer's portal and reply emails link to it. Older unowned tickets are linked the next time the customer opens the portal. Tickets that already have an owner never move. Because the sender of an email or a signed-out form is not verified, the portal labels these tickets "Sent by email", "Sent from a website form" or "Sent from <site>", so one sent by someone else using the address is easy to spot.
ChangedSigned-out portal: visitors who are not signed in see only the sign-in prompt. Filters, search, Refresh and New ticket no longer show until they can work, and controls stay hidden rather than greyed out while the page checks who is visiting.
ChangedQuieter portal: the uppercase tagline, the sidebar's filler note and the generated letter tile in place of a logo are gone; without a logo the brand name stands alone. Labels such as "Ticket #12" use sentence case. An empty inbox no longer repeats a second "Start a conversation" button next to New ticket.
Fixed Theme button styles could repaint portal and admin buttons. On gauravtiwari.org the theme's submit-button rule turned Search into a full-width red bar with dark text. Core Support buttons now outrank theme submit-button rules (including ones that force full width) and reset the properties themes usually set, and Refresh is a compact icon button beside Search.
Added: Native mail providers: Settings → Notifications → Mail delivery can send through the Emailit, Resend, Brevo or SendGrid API instead of WordPress mail. The API key is saved encrypted, or set CORE_SUPPORT_MAIL_API_KEY in wp-config.php. Rate limits and provider outages go back in the queue for up to five attempts; any other refusal, such as an unverified sender, fails visibly. Diagnostics shows the provider's latest error and warns when a mailbox's header reply tracking cannot work with the chosen provider (only SendGrid keeps Core Support's Message-ID).
Read full notes3 changes
AddedNative mail providers: Settings → Notifications → Mail delivery can send through the Emailit, Resend, Brevo or SendGrid API instead of WordPress mail. The API key is saved encrypted, or set CORE_SUPPORT_MAIL_API_KEY in wp-config.php. Rate limits and provider outages go back in the queue for up to five attempts; any other refusal, such as an unverified sender, fails visibly. Diagnostics shows the provider's latest error and warns when a mailbox's header reply tracking cannot work with the chosen provider (only SendGrid keeps Core Support's Message-ID).
AddedHTML email: reply notifications and portal sign-in codes now go out as HTML with a plain-text part, in one quiet column: your brand name or logo, the reply as body text, one link to the conversation. The plain-text part is unchanged and is still what replies are read from, so "Please reply above this line." keeps trimming quoted history.
Changed Reply notifications name the agent who replied ("Gaurav replied") and put the ticket number and subject in the footer.
Added: Connections screen (Core Support → Connections): add and edit mailboxes (relay, automation token, IMAP) and attachment storage from wp-admin instead of wp-config.php. Passwords, secrets, tokens and storage keys are encrypted in the database; wp-config.php entries still win and show read-only. Storage is saved only after a test file round-trips.
Read full notes30 changes
AddedConnections screen (Core Support → Connections): add and edit mailboxes (relay, automation token, IMAP) and attachment storage from wp-admin instead of wp-config.php. Passwords, secrets, tokens and storage keys are encrypted in the database; wp-config.php entries still win and show read-only. Storage is saved only after a test file round-trips.
AddedReply tracking without plus addressing: a mailbox can use message headers instead of support+token@. Notifications carry the token in their Message-ID and replies are matched through In-Reply-To/References, with the same sender check.
AddedCustomer portal for connected sites (assets/portal.js): customers sign in on another website with an emailed 6-digit code and see, open, answer, resolve and reopen the tickets they opened there. Reply emails for those tickets use the site's name and link to its portal page.
AddedTeam alerts (Settings → Team alerts): Pushover, Discord, Slack and a signed JSON webhook for new tickets and, optionally, customer replies. Message text is left out unless previews are turned on.
AddedEmail from new senders can open tickets automatically instead of waiting for review.
Added Pasted screenshots in email are kept and shown inline in conversations for agents and customers; other files stay downloads. Tracking pixels under 1 KB are skipped.
Added Unencrypted object storage: with encryption turned off, R2, S3 and Bunny files keep their real names and content types, so they open from the provider's dashboard.
Added Agent alert links open the ticket directly (admin.php?page=core-support&ticket=<id>).
AddedPlugin integrations (Core Support → Integrations):
Added Customer details beside each ticket from WooCommerce, FluentCart (including Pro licenses), Easy Digital Downloads (including Software Licensing) and FluentCRM.
Added Tickets from Contact Form 7, WPForms, Gravity Forms and Fluent Forms, chosen per form with optional review, and a "Create Core Support ticket" action for Core Forms.
Added A Support tab in WooCommerce My Account and the FluentCart customer dashboard, with "Get help with this order" on WooCommerce orders.
Added Optional FluentCRM sync that adds ticket customers as transactional contacts with a tag.
AddedAdmin redesign: Settings, Connections, Integrations, Connected sites, License and Diagnostics now use Tabler cards, switches, choice cards, copy fields, badges and empty states, with the brand's colors and dark mode. The icon set grew to 77 Tabler icons (tools/build/icons.py copies them from the icon library).
Fixed The admin menu icon was a 1254px, 923 KB image loaded on every admin page; the plugin now ships 40px and 96px versions, and the package is about 0.9 MB smaller.
Fixed Diagnostics used a thick left border on a rounded card.
Fixed "Download original email" in the ticket view showed "The link you followed has expired": the URL was HTML-escaped twice.
Fixed The License menu item pointed to /wp-admin/core-support-license because its submenu was registered before the Core Support menu. Submenus now also appear in a stable order, with License last.
Fixed Message text is stored as written. Earlier versions removed <tags>, turned < into <, dropped %20-style sequences and collapsed indentation in tickets, replies, email and form submissions.
Fixed The IMAP poller could stop importing all mail when a listed message was deleted before its turn, or when one message kept failing. Missing messages are now skipped, and a message is retried at most five times.
Fixed On multisite, a super admin could save a non-existent user as the default assignee or assign tickets to them. Agent checks now require a real member of the site.
Fixed Email-only customers were told to continue in a portal that cannot show their ticket; their emails now ask them to reply instead.
Fixed Website-form messages close to the length limit were rejected with a confusing error; the error now says how long the message may be.
Fixed Unknown mailbox webhook routes return 404 instead of 503, so relays and automation tools stop retrying them. Ignored wp-config.php mailbox entries are listed with the reason on the Connections screen.
Fixed Agent names containing &, < or > displayed as HTML entities.
Fixed Sender names containing quotes gained stray backslashes in email.
Fixed Incoming mail and the branding media picker lost their assets when the menu title was translated.
Fixed The workspace showed raw JSON parse errors when the server answered with an HTML error page.
Fixed The attachment count on received email included files that were never stored.
Fixed A database setup failure no longer prevents the Support Agent role and administrator capabilities from being installed.
Uninstall always removes leftover generated script files, whether or not data removal is enabled.
Read full notes3 changes
Uninstall always removes leftover generated script files, whether or not data removal is enabled.
Garbage collection reclaims unused generated CSS and font files again. It now uses modification time, which pages refresh when they link a file, instead of access time, which backups refresh. Files from before the update get 14 days from the first collection after it.
Unused CSS is rebuilt far less often. Renaming a stylesheet the engine leaves in place, such as a versioned CDN or excluded stylesheet, no longer rebuilds every page, and neither does a plugin update that leaves the CSS engine unchanged. Builds stay reusable for a week instead of a day. Each page is rebuilt once after the update.
New: AI Agents module. Claude, ChatGPT, Cursor and other agents can run the store through the free Site Agent plugin with /invoice, /quote and /store skills, served to Site Agent 0.4+ or downloaded as ZIPs with a terminal script. The ZIPs carry no passwords.
Read full notes9 changes
New AI Agents module. Claude, ChatGPT, Cursor and other agents can run the store through the free Site Agent plugin with /invoice, /quote and /store skills, served to Site Agent 0.4+ or downloaded as ZIPs with a terminal script. The ZIPs carry no passwords.
New agent commands for sales reports and orders, subscriptions (list, summary with monthly recurring revenue, cancel, reactivate), license keys (masked unless revealed, revoke, free a site, resend), back-in-stock alerts, product details and page access. Changes support a dry run, and stackless_agent() now works whichever modules are on.
New Webhooks and REST API module. Subscription and license events appear as WooCommerce webhook topics, and stackless/v1/subscriptions lists, reads, cancels and reactivates subscriptions with WooCommerce REST API keys.
New FluentCRM integration. Automation triggers for subscriptions, renewals, licenses, paid invoices and accepted quotes; tags and lists that follow subscription status, with a sync for existing customers; smart codes; and subscriptions and licenses on each contact's profile.
New six invoice layouts (Classic, Centered, Compact, Amount first, Letterhead, Ledger). Choose a default and override it per invoice; an issued invoice keeps its layout.
New a library of reusable invoice-only items. Tick "Save to item library" on a custom line, then add it from "Add a saved item"; manage them under Invoices → Saved items.
New invoices remember customer details. Account customers get the billing address, delivery address and VAT number saved to their profile; guests get a private profile by email that fills in the next invoice.
New invoice seller details take a legal company name, a VAT ID and a company registration number.
New with Multi-Currency Checkout, an invoice can let the customer pay in any enabled currency. Amounts convert from the issued invoice, so switching back restores them exactly.
New: Paddle gateway. Paddle Billing as a merchant of record, with sales tax and VAT handled by Paddle. Buyers pay in Paddle's overlay checkout on your own site, on the Checkout block, the classic checkout and pay links.
Read full notes4 changes
New Paddle gateway. Paddle Billing as a merchant of record, with sales tax and VAT handled by Paddle. Buyers pay in Paddle's overlay checkout on your own site, on the Checkout block, the classic checkout and pay links.
New subscriptions billed by Paddle. Paddle charges the renewals and each one becomes a paid WooCommerce renewal order. Signup fees, free trials and one-time items in the same cart work; one subscription schedule per checkout.
New refunds made in WooCommerce go to Paddle, including any tax Paddle added, and refunds approved in Paddle are recorded in WooCommerce once. Cancellations sync both ways, and customers update their card through Paddle from My Account.
New Paddle webhooks are signature-checked and replay-safe, and the gateway's currencies are available to Currency-Aware Payment Gateways.
New: theme options under Appearance > Customize > Stackless to set how many related posts and related products show (0 to 12; 0 hides the section).
Read full notes2 changes
New theme options under Appearance > Customize > Stackless to set how many related posts and related products show (0 to 12; 0 hides the section).
Changed 6 related posts and 6 related products show by default, in two rows of three. Related posts come from the same category first and are topped up with recent posts.
Fix: My Account pages show the navigation beside the account content again. WooCommerce's clearfix pseudo-elements had become grid items, which pushed the menu into the content column and squeezed the content underneath.
Read full notes1 change
Fix My Account pages show the navigation beside the account content again. WooCommerce's clearfix pseudo-elements had become grid items, which pushed the menu into the content column and squeezed the content underneath.
New: a compact currency switcher in the header and footer when Stackless for WooCommerce's Storefront Currency Selector is on and at least two currencies are enabled. The header shows the currency code (hidden on screens under 600px to keep the header buttons in one row); the footer shows the code and symbol. Hide either with the stackless_theme_currency_switcher filter.
Read full notes1 change
New a compact currency switcher in the header and footer when Stackless for WooCommerce's Storefront Currency Selector is on and at least two currencies are enabled. The header shows the currency code (hidden on screens under 600px to keep the header buttons in one row); the footer shows the code and symbol. Hide either with the stackless_theme_currency_switcher filter.
New: a Blog sidebar beside the post list on the blog, post archives and search results. Add widgets under Appearance > Widgets > Blog; until then it shows search, recent posts and categories. It stacks below the posts on screens under 960px. Turn it off with the stackless_theme_blog_sidebar filter.
Read full notes1 change
New a Blog sidebar beside the post list on the blog, post archives and search results. Add widgets under Appearance > Widgets > Blog; until then it shows search, recent posts and categories. It stacks below the posts on screens under 960px. Turn it off with the stackless_theme_blog_sidebar filter.