v20.0 Release Notes

  • CMS: Improved the Short Link Detail page to display a QR code preview and added options to download the QR code in PNG or SVG format.

  • CMS: Added caching for Content Channel Items to improve performance when retrieving content. This reduces repeated data requests by temporarily storing frequently accessed items, improving response times across Content Channel features.

  • Communication: Improved SMS opt-out tracking by identifying which Communication triggered a Recipient to unsubscribe, allowing for more accurate reporting and troubleshooting of SMS engagement.

  • Check-in: Improved Next-Gen Check-in to exclude schedules without a name from the schedule selection list, preventing empty checkbox options and reducing confusion during check-in.

  • Finance: The unused legacy TextToGiveSettings block has been removed. To learn more, please read the Tech Bulletin item on this topic.

  • CMS: Added an Obsidian version of the Content Channel Item View block. View and intent interactions are now recorded after the page renders in the browser so bots and JavaScript-disabled clients are no longer logged.

  • Lava: Fixed an issue where Lava statements nested inside entity command blocks within {% lava %} tags executed as raw strings instead of processing. Nested Lava logic inside a {% lava %} tag now evaluates correctly.

  • Connection: Added Connection Request Attribute filters to the Connections Hub Block.

  • Core: Updated the DetailBlock labels section to display the icon and title together when a PanelAction provides both, rather than dropping the icon.

  • Event: Added a Registration Template setting to require registrants to pay in full or set up a payment plan covering the remaining balance before completing registration.

  • Group: Improved performance of the Group Sync job when syncing to security roles. Previously the authorization cache was flushed on every group member update, now it happens a single time at the end of processing.

  • Workflow: Updated the v20 Form Builder Detail UI, converted Form Submission List and Form Analytics to Obsidian, and added Confirmation Email Both, Notification Email multi-address, and Connection Requests automations.

  • CRM: Added a Smarty Streets International location service for non-US address verification and optional geocoding. Requires a Smarty subscription for 'International Address Verification' or, if using geocoding, 'International Geocoding'.

  • Group: Added a PhotoId column to the Group entity.

  • CMS: Added a Status field to Persisted Datasets that records the result of the most recent build attempt. This Status is now displayed as a column in the Persisted Dataset List block, allowing administrators to quickly identify datasets that failed to build and may need attention.

  • Mobile: Updated the default layouts seeded for new mobile applications: a simplified MAUI "Homepage" layout (scrollable Main zone, redundant StackLayout removed) plus a new "Full" no-scroll layout.

  • Communication: Added a Create Connection Request SMS pipeline action and converted the SMS Pipeline Detail block to Obsidian.

  • Finance: Added per-account allocations (AccountAllocations) to PaymentInfo so financial gateway implementations can route transactions to the correct funds.

  • Connection: Added a "My Connections" view to the Connections Hub Block.

  • CRM: Fixed an exception that prevented person profile views from being logged when the viewer connected over IPv6.

  • Core: Added a Days field to the Schedule Builder duration so multi-day events like camps, retreats, and mission trips can be entered as days rather than total hours.

  • Core: Added a daily summary of Interaction counts per Interaction Component to improve reporting performance on high-volume Interaction data. Each day, the Rock Cleanup job populates the InteractionComponentDailyCount database table with the previous day's counts, which can then be used when building SQL-based reports. This feature is opt-in and is controlled per Interaction Channel using the new Enable Component Daily Counts setting. When a new Interaction Channel is created, that setting is initialized from the Default Component Daily Counts attribute on its Interaction Medium.