Calendar Sync - Understanding Event Blocking Behavior

Calendar Sync - Understanding Event Blocking Behavior

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:

  1. Per-event override — set by a dispatcher or admin directly on a specific event via the calendar slideover. Overrides everything else.
  2. 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.
  3. Account-level setting — configured in Admin Panel → Integrations → Calendars. The default for all users on the account.
  4. 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 StatusDefault BehaviorEffect
BusyBusyBlocks scheduling; technician can still receive tickets
TentativeFreeVisible only — no impact on scheduling or assignment
FreeFreeVisible only — no impact on scheduling or assignment

Microsoft 365

Calendar StatusDefault BehaviorEffect
BusyBusyBlocks scheduling; technician can still receive tickets
Out of Office (OOF)UnavailableBlocks scheduling and ticket assignment
TentativeFreeVisible only — no impact on scheduling or assignment
Working ElsewhereFreeVisible only — no impact on scheduling or assignment
FreeFreeVisible 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

    • Calendar Privacy — How to Hide Your External Calendar Event Details

      Overview This article explains how to enable Calendar Privacy so that other Horizon users see "[PRIVATE]" instead of your external calendar event details. Both users and admins can control this setting. What Calendar Privacy Does When Calendar ...
    • Connecting Google Workspace Calendar to Horizon

      Overview This article walks you through creating a Google Cloud service account with domain-wide delegation and entering its credentials in Horizon so that Horizon can read your technicians' Google Calendar events for scheduling purposes. This ...
    • Connecting Microsoft 365 Exchange to Horizon

      Overview This article walks you through registering a Microsoft 365 app in Azure and entering its credentials in Horizon so that Horizon can read your technicians' Exchange calendar events for scheduling purposes. Prerequisites Global Administrator ...
    • How to Set Up SMTP Relay

      Overview Configure an SMTP Relay so that Horizon sends emails directly through your own mail server, improving deliverability and ensuring emails arrive as your address — not ours. This is especially important for calendar invites and other ...
    • Mail Sending Settings — Delivery Modes & Helpdesk Address

      What Is the Sending Screen? The Sending screen controls how Horizon delivers outbound emails — which address emails appear to come from, and whether they're sent through Horizon's mail infrastructure or your own mail server. You'll find it at Admin ...