What’s New in LiveWhale 2.23.0

This minor release includes new 3.0-looking analytics tracking, a new way of loading Linked Calendar data, plus improved notices and bug fixes.

New feature: LiveWhale Analytics, in preparation for LiveWhale 3.0

Beginning with this release, LiveWhale will automatically collect anonymized, pre-aggregated usage totals—such as daily URL hits, device type, and general referrer category—to populate the upcoming LiveWhale 3.0 Reporting tool, helping content managers understand overall traffic trends without tracking individual visitors.

The system is privacy-first by design: it stores only aggregated counts, uses no cookies or persistent identifiers, and does not transmit data to third-party services. We’re adding this tracking now so that when you upgrade to 3.0, some historical data will be available to you. Sites may disable analytics collection at any time via configuration if preferred. [Docs: LiveWhale Analytics]

New feature: Use a CSV or JSON as a source for Linked Calendar events syncing

You might have events in a CSV or JSON format that you want to sync into LiveWhale as a Linked Calendar. While you could always write a custom translate-to-ICAL script, LiveWhale 2.23+ now has a built-in function for this called “calendar_feeds” in the config. You can configure it to point to a local or remote CSV or JSON url and, provided it’s formatted with the proper column or attribute names, a Linked Calendar can be directly added to sync those events.

You can also use /key/value filters in your linked calendar URL to reference specific columns of your CSV, in case you have one CSV you want to split across multiple linked calendars in different groups. [Docs: Using a CSV or JSON file as a Linked Calendar source]


Accessibility improvements

Behavior adjustments

  • Shared events that have a default image applied from their originating group will now travel with those default images intact.
  • Clarified confirmation messages when resetting a Linked Calendar or deleting a single Linked Calendar event.

Resetting a Linked Calendar notice Delete Linked Calendar event notice

  • Added a failure notice for logged-in users when a file widget’s “extract” setting failed due to the underlying file/url failing to parse.
  • Added target=”_blank” to the core lw_cal_event_related_content.html component for related content links.
  • LiveWhale CMS: Added a warning to prevent saving a Navigation when you have unfinished new links or separator text.

Search and QuickAccess

  • Updated the search weighting of quoted phrases so exact matches appear higher in the results, ahead of individual word matches (when sorting by relevancy).
  • LiveWhale CMS: Removed partial inside-word matching from QuickAccess plugin (“art” will still return “College of Arts & Sciences” but will no longer return “department”).

WYSIWYG editing

  • You can now skip the content_basic.css that loads with each WYSIWYG editor by enabling the new WYSIWYG_SKIP_BASIC_CSS global config option. This is useful if you wish to more fully style the WYSIWYG editor without needing as many overrides.

Bugs

  • Fixed an issue where a multi-day event spanning multiple years could sometimes be excluded from upcoming events listings after re-saving.
  • Fixed an issue affecting RSVP Waitlists where when the next registration in the waitlist had more than 1 attendee, it could “hold up” the waitlist and allow new registrants to take empty spots before the waitlist could be used. Now, all new RSVPs will go onto the waitlist as long as any waitlist spots are in use. [Forum discussion about waitlists]
  • Fixed a bug that caused category and tag filters to be added multiple times when they contained an ampersand.
  • Fixed content type filtering on the backend search page.
  • Fixed the show all items in event type links that appear on the search page when searching all content types.
  • Fixed an issue where using date_format on an XPHP or widget field variable could be mis-formatted when the date includes a year.
  • Fixed an issue where login links using &referer=1 could sometimes fail if the HTTP referer url isn’t found. Now, &referer=1 login links will fall back to redirecting to the homepage / on a successful login.
  • Fixed an issue affecting CSV image imports where servers would reject requests lacking a user agent. (A user agent is now included when requesting CSV image urls for download.)
  • LiveWhale CMS Only
    • Fixed issue affecting QuickAccess results not sorting by category when categories are used.
    • Fixed an issue where users without the pages_manage permission (“Add, edit, and delete navigations, create and delete pages”) were able to Duplicate pages from the Your Pages manager.
    • Added a failsafe check for certain cases where the Navigation editor would save a fully-empty list of links, preventing this edge-case behavior from emptying out navigations unintentionally.
    • Fixed an issue where noindex_ttl for events wasn’t adding metatags to the /live/events version of an events URL.

Developer options

  • Added “related_content” as an optional response field to the JSON API v2 endpoint. [Docs: JSON API]
  • You can now use XPHP variables inside of format_widget wrapper formats.
  • The lw_cal_tags.html component now supports an input value=”Tag Name” that’s distinct from the visible label. The label text is still used for backwards compatibility when no input value is found for a selected item.
  • Privacy settings can now be accepted via the public submission form using the news_visibility or event_visibility field. [Docs: Public Submissions]

Behind-the-scenes

  • Relaxed a security rule introduced in 2.20.0 that blocked all REST requests with very long depths (50+ slashes) to allow long requests from LiveWhale Calendar widgets, where many embedded widget arguments could result in long REST requests.
  • Optimized file and image requests to leverage Apache and free up PHP resources faster.
  • Updated PHPMailer from version 6.6.4 to 7.0.2 to prepare for Azure OAUTH SMTP support.
  • Updated SAML Toolkit to v4.3.1 and xmlseclibs to 3.1.4 for PHP8 compatibility.

Release date: March 08, 2026

Other Recent Releases

View All