---
id: UJ-015
title: Schedule an event and turn it into task work
actors: [tenant staff user]
surface: app.zync.is/calendar
goal: Coordinate a meeting or booking and connect it to executable work.
trigger: User creates an event or receives a calendar/scheduling integration event.
preconditions:
  - Calendar module enabled; user has calendar permissions; integration is optional.
success_state: Event exists with attendees/source/status and, when selected, a linked task/project.
source_specs:
  - docs/specs/2026-05-30-calendar-module.md
  - docs/specs/2026-05-31-calendar-event-detail.md
  - docs/specs/2026-05-31-calendar-task-creation.md
  - docs/specs/2026-05-31-calendar-integration-settings-ui.md
---

## Happy path

1. User opens calendar and creates an event with title, time zone, attendees, recurrence, and optional customer/project → Zync validates local time and persists the event.
2. User connects Google/Outlook/Calendly when needed → OAuth/webhook setup completes and the integration status is visible.
3. User opens event detail → edits/cancels or chooses create task → Zync creates a linked task with relevant event context.
4. External change arrives → Zync applies source-of-truth rules and updates the local event; linked task remains governed by task permissions.

## Alternate and failure paths

- OAuth denied, token expired, webhook invalid, or sync conflict → show integration error and preserve the local event.
- External-only event → display read-only in Zync; user edits it at the source calendar.
- Invalid time zone/overlapping required slot → block save with correction.

## Permissions and boundaries

- Zync is source of truth for Zync-created task/project events; Google/Outlook is source of truth for external-only events.
- Calendar access does not grant task/customer access.

## Source specs

- `docs/specs/2026-05-30-calendar-module.md`
- `docs/specs/2026-05-31-calendar-event-detail.md`
- `docs/specs/2026-05-31-calendar-task-creation.md`
- `docs/specs/2026-05-31-calendar-integration-settings-ui.md`
