What Is Event Blocking Behavior?
When Horizon syncs a technician's Google Calendar or Microsoft 365 calendar, it needs to know whether each calendar event should block scheduling, block ticket assignment, or just display informatively. Event Blocking Behavior is the setting that controls this — it can be configured at the account level, the user level, or overridden on a per-event basis.
Where to find it: Account-level defaults: Admin Panel → Integrations → Calendars · Per-user overrides: Admin Panel → People → Users → [User] → Event Blocking tab · Per-event override: Horizon Calendar → click any synced event → Edit
The Four Behavior Modes
- Free: The event is visible on the calendar but is completely ignored by the scheduling engine. Floating todos can be placed into the same time slot. Ticket assignment is not affected. Use this for events that don't represent real work — a passive all-hands meeting, for example.
- Busy: The event blocks scheduling. Floating todos will not be placed during this window. However, the event does not block ticket assignment — the technician can still receive new tickets. Use this for confirmed working commitments like customer calls or on-site visits.
- Unavailable: The strongest mode. Blocks both scheduling (no floating todos placed) and ticket assignment (no new assignment to this technician while this window is active). Use this for out-of-office, vacation, or any time the technician is genuinely unreachable.
- Ignore: The event is excluded from the calendar entirely and treated as if it does not exist. Note: Ignore is only available as an account-level or user-level default, not as a per-event override. Setting an individual event to Ignore removes it from view with no way to recover it from the UI — this is why the per-event override only offers Free, Busy, and Unavailable.
How Horizon Decides Which Mode Applies (The Waterfall)
For every synced calendar event, Horizon resolves the effective behavior using a four-level waterfall. The first level that has an explicit setting wins:
- Per-event override — set by a dispatcher or admin directly on a specific event via the calendar slideover. Overrides everything else.
- User-level setting — configured on the technician's profile under the Event Blocking tab. Applies to all of that user's events of that show-as type.
- Account-level setting — configured in Admin Panel → Integrations → Calendars. The default for all users on the account.
- System default — Horizon's built-in fallback, documented in the table below. Applied when no account or user setting exists for that event type.
The resolved value is always shown in the event slideover under Event Blocking Behavior, so you can see exactly which mode is in effect.
System Defaults by Provider and Event Type
These are Horizon's out-of-the-box defaults — what applies when neither the account nor the user has configured a setting for a given event type. Admins can change these at the account or user level.
Google Workspace
| Calendar Status | Default Behavior | Effect |
| Busy | Busy | Blocks scheduling; technician can still receive tickets |
| Tentative | Free | Visible only — no impact on scheduling or assignment |
| Free | Free | Visible only — no impact on scheduling or assignment |
Microsoft 365
| Calendar Status | Default Behavior | Effect |
| Busy | Busy | Blocks scheduling; technician can still receive tickets |
| Out of Office (OOF) | Unavailable | Blocks scheduling and ticket assignment |
| Tentative | Free | Visible only — no impact on scheduling or assignment |
| Working Elsewhere | Free | Visible only — no impact on scheduling or assignment |
| Free | Free | Visible only — no impact on scheduling or assignment |
Effect on Floating Todos
Floating todos are unscheduled work items that Horizon places into open time slots automatically. The scheduling engine skips any time window covered by a Busy or Unavailable calendar event. Free events are transparent — the engine treats that time as open and will schedule todos into it. Ignored events do not appear at all. If you notice todos clustering around (but not inside) a calendar event, that event is most likely set to Busy or Unavailable.
Effect on Ticket Assignment
Ticket assignment checks whether a technician is currently blocked before assigning a ticket to them. A technician is considered blocked only when an active calendar window is set to Unavailable. Busy and Free events do not block assignment — the technician remains eligible to receive tickets. Only Unavailable removes them from consideration for the duration of that window.
By default, only Out of Office events (Microsoft 365) trigger Unavailable. A standard Busy event blocks scheduling but leaves the technician available for ticket assignment. If you need Busy events to also block assignment, change the account-level Busy default to Unavailable in Admin Panel → Integrations → Calendars.
Common Scenarios
- Techs with Busy calendar events are not receiving tickets: By default, Busy events only block scheduling — not assignment. If technicians are being excluded from assignment during Busy events, check whether the account or user-level Busy setting has been changed to Unavailable.
- Tech is on vacation but still showing as available: Check that the Out of Office or Busy event has synced. If it has but assignment isn't blocked, confirm the event is resolving to Unavailable in the event slideover.
- Floating todos are clustering around a calendar event: That event is resolving to Busy or Unavailable. Open the event slideover to see the resolved value and override it if needed.
- One tech wants tentative events to block scheduling, others don't: Set that tech's user-level Tentative behavior to Busy. Other technicians inherit the account default (Free).
- A specific event is mis-classified: Open the event on the calendar, click Edit, and set the per-event override. This wins over all other settings.
Related Articles