Configure slots — weekly vs. specific dates
Choose Weekly or Specific Dates, then turn those ranges into single slots or repeated bookable slots.
In this article, you'll configure when an event Activity runs, choose between Weekly and Specific Dates, and decide whether each date range should stay whole or be divided into bookable slots.
Prerequisites
- Campaign dates are already configured. If not, see Dates (Pattern B).
- If this Activity uses its own date override, you already know that allowed date range. If needed, see Touchpoint dates override.
- The
ActivityTouchpoint already exists.
Booking unlocks only after dates exist
Until you configure at least one date, the bookable event mode stays unavailable. Start with Dates, then return to tickets and booking behavior.
Pick the schedule model
In the current v2 UI, you actively work in one schedule mode at a time:
| Mode | Best for | Typical example |
|---|---|---|
Weekly | Recurring availability that repeats on the same weekdays | A workshop every Wednesday and Saturday |
Specific Dates | One-off or irregular sessions with fixed calendar dates | A VIP session on Friday night and another on Sunday afternoon |
Configuration
Open Slots -> Dates
Open the Activity, go to Slots, then start in the Dates section.
This is where you choose the schedule model and add the raw availability windows before any ticketing or check-in rules apply.
Choose Weekly or Specific Dates
Pick the mode that matches the event:
- Use
Weeklywhen the same weekdays and hours repeat. - Use
Specific Dateswhen each session has its own calendar date.
Add the availability windows
For Weekly, use + Add day of week, then add one or more time ranges for each weekday.
For Specific Dates, use + Add Date and enter the exact start and end datetime for each session.
Upload CSV for Specific Dates when faster
Specific Dates also supports CSV import. This is especially useful when you are loading a long workshop calendar or many irregular VIP sessions at once.
Imported rows are added to the dates already listed in the Activity.
Decide whether to use Divide into Slots
In Slot Configuration, turn on Divide into Slots when attendees should book one slot inside a larger time range.
- If
Divide into Slotsis off, each configured date range stays as one slot. - If it is on, OmniLab creates repeated slots using
Duration (minutes)andBuffer between slots.
For example, a kids activity open from 10:00 to 13:00 can stay as one large slot, while a 20-minute consultation event should usually be divided into smaller bookable slots.
Set Duration (minutes) and Buffer between slots
Use Duration (minutes) for the attendee-facing slot length.
Use Buffer between slots for the reset time between groups, for example to clean a booth, guide attendees out, or prepare the next VIP session.
Save and review the attendee result
Save the Activity, then preview how the slots appear in the booking flow.
Check that the dates fall inside the campaign window, that time ranges do not overlap, and that the slot structure matches how the event will run on site.
CSV format for Specific Dates
Use these exact CSV headers:
Activity Date | Start time | End time |
|---|---|---|
18/11/2026 | 10:00 | 12:00 |
Notes:
Activity Dateusesdd/mm/yyyyStart timeandEnd timeuse 24-hourHH:mm- all imported times are interpreted in the organisation timezone
Validation
If the schedule is incomplete or inconsistent, validation will surface it before publishing. The most common messages are:
| Validation key | Message | What to do |
|---|---|---|
activity.dates.none_configured | Activity '{{activity_name}}' has no dates configured | Add at least one weekly day or one specific date. |
activity.dates.specific_end_before_start | Activity '{{activity_name}}' date #{{date_index}} on {{date}} has end time ({{end_time}}) before start time ({{start_time}}) | Make sure the end time is after the start time. |
activity.dates.weekly_end_before_start | Activity '{{activity_name}}' on {{day_name}} time range #{{range_index}} has end time ({{end_time}}) before start time ({{start_time}}) | Fix the weekly time range so it runs forward in time. |
activity.dates.specific_overlap | Activity '{{activity_name}}' has overlapping specific dates: Date #{{date_index_1}} ({{date_1}} {{time_range_1}}) overlaps with Date #{{date_index_2}} ({{date_2}} {{time_range_2}}) | Separate the conflicting specific sessions. |
activity.dates.weekly_same_day_overlap | Activity '{{activity_name}}' has overlapping time ranges on {{day_name}}: Range #{{range_index_1}} ({{time_range_1}}) overlaps with Range #{{range_index_2}} ({{time_range_2}}) | Adjust the overlapping weekly ranges on that weekday. |
activity.dates.specific_outside_campaign_range | Activity '{{activity_name}}' slot #{{slot_index}} ({{slot_start}} - {{slot_end}}) falls outside the campaign dates ({{range_start}} - {{range_end}}) | Keep specific dates inside the campaign range. |
activity.dates.specific_outside_activity_range | Activity '{{activity_name}}' slot #{{slot_index}} ({{slot_start}} - {{slot_end}}) falls outside the activity dates ({{range_start}} - {{range_end}}) | Keep specific dates inside the Activity override range. |
activity.slots.duration_negative | Activity '{{activity_name}}' has a negative slot duration of {{duration}} minutes | Set slot duration to 0 or a positive number. |
activity.slots.buffer_time_negative | Activity '{{activity_name}}' has a negative buffer time of {{buffer_time}} minutes | Set the buffer to 0 or a positive number. |
activity.slots.division_without_dates | Activity "{{activity_name}}" has slot division configured but no dates specified | Add dates first, then divide them into slots. |
See Validation & publishing for the global publish flow.
Related
Dates (Pattern B)
Set the campaign date window that every Activity schedule must respect.
Touchpoint dates override
Use a narrower Activity window when one event should not follow the whole campaign range.
Configure tickets (Booking + Check-in events)
Continue here once the schedule is ready for bookable slots.
Configure check-in (Self vs. Scan)
Add the day-of check-in rules after the slot structure is in place.