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

# Calendar (iCal)

Subscribe to your on-call schedule from Google Calendar, Outlook, or Apple Calendar.

# Calendar export

Every on-call schedule has a private iCalendar feed. Subscribe to it from any calendar app to see your shifts (and overrides) in your normal calendar.

## Get your feed URL

**Dashboard → On-Call → [schedule] → Export → Copy iCal URL**

The URL looks like:

```
https://happyuptime.com/api/v1/oncall/schedules/sch_abc123/calendar.ics?token=cal_xxx
```

The `token` is scoped to read-only access for that one calendar — safe to share with calendar apps but not with humans.

## Google Calendar

**Open Other calendars**

In Google Calendar's left sidebar, click the `+` next to **Other calendars**.
  **From URL**

Pick **From URL** and paste your iCal URL.
  **Done**

Shifts appear within a few minutes. Google refreshes external calendars every 8–24 hours; for faster updates use the dashboard.

## Apple Calendar

`File → New Calendar Subscription → paste URL → Subscribe`. Set auto-refresh to **Every hour**.

## Outlook

`Add calendar → Subscribe from web → paste URL`.

## What's exported

| Field | Source |
| --- | --- |
| Event title | `[Layer] Person on call` |
| Start | Layer handoff time, in layer timezone |
| End | Next handoff |
| Description | Schedule name + override note (if any) |
| Recurrence | None — every shift is a discrete event for the next 90 days |

Overrides and fixed shifts override the rotation in the export, so what your calendar shows matches what would actually page.

iCal feeds are immutable from the calendar side — to edit a shift, use the dashboard. Calendar changes won't sync back.

## Revoking a token

If a feed leaks, revoke its token from **On-Call → Export → Manage tokens**. Existing subscriptions stop receiving updates immediately.