> ## 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.

# Calendar Automations

> Reminders, follow-ups, and notifications for every booking

Calendar automations fire on lifecycle events — when a booking is created, before it starts, when it ends, when it's marked complete or no-show. They cover reminders, thank-you emails, Slack notifications, NPS requests, and CRM updates.

Configure automations in `/dashboard/calendar/` under the **Automations** tab. Each automation can apply to all meeting types or a specific subset.

## Pre-meeting automations

<CardGroup cols={2}>
  <Card title="Confirmation email" icon="envelope-open">
    Sent immediately after a booking. Includes meeting details, the calendar invite, and a link to reschedule or cancel.
  </Card>

  <Card title="Calendar invite (.ics)" icon="calendar-plus">
    Attached to the confirmation. The booker can add to Google, Apple, or Outlook calendar with one click.
  </Card>

  <Card title="Reminder email" icon="bell">
    Configurable offsets — 1 day before, 1 hour before, custom. Reduces no-shows by 30%+ in our analytics.
  </Card>

  <Card title="SMS reminder" icon="message">
    Optional SMS reminder if the booker provided a phone number. Powered by [Communications](/communications/sms).
  </Card>

  <Card title="Slack notification" icon="slack">
    Internal ping to the host or a team channel: "New booking — Acme demo at 3 PM".
  </Card>

  <Card title="CRM update" icon="address-book">
    Create or match a contact, log the booking as an activity, optionally assign to a deal stage.
  </Card>
</CardGroup>

## Post-meeting automations

<CardGroup cols={2}>
  <Card title="Thank-you email" icon="hand-holding-heart">
    Short branded email immediately after the meeting ends. Templates available; custom HTML supported.
  </Card>

  <Card title="NPS request" icon="star">
    "Rate this call 1-10." Sent 1-3 hours after the meeting. Results stored on the booking record and surface in Analytics.
  </Card>

  <Card title="Transcript share" icon="file-lines">
    If you record meetings (Zoom, Otter, Fireflies, etc.), the transcript link is added to the booking and optionally emailed to the booker.
  </Card>

  <Card title="Follow-up sequence" icon="bolt">
    Multi-step nurture enrolling the contact. Often the first touch is a [Sales AI Co-pilot](/sales/overview) draft staged for your approval.
  </Card>

  <Card title="No-show outreach" icon="user-slash">
    "Sorry we missed you" + a link to rebook. Recovers \~15% of no-shows in our analytics.
  </Card>

  <Card title="Deal-stage move" icon="forward">
    Auto-progress the deal — for example, mark "Demo Held" once a demo is marked complete.
  </Card>
</CardGroup>

## Build a custom automation

<Steps>
  <Step title="Pick a trigger">
    Choose from `booking_created`, `before_meeting`, `meeting_started`, `meeting_completed`, `marked_no_show`, or `booking_canceled`.
  </Step>

  <Step title="Set timing">
    For `before_meeting` and similar lifecycle triggers, set the offset — e.g., 60 minutes before, 4 hours before.
  </Step>

  <Step title="Add conditions">
    Restrict to certain meeting types, certain teams, or contacts with specific properties (e.g., "is in deal stage Demo").
  </Step>

  <Step title="Pick actions">
    Send email (template or inline), send SMS, post to Slack, update CRM, fire a webhook, enroll in a sequence.
  </Step>

  <Step title="Test and enable">
    Run a dry-run on a recent booking to preview the email, then toggle the automation live.
  </Step>
</Steps>

## Templates

Automation emails use the same template system as [Hiveku Email](/email/templates). Variables available in calendar automations:

| Variable                      | Description                         |
| ----------------------------- | ----------------------------------- |
| `{{booker.name}}`             | Booker's name                       |
| `{{booker.email}}`            | Booker's email                      |
| `{{booker.phone}}`            | Booker's phone (if collected)       |
| `{{host.name}}`               | Host's name                         |
| `{{host.email}}`              | Host's email                        |
| `{{meeting.title}}`           | Meeting type title                  |
| `{{meeting.start_time}}`      | Formatted start time in booker's TZ |
| `{{meeting.location}}`        | Location text or link               |
| `{{meeting.join_link}}`       | Zoom/Meet/Teams URL                 |
| `{{meeting.reschedule_link}}` | Self-serve reschedule URL           |
| `{{meeting.cancel_link}}`     | Self-serve cancel URL               |
| `{{intake.<question_key>}}`   | Any custom intake answer            |

## Slack integration

The Slack action posts to a channel or a user DM.

```
{ "type": "slack",
  "channel": "#sales-bookings",
  "message": "New {{meeting.title}} booked by {{booker.name}} ({{booker.email}}) at {{meeting.start_time}}." }
```

Slack workspace must be connected via Settings > Integrations.

<Tip>
  For sales teams, post to `#sales-bookings` so reps can react with an emoji to claim ownership of follow-up. Pair with the AI Co-pilot's pre-meeting brief for instant context.
</Tip>

## Webhooks

For anything not covered by built-in actions, fire a webhook to your own endpoint.

```http theme={null}
POST https://your-app.com/hooks/booking
Content-Type: application/json
X-Hiveku-Signature: sha256=...

{
  "event": "booking_created",
  "booking": {
    "id": "bk_01HQRS",
    "meeting_type": "30-min-demo",
    "host": { "id": "user_01", "name": "Alice" },
    "booker": { "name": "Bob", "email": "bob@example.com" },
    "start_time": "2026-04-26T15:00:00Z",
    "duration_minutes": 30
  }
}
```

Verify the `X-Hiveku-Signature` HMAC against your webhook secret. See [Email Webhooks](/how-tos/email-webhooks) for the same signing pattern.

## Common automation recipes

<Tabs>
  <Tab title="Sales demo flow">
    1. `booking_created` → Slack to `#sales-bookings`, CRM contact created/matched, deal moved to "Demo Booked"
    2. `before_meeting (1 hour)` → email reminder + AI Co-pilot prep brief
    3. `meeting_completed` → thank-you email, deal moved to "Demo Held"
    4. `meeting_completed (24 hours later)` → AI Co-pilot drafts a follow-up email for your approval
  </Tab>

  <Tab title="Support office hours">
    1. `booking_created` → confirmation with prep questions
    2. `before_meeting (24 hours)` → reminder + link to upload screenshots
    3. `meeting_completed` → NPS request
    4. `marked_no_show` → "we missed you, rebook here" email
  </Tab>

  <Tab title="Recruiting screen">
    1. `booking_created` → CRM activity, Slack to `#recruiting`
    2. `before_meeting (24 hours)` → reminder + Zoom link + role description PDF
    3. `meeting_completed` → ATS webhook with interview notes placeholder
  </Tab>
</Tabs>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Reminders aren't sending">
    Check Settings > Email and confirm your sending domain is verified. All automation emails go through Hiveku Email.
  </Accordion>

  <Accordion title="Slack messages aren't posting">
    Reconnect Slack in Settings > Integrations. Token expirations and removed app installs are the usual cause.
  </Accordion>

  <Accordion title="My follow-up sequence enrolls people who already replied">
    Add an "exit on reply" condition to the sequence — see [Sales sequences](/how-tos/crm-sales-sequences).
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Sales AI Co-pilot" icon="wand-magic-sparkles" href="/sales/overview">
    Let the Co-pilot draft follow-ups automatically.
  </Card>

  <Card title="Manage bookings" icon="calendar-days" href="/calendar/bookings">
    Operational view of every appointment.
  </Card>
</CardGroup>
