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

# Calendar & Meetings

> A record's own meetings, as a month calendar grid or an upcoming/past list.

## Overview

The **Calendar** and **Meetings** blocks show a single record's meetings on its
detail page, the calendar events where that contact is the organizer or a
participant. They are two views of the same data:

* **Calendar** (`custral.object.calendar`): a month grid. Days with meetings
  are marked with a dot; selecting a day lists that day's meetings below the
  grid. Month arrows page through time.
* **Meetings** (`custral.object.meetings`): a compact list, split into
  **Upcoming** and **Past**, with each meeting's time, attendee count, and a
  join shortcut.

Both bind to the open record automatically (no channel or query to configure)
and pull live from your connected calendars, so a contact's page shows the
meetings you have with them without any manual logging.

## Use cases

* A **Contact** or **Lead** record: see every meeting you've had and have coming
  up with that person, at a glance.
* A **Company / Account** record: the Meetings list as a full-width strip under
  the record's details (the default **Contact (CRM)** layout does this).
* A **Deal**: keep the negotiation's meeting history next to the pipeline stage.

Pick **Calendar** when the month-at-a-glance shape matters (spotting cadence,
gaps, or a specific date); pick **Meetings** for a dense agenda list.

## How matching works

A meeting is shown on a record when the record's **email** matches the meeting's
organizer or one of its participants (case-insensitive). The email is read from
the record's `email`-typed properties, so a record with no email address shows
nothing, by design.

The blocks only query the calendars **you** can access, the ones you've
connected plus any shared with you (a connected calendar is private to its owner
unless shared). So the meetings shown are always ones you're allowed to see, and
two teammates viewing the same record may see different meetings depending on
their own calendar access.

## Choosing which calendars

By default both blocks include **every calendar you can access**. To narrow it,
open the calendar picker in the block header (top-right) and select one or more
specific calendars. The choice is saved on the block. Clearing the selection
returns to "all my calendars". The picker only lists calendars you have access
to.

## Requirements

Both blocks need two things to show meetings:

1. **A calendar you can access**. One you've connected, or one shared with you
   (see [Calendar overview](/comms/calendar/overview)). With none, the block
   shows *"Connect a calendar…"*.
2. **An email on the record**, an `email`-typed property with a value. Without
   one, the block shows *"Add an email to this record…"*.

## Configuration parameters

The blocks render against the open record; the only saved setting is the
optional calendar selection.

| Param        | Type       | Description                                                                                                               |
| ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------- |
| `objectId`   | `object`   | The object the block is bound to. Set automatically when the block is placed on a record page.                            |
| `channelIds` | `string[]` | Optional. The calendar channels to include, set via the in-block picker. Empty/unset means every calendar you can access. |

## Adding the block

Open a record view in edit mode, choose **+ Add block**, and pick **Calendar**
or **Meetings**. The AI record-page designer can also place either block when
you ask for a "calendar", "meetings", or "schedule" section.

## Troubleshooting

| Symptom                                             | Likely cause                                                                                                                                                               | What to check                                                                                                                       |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| "Connect a calendar to see this contact's meetings" | You have no calendar you can access                                                                                                                                        | Connect one under **Calendar** ([overview](/comms/calendar/overview)), or ask a teammate to share theirs; reload the record         |
| "Add an email to this record to match its meetings" | The record has no `email`-typed property value                                                                                                                             | Add an Email property and fill it in; the match is by email address                                                                 |
| "No meetings with this contact yet"                 | The contact isn't an organizer/participant on any event in range, their meeting email differs from the record's, or the picker is narrowed to calendars without a match    | Confirm the meeting invite used the same address; check the calendar picker isn't filtered too tightly                              |
| A meeting is missing                                | It's on a calendar you can't access (or one excluded by the picker), falls outside the loaded window, or a very busy calendar returned its first results before that event | Widen the calendar picker; on the Calendar block, page to the meeting's month; a per-calendar result cap applies within each window |
| "Couldn't load this record's calendar"              | The calendar request failed                                                                                                                                                | Reload; confirm the connected calendar's authorization is still valid                                                               |
| Wrong or duplicate-looking meetings                 | The same event exists on two connected calendars (organizer + attendee)                                                                                                    | Duplicates are merged by event id; a genuinely different event with the same title/time is kept separately                          |

## See also

* [Calendar (feature overview)](/comms/calendar/overview)
* [Property list](/blocks/embedded/object/property-list)
* [Notes](/blocks/embedded/object/notes)


## Related topics

- [Calendar](/comms/calendar/overview.md)
- [Meeting Assistant](/comms/calendar/meeting-assistant.md)
- [Zoom](/integrations/zoom.md)
- [Recording](/comms/voice/recording.md)
