August 2026 - Version 5.59
(Release Date: August 11th, 2026)
Table of Contents
📋 At a glance
This month is about giving organizers more control and attendees a smoother path: session selection logic is easier to configure, group buyers can reserve block-ticket packages and fill in guest information later, and invitees can decline an invitation in one click right from their invitation email.
| Update | What it does | For whom | Setup |
|---|---|---|---|
| 🎟️ Session-selection setup in Event Builder | Configure session min/max and Session Rules in Event Builder | Organizers | 📦 Events 5.59 |
| 👥 Table & block ticketing | Sell a table or group package for one price; the Group Coordinator adds and manages each guest via AttendeeLink up to a deadline you set | Organizers | 📦 Events 5.59 |
| ✉️ One-click invitation decline | Invitees decline from an email with no login and see a confirmation page | Everyone | Mixed (some auto) |
| 📞 Phone-format validation | Require a valid, country-correct phone number at checkout; off by default | Organizers | 📦 Events 5.59 |
| 🐛 Stripe Checkout, cloning & UI fixes | Double-charge, webhook, localization, cloning, and Material-UI regressions resolved | Everyone | Mixed (some auto) |
Some changes ship in the Events 5.59 Salesforce package and need to be installed by an admin; others ship automatically in our August webapp release and are already live for everyone. Each item below is tagged so you can tell which is which.
⚠️ Action required
Installing packages manually? Install Payments 6.68 before Events 5.59.
Events 5.59 references the updated Payments dependency, so Payments needs to come first. If you upgrade through the Candy Shop, this is handled for you automatically.
Using Stripe Checkout? Confirm your Stripe webhook is in place. Registrations finalize even if a registrant closes their browser right after paying — a safety net that relies on a Stripe webhook sending checkout.session.completed to Blackthorn's event webapp, which then finalizes the registration in Salesforce. A bug that was rejecting these webhook deliveries with a 403 is fixed in this release. If you use Stripe Checkout, confirm the documented webhook destination is configured in your Stripe account so browser-close registrations finalize automatically. See Set Up and Configure Stripe Webhooks for the endpoint URL and steps.
Planning to use block ticketing? Check your Attendee automations for placeholder guests. When a block ticket is purchased, its empty guest seats are created as placeholder Attendee records with no Contact, Lead, or Account — and are excluded from attendee counts, check-in, and Campaign Member sync — until the Group Coordinator fills them. If you have flows, triggers, or process builders that run when an Attendee is created and assume a Contact exists, update them to skip placeholders (Attendee Placeholder = true / Is_Placeholder__c). Filling a seat sets the Contact and includes the guest everywhere as normal.
✨ What's new
Items tagged Salesforce upgrade required are part of the Events 5.59 package and need to be installed by an admin. Items without a tag are already live for everyone — they shipped automatically in our August webapp release.
🛒 Registration & checkout
Set up session selection in Event Builder (Salesforce upgrade required)
Configuring session selection logic for attendees is now built into the Event Builder. You can set session min/max limits and create Session Rules (Time Block or Content Group), optionally mark a rule mutually exclusive, and assign sessions to rules directly in Event Builder.
Clearer session instructions for group registrations (Salesforce upgrade required)
When a group checkout is missing a session selection, checkout now names the specific attendee(s) who still need to choose a session, instead of showing a generic error, so the person registering knows exactly what to fix.
Customize the duplicate-registration message
When a duplicate registration is blocked at checkout, you can now customize — and localize — the message attendees see, so it matches your event's tone and language instead of a generic block notice.
Require a valid phone number at checkout (Salesforce upgrade required)
You can now require attendees to enter a valid, country-correct phone number during checkout. It's off by default, so existing events are unchanged; check Enforce Phone Format on Event Settings when you need reliable phone data. Invalid numbers show an error and the attendee can't proceed.
Decline an invitation in one click
Invitees can now decline an event invitation directly from an email and land on a confirmation page. This keeps your attendee counts accurate with fewer clicks.
Select an Event Record Type in Event Builder (Salesforce upgrade required)
When creating or editing an event in Event Builder, you can now choose a Salesforce Record Type for the event from a dropdown — the same capability already available in the Event Wizard.
👥 Groups & block tickets
Table & block ticketing (Salesforce upgrade required)
Built for galas, sponsorships, and group events, you can now flag an Event Item as a block ticket and set its size. Buyers purchase the whole table or package at a single price and become its Group Coordinator, taking the first seat; the rest are placeholder guest seats. From their AttendeeLink, the Coordinator adds and edits each guest — including any Event Item or Session Form questions — replaces or clears a guest, and leaves seats blank to finish later, up to an edit deadline you set. Each filled guest can receive their own confirmation email and AttendeeLink. At checkout, each unit is labeled with a term you choose (for example "Table 1 of 3").
Setup note: block ticketing is configured on the Salesforce Event Item and Event Settings records — a Salesforce admin adds the block fields to those page layouts to turn it on (they aren't on the layout by default in this release, and block setup isn't in Event Builder yet). See the Table & Block Ticketing help article for step-by-step setup.
🐛 What's fixed
Items tagged Salesforce upgrade required are part of the Events 5.59 package and need to be installed by an admin. Items without a tag are already live for everyone — they shipped automatically in our August webapp release.
🛒 Registration & checkout
-
Stripe Checkout
- Registrants charged twice on Stripe Checkout: Previously, refreshing or re-submitting after paying through Stripe Checkout could create a second charge, and a bare error screen encouraged registrants to pay again. Now a refresh or re-POST reuses the existing session, and a clear completed/return page replaces the error.
- Intermittent "payment not confirmed" error on Stripe Checkout: Previously, registrants completing Stripe Checkout could see a "payment not confirmed" error even on the successful path. Now the happy path completes cleanly; if the message ever surfaces, the "do not pay again" warning stays visible.
- Premature "Payment received" checkmark: Previously, the payment overlay could show a green "Payment received" checkmark before registration actually finalized. Now the overlay shows an in-progress state until the confirmation page loads.
- Stripe webhooks rejected with 403: Previously, genuine Stripe
checkout.session.completedwebhooks could be rejected with a 403, leaving dependent registrations stuck in Draft. Now the webhook is accepted and those registrations finalize.
-
Account Postal Code showing on the registration form: Previously, the Account Postal Code field could appear on the attendee registration form even when it was not configured on the attendee form. Now it no longer appears unless configured.
-
Invite-only attendees seeing only one ticket: Previously, invite-only attendees without a pre-assigned ticket could see only the first available ticket at checkout. Now they see and can choose from all available tickets.
-
Person Account email left blank: Previously, creating an attendee by selecting a Person Account through the Account lookup could leave the Email blank. Now the Email auto-populates from the Person Account.
-
Register button missing for eligible contacts under Advanced Visibility (Salesforce upgrade required): Previously, at scale the Advanced Visibility sync could assign the visible/eligible flags to the wrong contacts, so a contact who met a rule's criteria might not see the Register button. Now each contact's visibility is mapped correctly (and the sync batch size is configurable for large orgs), so eligible contacts see Register.
-
Invalid promo/eligibility code failing silently: Previously, entering an invalid promo or eligibility code on the cart could fail silently. Now a "Code is invalid" validation message is shown.
-
Embedded Dynamic UI checkout clipped the navigation button: Previously, when a Dynamic UI event was embedded in an iframe, the Next/Continue/Pay button could sit below the visible area with no way to scroll to it, dead-ending attendees on the Guest Details, Sessions, and Payment steps (most often on mobile). Now the embedded checkout sizes correctly so attendees can reach the button and finish registering.
-
Registration rejected emails with long top-level domains: Previously, the registration form blocked valid email addresses whose top-level domain was longer than 12 characters (for example
name@company.international). Now longer TLDs are accepted. -
Session date filter wouldn't reopen after selecting a day: Previously, on multi-day events the Session date filter closed after you chose a day and couldn't be reopened, so you couldn't clear the filter or view other days. Now the date filter reopens and can be changed freely.
-
Tickets prematurely showing "Sold Out" with required sessions: Previously, adding the same required session twice could double-count inventory and mark a ticket "Sold Out" before it actually was. Now the cart prevents the duplicate add.
-
Session-level visibility not enforced via the Event URL: Previously, sessions restricted by Visibility Control could still be viewed and registered for by ineligible attendees when the event was opened through its Event URL. Now session visibility is enforced consistently.
-
Registration failing for some regional languages (Salesforce upgrade required): Previously, selecting Portuguese (Brazil) — and similarly Spanish (Mexico) — at registration could fail with a restricted-picklist error because the language label wasn't an accepted value. Now these selections are accepted and registration completes.
-
Registration Language blank for waitlisted attendees (Salesforce upgrade required): Previously, the Registration Language field was left blank when an attendee joined a waitlist (it populated on standard registration), causing inconsistent language automation. Now it is set on the waitlist path too.
🌐 Event pages & UI
-
"Add myself" button clipped on mobile: Previously, the "Add myself" button on the registration cart could be clipped at the right edge on mobile-width screens. Now it displays fully.
-
"undefined" on Table Manager cards: Previously, Table Manager attendee cards and tooltips could show "undefined" when an attendee had no last name. Now the name renders correctly.
-
Event Group listing on Gen2/Cache 2.0 orgs: Previously, on Gen2/Cache 2.0 orgs, only the first event added to an Event Group appeared on the listing. Now the second and later events appear as well.
-
Images ignoring center alignment in event descriptions: Previously, images in a rich-text event description could render left-aligned even when centered in Salesforce. Now images respect their alignment.
-
Tickets tab shown when all tickets are hidden: Previously, the Tickets tab could still appear on the event page even when every event item was hidden. Now the Tickets tab is hidden when there are no visible tickets.
✅ Check-in & AttendeeLink
-
Attended counts after concurrent check-ins: Previously, event attended counts could be understated (for example 0 or partial) after large or concurrent check-ins. Now counts are accurate.
-
Check-in app error when a check-in field duplicated a built-in field (Salesforce upgrade required): Previously, the mobile check-in app could fail with an error when a field added to your check-in field set was also one of the fields the app already loads. Now the overlap is handled and check-in works without the error.
-
Publishing an event no longer requires a walk-up item (Salesforce upgrade required): The Allow Walk Up Registrations Event Setting now defaults to off. Previously it defaulted to on, and while it's on you must designate an Event Item as the walk-up item before you can publish — so new events were effectively forced to set one up. With the new default, standard events publish without a walk-up item; if you deliberately turn walk-up registration on, you'll designate a walk-up item as before.
-
"Add to Calendar" using the event venue for sessions: Previously, adding a session to your calendar from AttendeeLink set the calendar location to the event venue instead of the session's own location, sending attendees to the wrong place. Now the session's location is used.
🔄 Salesforce & admin
-
Lite users reaching the App Admin tab (Salesforce upgrade required): Previously, Lite users could reach the App Admin tab and assign permission sets. Now only system admins see admin controls.
-
Cloning an event with Event Content (Salesforce upgrade required): Previously, cloning an event that had Event Content could fail with a duplicate-value error. Now the clone completes.
-
Deep Clone dropping custom lookup fields (Salesforce upgrade required): Previously, Event Deep Clone silently dropped custom lookup fields that pointed to standard Salesforce objects. Now those fields are copied.
-
Clone dropping midnight start/end times (Salesforce upgrade required): Previously, cloning an Event via the record-level Clone button could drop the Event Start/End Time when it was 12:00 AM. Now the time is preserved.
-
Email templates with duplicate merge tags (Salesforce upgrade required): Previously, email templates using object-qualified or duplicate merge tags (for example
{!Attendee__c.Id}) could fail delivery with a duplicate-field query error. Now they send correctly. -
UK DocumentLink date format: Previously, UK DocumentLink recipients could see US-style dates. Now recipients see dd/mm/yyyy when the template language is English. (Released off-cycle ahead of this version; also appears in the Payments release notes.)
-
Person Account State/Country codes cleared on registration (Salesforce upgrade required): Previously, registering from the public event page — when the form collected no address fields and no Attendee existed yet — could silently wipe PersonMailingStateCode/CountryCode on the Person Account. Now those values are preserved.
-
Campaign Member → Attendee sync failing for users without an Events permission set (Salesforce upgrade required): Previously, adding Campaign Members could silently create only the first Attendee (or none) when the acting user lacked field access. Now the sync completes for all members regardless of the triggering user's Events permissions.
-
Bulk Attendee import syncing only ~200 Campaign Members (Salesforce upgrade required): Previously, importing several hundred Attendees onto a campaign-linked event created Campaign Members for only about the first 200, with no error shown. Now all Attendees sync, with the rows beyond the first batch processed in additional asynchronous jobs.
-
Session waitlist over-promotion (Salesforce upgrade required): Previously, cancelling a non-seat-holding session registration (for example a Waitlisted–Pending attendee) could still promote the next waitlisted attendee, over-filling the session and driving remaining capacity negative. Now promotion fires only when a real seat is freed.
-
Clearer SSO login help text: Updated the help text on the BT Events Listing component to clarify that enforcing logins for unauthenticated users works only with EC-supported SSO providers.
Known Issue reference numbers for this release are being finalized with Support and will be added on publish.
🛠️ Technical reference
This section is intended for Salesforce admins. Field API names, permission set details, and configuration notes are grouped by the feature they relate to.
Phone-format validation — field
- Event Settings · Enforce Phone Format —
Enforce_Phone_Format__c— Checkbox, default false. When checked, attendees must enter a correctly formatted phone number for their selected country; an invalid number blocks checkout. Leave unchecked to allow any numeric input (existing behavior). Field-level security granted across 5 Blackthorn Events permission sets.
One-click invitation decline — field
- Attendee · Decline Link —
Decline_Link__c— Text (Formula). Generates the no-login decline URL sent in invitation emails. Field-level security across 6 Blackthorn Events permission sets.
Table & block ticketing — objects & fields
- Event Item · Block Ticket —
Is_Block_Ticket__c— Checkbox, default false. Flags this Event Item as a block ticket, enabling group purchase and post-registration guest-slot management via AttendeeLink. Admin read/write; app read. - Event Item · Block Seats —
Block_Seats__c— Number, default blank. Number of seats in the block/table package. Required when Block Ticket is enabled; the app enforces a 2–150 range (not a field-level limit). Seat 1 is the Group Coordinator; seats 2–N are placeholder guest slots. Admin read/write; app read. - Event Item · Block Unit Label —
Block_Unit_Label__c— Text (40), no field default (the app shows "Group" when left blank). The term used at checkout and in AttendeeLink to label each purchased unit (for example "Table" or "Foursome"); shown as "Table 1 of 3". Admin read/write; app read. - Attendee · Placeholder —
Is_Placeholder__c— Checkbox, default false. System-managed. True while a guest slot is unfilled; set to false when the Group Coordinator fills it via AttendeeLink. Placeholder attendees create no Contact, Lead, or Account and are excluded from attendee counts, check-in, and Campaign Member sync until filled. System write; Admin/app read. - Session Attendee · Placeholder —
Is_Placeholder__c— Checkbox, default false. System-managed. True while this session registration belongs to an unfilled placeholder slot; false when a real guest occupies it. System write; Admin/app read. - Event Settings · Send Block Guest Confirmation Emails —
Send_Block_Guest_Confirmation_Emails__c— Checkbox, default true. When enabled, a guest receives their own confirmation email and AttendeeLink as soon as their slot is filled with a name and valid email. Turn off to keep the Group Coordinator as the sole point of contact. Field-level security across the Blackthorn Events permission sets. - Table · Executive Assistant Managed —
Executive_Assistant_Managed__c— Checkbox, default false. System-managed. True when the Group Coordinator opts out of attending ("Attending?" off), releasing their seat so all seats are available for guests. Field-level security across the Blackthorn Events permission sets.
Walk-up registration — field
- Event Settings · Allow Walk Up Registrations —
Allow_Walk_Up_Registrations__c— Checkbox, default false (opt-in). Accept walk-up registrations through the mobile check-in app. Uncheck to allow only pre-registered attendees to check in.
Advanced Visibility sync — field
- Blackthorn Base Settings · Filter Records Sync Batch Size —
Filter_Records_Sync_Batch_Size__c— Number (4,0), default 100 (range 1–2000). Records processed per chunk by the Advanced Visibility full-sync batch.
⬆️ How to upgrade
Go to the Blackthorn Candy Shop to upgrade Events to 5.59. Upgrade Payments to 6.68 first (see Action required above).
For step-by-step instructions, click here.