--- title: "Session Selection & Session Rules in Event Builder" slug: "session-selection-session-rules-in-event-builder" updated: 2026-08-11T22:05:25Z published: 2026-08-11T22:05:25Z canonical: "docs.blackthorn.io/session-selection-session-rules-in-event-builder" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.blackthorn.io/llms.txt > Use this file to discover all available pages before exploring further. # Session Selection & Session Rules in Event Builder Control exactly how attendees choose sessions — how many they must pick, which sessions clash, and which belong to the same track — and set it all up inside **Event Builder**. Session selection now works on two levels: simple **per-ticket totals** (pick 3 sessions), and **Session Rules** for finer logic like "one session per time slot" or "at least two from the Leadership track." ## The two levels of session control - **Ticket totals** — on each ticket (Event Item), set how many sessions an attendee picks overall: a minimum, a maximum, and whether at least one is required. You can also add instructional text above the session picker. - **Session Rules** — grouped constraints *within* a ticket. Each rule is a named group of sessions with its own min/max, typed as either a **Time Block** (sessions competing for the same time slot) or a **Content Group** (sessions grouped by topic/track), and optionally **mutually exclusive** (pick at most one). ## Before you start: turn on enforcement Session Rules are only *enforced* when **Enable Session Rules** is turned on in **Event Settings**. It's **off by default** — until you enable it, you can build rules but they won't constrain attendees at checkout. Set it on the Event Settings record for the event. ## Set per-ticket session limits On the ticket (Event Item) — in the Event Wizard ticket step, or on the Event Item record: - **Min Total Sessions** / **Max Total Sessions** — the number of sessions an attendee must and can pick across the whole ticket. - **Require At Least One Session** — force at least one selection. - **Session Selection Header** — instructional text shown above the picker at checkout (for example, "Please select 2 sessions"). ## Create Session Rules in Event Builder Event Builder has a dedicated **Session Rules** module: 1. Open **Event Builder** and go to the **Session Rules** area. 2. Pick the **Ticket** the rules apply to (rules are scoped to one ticket at a time). 3. Create a rule and set: - **Rule Type** — **Time Block** or **Content Group** (required; there's no default, so choose one). - **Min Sessions** / **Max Sessions** — how many sessions from this group an attendee must/can pick. - **Mutually Exclusive** — check this to allow at most one session from the group. (Use it *instead of* a min/max greater than one, not alongside it.) 4. Assign sessions to the rule — one at a time, or with the **Bulk Add Sessions** option. Each session carries a **Session Rule** so it inherits the group's constraints. A rules summary in the builder lets you sanity-check how a ticket's rules fit together before you publish. ## Auto-detect time blocks If your sessions naturally fall into competing time slots, you don't have to build every Time Block rule by hand. On the **Event** record, run the **Recalculate Time Blocks** action: it groups sessions whose start times fall close together into Time Block rules automatically. - It's **manual** — you run it when you want it; it doesn't fire on its own. - It's **non-destructive** — it won't overwrite Time Block rules you built manually; it fills in the gaps, and a session with no near-neighbors becomes its own block. - The grouping window is **15 minutes** and is fixed — sessions starting within 15 minutes of each other are treated as the same time block (and blocks chain, so 9:00, 9:10, and 9:20 land together). ## Session exclusions Beyond time blocks, you can stop an attendee from registering for two specific sessions that shouldn't go together (for example, the same content offered twice). On the **Add/Edit Session** panel: - **Excluded Sessions** — mark other sessions that can't be registered alongside this one by the same attendee. - **Exclude From Overlap** — exempt this session from time-overlap blocking (useful for something like an all-day exhibit hall that shouldn't clash with anything). Exclusions are **direct pairs and apply per attendee**: if A excludes B and B excludes C, that does *not* automatically exclude A and C, and two different attendees can each take opposite ends of an excluded pair. ## What attendees see With enforcement on, the session picker respects your limits: the header text guides the choice, the picker blocks selecting more than a group or ticket allows (or fewer than required), and time-block/exclusion conflicts prevent incompatible picks. If a group required selection is missing in a group checkout, the error names the specific attendee who still needs to choose. ## Permissions Session Rules ship with the packaged permission sets — no custom setup. Assign **Blackthorn Events Admin** or **Blackthorn Event Organizer** to the users who build events, and they'll have the Session Rules tab and full access to create and manage rules and exclusions. --- ## For Salesforce admins — technical reference **Objects & fields** | Object | Label | API Name | Type | Default | Notes | | --- | --- | --- | --- | --- | --- | | Session Rule *(new)* | Rule Type | `Rule_Type__c` | Picklist (restricted) | none — **required** | Values: **Time Block**, **Content Group**. | | Session Rule | Min Sessions | `Min_Sessions__c` | Number (18,0) | blank | Blank/0 = no minimum; must be ≤ Max. | | Session Rule | Max Sessions | `Max_Sessions__c` | Number (18,0) | blank | Blank/0 = no maximum; must be ≥ Min. | | Session Rule | Mutually Exclusive | `Mutually_Exclusive__c` | Checkbox | false | Effective max of 1; don't combine with Min/Max > 1. | | Session Rule | Description | `Description__c` | Long Text (1024) | blank | Admin documentation only; not attendee-facing. | | Session Rule | Event Item | `Event_Item__c` | Lookup → Event Item | **required** | Rules are scoped per ticket. | | Event Item | Min Total Sessions | `Min_Total_Sessions__c` | Number (18,0) | blank | Total picks required across the ticket. | | Event Item | Max Total Sessions | `Max_Total_Sessions__c` | Number (18,0) | blank | Total picks allowed across the ticket. | | Event Item | Session Selection Header | `Session_Selection_Header__c` | Text (255) | blank | Instructional text above the picker. | | Event Item | Require At Least One Session | `Require_At_Least_One_Session__c` | Checkbox | false | — | | Session | Session Rule | `Session_Rule__c` | Lookup → Session Rule | blank | Assigns the session to a rule. | | Session | Exclude From Overlap | `Exclude_From_Overlap__c` | Checkbox | false | Exempts the session from time-overlap blocking. | | Session Exclusion *(new junction)* | Session A / Session B | `Session_A__c` / `Session_B__c` | Lookups | — | Stores exclusion pairs; managed via the **Excluded Sessions** picker, not edited directly. | | Event Settings | Enable Session Rules | `Enable_Session_Rules__c` | Checkbox | **false** | **Master switch** — rules aren't enforced until this is on. | **Notes for admins** - The ticket session-limit fields (`Min_Total_Sessions__c`, `Max_Total_Sessions__c`, `Session_Selection_Header__c`, `Require_At_Least_One_Session__c`) are in the packaged Event Builder ticket field set and on the Event Item layout — no manual layout change needed. - **Enable Session Rules** (`Enable_Session_Rules__c`) is an Event Settings field, not a builder control. Default off; enforcement is inactive until you turn it on. - **Recalculate Time Blocks** is a screen action on the Event object (API name `Auto_Detect_Time_Blocks`), placed on the Event layout. Its 15-minute proximity window is fixed in code — there is no per-event setting to change it. - Exclusions persist to the `Session_Exclusion__c` junction object (there is no "Excluded Sessions" field); pairs are canonicalized and de-duplicated automatically. - Access is delivered through the **Blackthorn Events Admin** and **Blackthorn Event Organizer** permission sets, including visibility of the new **Session Rule** tab.