> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hiveku.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Team Calendars

> Round-robin, collective, and host-routed scheduling for groups

Team calendars route a single meeting type across multiple hosts. Bookers see one link; behind the scenes, Hiveku picks the right person to take the call based on the routing strategy you configure.

Configure team calendars in `/dashboard/calendar/` under the **Team** tab.

## When to use a team calendar

<CardGroup cols={2}>
  <Card title="Sales team" icon="users">
    Inbound demo requests rotate among 4 reps. No one rep is overloaded.
  </Card>

  <Card title="Recruiting" icon="user-plus">
    Phone screens go round-robin among hiring managers. The first one with a clean slot takes it.
  </Card>

  <Card title="Customer support" icon="life-ring">
    Office hours offered by any available CSM. Whoever has more open time gets the booking.
  </Card>

  <Card title="Group meetings" icon="users-line">
    Collective availability for a 3-person group call — only offer slots when all three are free.
  </Card>
</CardGroup>

## Routing strategies

<Tabs>
  <Tab title="Round-robin">
    Rotates among hosts in order. Each new booking goes to the next person in the list. After the last host, it wraps back to the first.

    Best for: equal workload distribution. Sales teams, recruiting, support shifts.

    Use the `last_assigned` tiebreaker if multiple hosts have the same first available slot — Hiveku will pick the one who hasn't taken a meeting recently.
  </Tab>

  <Tab title="Collective availability">
    A slot is only offered if **everyone** in the group is free. The booking is created on every host's calendar.

    Best for: group calls, panel interviews, kickoff meetings with multiple stakeholders.

    Caveat: collective availability scales poorly past \~6 people — finding mutual free time gets very thin.
  </Tab>

  <Tab title="Specific host">
    Always books with one designated host (e.g., "always Sarah"). Useful as a default fallback when round-robin can't find a slot, or for VIP routing.

    Best for: account managers with named accounts, founder-led calls, dedicated office hours.
  </Tab>

  <Tab title="Max availability">
    Picks whichever host has **more open slots** in the booking window. Spreads load by capacity rather than turn order.

    Best for: teams where some members have heavier external schedules and you want to favor the lighter calendars.
  </Tab>
</Tabs>

## Set up a team meeting type

<Steps>
  <Step title="Create a team">
    From the **Team** tab, click **New team** and add the team members. Each member must have their own connected calendar.
  </Step>

  <Step title="Pick a routing strategy">
    Round-robin, collective, specific host, or max availability.
  </Step>

  <Step title="Create or assign a meeting type">
    Either create a new team-level meeting type ("Demo (Sales Team)") or convert an existing one to team-routed.
  </Step>

  <Step title="Set member-level overrides">
    Optional: give some members different work hours, weights, or exclude them from specific weekdays.
  </Step>

  <Step title="Share the team booking link">
    Bookers see one URL. The picked host appears in the confirmation only after they pick a slot.
  </Step>
</Steps>

## Round-robin example

You have 4 sales reps: Alice, Bob, Carol, Dave. The next 4 demo bookings go A → B → C → D, then wrap back to A.

If Carol is on vacation when her turn comes up:

* **With "skip unavailable" enabled** (default): the booking goes to Dave, and Carol stays at the front of the queue for the next round
* **With "skip unavailable" disabled**: no slot is offered until Carol is back

Round-robin tracking is per meeting type — if Alice takes the demo round-robin, she still gets her fair share of the pricing-call round-robin.

## Weights

For uneven distribution, give each host a weight. A weight of 2 means they're picked twice as often as a weight-1 host.

| Host             | Weight | Frequency                   |
| ---------------- | ------ | --------------------------- |
| Alice (senior)   | 1      | Lighter rotation            |
| Bob (eager)      | 3      | 3x more bookings than Alice |
| Carol (balanced) | 2      | 2x Alice                    |

Weights apply to round-robin and max-availability strategies.

## Collective availability mechanics

For collective bookings, Hiveku computes the **intersection** of every host's availability — only slots free for everyone. The booking is then written to **every** host's connected calendar.

<Warning>
  If even one host has a private event during a candidate slot, the slot disappears for everyone. Make sure all team members have their calendars connected and accurate.
</Warning>

## Specific host with fallback

A useful pattern: route to one host normally, but fall back to a round-robin pool when they're booked out.

```
Primary: Sarah (account manager)
Fallback: Round-robin among Alice, Bob, Carol
Trigger: Sarah has no slots in next 7 days
```

This keeps continuity for named accounts while protecting against bottlenecks.

## API

```bash theme={null}
# Create a team
curl -X POST https://api.hiveku.com/api/calendar/teams \
  -H "Authorization: Bearer hk_live_xxx" \
  -d '{
    "name": "Sales Team",
    "members": ["user_alice", "user_bob", "user_carol", "user_dave"],
    "routing": "round_robin"
  }'

# List bookings filtered by team
curl "https://api.hiveku.com/api/calendar/bookings?team=team_01HQ" \
  -H "Authorization: Bearer hk_live_xxx"
```

## Troubleshooting

<AccordionGroup>
  <Accordion title="Round-robin keeps picking the same person">
    Make sure all team members' calendars are connected. If one host has many busy slots, the others end up taking more bookings — round-robin honors fair-but-available, not strict turn order.
  </Accordion>

  <Accordion title="Collective offers almost no slots">
    With more than \~6 people, mutual free time evaporates. Either reduce the group, or split the meeting into a sequential interview loop with single-host segments.
  </Accordion>

  <Accordion title="A team member left and is still in the rotation">
    Remove them from the team in the **Team** tab. Existing bookings stay; future bookings stop routing to them.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Meeting types" icon="clock" href="/calendar/meeting-types">
    Define meeting templates that team calendars can route.
  </Card>

  <Card title="Automations" icon="bolt" href="/calendar/automations">
    Send team-aware notifications and reminders.
  </Card>
</CardGroup>
