Home
cd ../playbooks
ProductivityIntermediate

Calendar & Scheduling Automation

Google Calendar and Outlook automation - scheduling optimization, meeting workflows, time blocking, and Slack/Sheets integration

10 minutes
By communitySource
#calendar#scheduling#google-calendar#outlook#automation

You spend 30 minutes every morning juggling calendar invites, moving meetings around, and manually blocking focus time that gets overwritten by the next person who needs 'just 15 minutes.'

Who it's for: managers with back-to-back meetings, executive assistants managing multiple calendars, remote teams coordinating across time zones, freelancers booking client calls, anyone whose calendar controls their life

Example

"Automate my calendar so focus blocks are protected and meeting prep happens automatically" → Google Calendar workflows that auto-block focus time, send prep docs before meetings, post daily agendas to Slack, and sync across Outlook

CLAUDE.md Template

New here? 3-minute setup guide → | Already set up? Copy the template below.

# Calendar Automation

Automate Google Calendar and Outlook workflows for meeting management, time blocking, daily digests, and cross-platform synchronization. Based on n8n workflow templates.

## Overview

This workflow covers:
- Meeting scheduling automation
- Time blocking strategies
- Daily calendar digests to Slack
- Meeting prep reminders
- Calendar analytics

---

## Core Workflows

### 1. Daily Calendar Digest to Slack

```yaml
workflow: "Morning Calendar Briefing"

schedule: "6:00 AM daily"

steps:
  1. get_today_events:
      calendar: primary
      time_min: today_start
      time_max: today_end
      
  2. categorize_events:
      categories:
        meetings: has_attendees == true
        focus_time: title contains "Focus" OR "Deep Work"
        one_on_ones: title contains "1:1" OR "1-on-1"
        interviews: title contains "Interview"
        
  3. calculate_stats:
      total_meetings: count(meetings)
      total_hours: sum(duration)
      free_time: 8 - total_hours
      back_to_back: count(gap < 15min)
      
  4. format_message:
      template: |
        ā˜€ļø *Good morning! Here's your day:*
        
        šŸ“… *{date}*
        
        *Schedule Overview:*
        • {total_meetings} meetings ({total_hours}h)
        • {free_time}h of free time
        • {back_to_back} back-to-back slots āš ļø
        
        *Today's Events:*
        {event_list}
        
        šŸ’” *Tip:* {daily_tip}
        
  5. send_to_slack:
      channel: "#daily-schedule" or DM
      
  6. log_to_sheets:
      spreadsheet: "Calendar Analytics"
      data: [date, meetings, hours, categories]
```

**Event List Format**:
```
• 9:00 AM - Team Standup (15m) šŸ“ž Zoom
• 10:00 AM - 1:1 with Sarah (30m) šŸ‘„
• 11:00 AM - Focus Time (2h) 🧠
• 2:00 PM - Client Call (1h) šŸ¤ Google Meet
• 4:00 PM - Interview - PM Role (45m) šŸŽÆ
```

---

### 2. Meeting Prep Automation

```yaml
workflow: "Meeting Preparation"

trigger:
  type: calendar_event
  time: 1_hour_before_meeting
  filter: has_attendees AND duration >= 30min

steps:
  1. get_meeting_details:
      extract: [title, attendees, description, meeting_link]
      
  2. research_attendees:
      for_each: attendee
      actions:
        - linkedin_lookup: get_title_company
        - crm_lookup: get_past_interactions
        - email_search: recent_threads
        
  3. generate_prep_doc:
      template: |
        # Meeting Prep: {title}
        
        **Time:** {start_time}
        **Duration:** {duration}
        **Link:** {meeting_link}
        
        ## Attendees
        {attendee_profiles}
        
        ## Context
        - Last interaction: {last_meeting_date}
        - Open items: {open_tasks}
        - Recent emails: {email_summary}
        
        ## Suggested Agenda
        {ai_suggested_agenda}
        
        ## Talking Points
        {ai_talking_points}
        
  4. send_reminder:
      slack_dm:
        message: |
          ā° Meeting in 1 hour: *{title}*
          
          šŸ“‹ [Prep Doc]({prep_doc_link})
          šŸ”— [Join Meeting]({meeting_link})
          
          Quick context: {one_line_summary}
```

---

### 3. Smart Time Blocking

```yaml
workflow: "Auto Time Blocking"

schedule: "Sunday 8pm" # Plan for next week

steps:
  1. analyze_calendar:
      range: next_7_days
      identify:
        - existing_meetings
        - recurring_meetings
        - available_slots
        
  2. get_priorities:
      source: [todoist, asana, notion]
      filter: due_this_week AND high_priority
      
  3. allocate_focus_time:
      rules:
        - morning_block: 9-11am (deep work)
        - afternoon_block: 2-4pm (collaborative)
        - minimum_gap: 15min between meetings
        - max_meetings_per_day: 5
        
  4. create_blocks:
      types:
        deep_work:
          duration: 2h
          frequency: daily
          preferred_time: 9-11am
          color: blue
          
        admin_time:
          duration: 1h
          frequency: daily
          preferred_time: 4-5pm
          color: gray
          
        buffer:
          duration: 15min
          after: external_meetings
          color: yellow
          
  5. notify:
      slack: "āœ… Weekly time blocks created. {x} hours of focus time protected."
```

---

### 4. Calendly → Calendar + CRM

```yaml
workflow: "Calendly Booking Handler"

trigger:
  type: calendly
  event: booking_created

steps:
  1. get_booking_details:
      extract: [invitee, event_type, scheduled_time, answers]
      
  2. enrich_contact:
      clearbit: lookup_by_email
      linkedin: get_profile
      
  3. create_calendar_event:
      google_calendar:
        title: "{event_type} with {invitee_name}"
        time: scheduled_time
        description: |
          **Booked via Calendly**
          
          Name: {invitee_name}
          Email: {invitee_email}
          Company: {company}
          
          **Pre-meeting questions:**
          {calendly_answers}
        attendees: [invitee_email, owner_email]
        reminders: [1_day, 1_hour, 15_min]
        
  4. update_crm:
      hubspot:
        create_or_update_contact:
          email: invitee_email
          properties:
            last_meeting_booked: scheduled_time
            meeting_type: event_type
        create_engagement:
          type: MEETING
          timestamp: scheduled_time
          
  5. send_confirmation:
      email:
        to: invitee_email
        template: meeting_confirmation
        include: [calendar_invite, prep_questions]
        
  6. notify_slack:
      channel: "#meetings"
      message: "šŸ“… New booking: {event_type} with {invitee_name} on {date}"
```

---

### 5. Calendar Analytics

```yaml
analytics_workflow:
  name: "Weekly Calendar Report"
  schedule: "Friday 5pm"
  
  metrics:
    time_distribution:
      - meetings_total_hours
      - focus_time_hours
      - admin_time_hours
      - 1on1_time_hours
      
    meeting_quality:
      - avg_meeting_length
      - back_to_back_count
      - meetings_with_agenda
      - external_vs_internal
      
    productivity:
      - longest_focus_block
      - fragmentation_score
      - after_hours_meetings
      
  output:
    format: markdown
    destinations: [slack, google_sheets]
    
  report_template: |
    # šŸ“Š Weekly Calendar Analytics
    
    ## Time Distribution
    | Category | Hours | % of Week |
    |----------|-------|-----------|
    | Meetings | {meetings_hours} | {meetings_pct}% |
    | Focus Time | {focus_hours} | {focus_pct}% |
    | Admin | {admin_hours} | {admin_pct}% |
    | Available | {available_hours} | {available_pct}% |
    
    ## Meeting Insights
    - Total meetings: {total_meetings}
    - Average length: {avg_length} min
    - Back-to-back: {b2b_count} ({b2b_pct}%)
    - With agenda: {agenda_pct}%
    
    ## Productivity Score
    šŸŽÆ **{productivity_score}/100**
    
    - Longest focus block: {longest_focus}
    - Meeting fragmentation: {fragmentation}
    - After-hours: {after_hours_count}
    
    ## Recommendations
    {ai_recommendations}
```

---

## Time Blocking Templates

### Maker Schedule (Individual Contributor)
```
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│ 9:00 - 11:00  │ Deep Work Block 1  │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 11:00 - 11:30 │ Email/Slack        │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 11:30 - 12:30 │ Meetings Window    │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 12:30 - 1:30  │ Lunch              │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 1:30 - 3:30   │ Deep Work Block 2  │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 3:30 - 4:00   │ Buffer/Admin       │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 4:00 - 5:00   │ Meetings Window    │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 5:00 - 5:30   │ Daily Wrap-up      │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
```

### Manager Schedule
```
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│ 8:00 - 8:30   │ Daily Planning     │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 8:30 - 9:00   │ Team Standup       │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 9:00 - 12:00  │ 1:1s / Meetings    │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 12:00 - 1:00  │ Lunch              │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 1:00 - 2:00   │ Focus Time         │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 2:00 - 5:00   │ Meetings           │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 5:00 - 5:30   │ Email/Wrap-up      │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
```

---

## Output Example

**Request**: "Set up daily calendar digest for my Slack"

**Output**:

```markdown
# Daily Calendar Digest Setup

## Workflow Configuration

```yaml
name: "Morning Calendar Briefing"
schedule: "6:00 AM weekdays"
timezone: "Asia/Shanghai"

trigger:
  type: cron
  expression: "0 6 * * 1-5"

actions:
  1. fetch_events:
      calendar: primary
      date: today
      
  2. send_slack:
      channel: "@you" # or #your-channel
```

## Sample Output

```
ā˜€ļø Good morning! Here's your Thursday:

šŸ“… January 30, 2026

━━━━━━━━━━━━━━━━━━━━━━

šŸ“Š Overview:
• 5 meetings (4.5h)
• 3.5h free time
• 1 back-to-back warning āš ļø

━━━━━━━━━━━━━━━━━━━━━━

šŸ—“ļø Schedule:

9:00 AM │ Team Standup (15m)
        │ šŸ“ž Google Meet
        │
10:00 AM │ 1:1 with Sarah (30m)
         │ šŸ‘„ Conference Room B
         │
11:00 AM │ 🧠 Focus Time (2h)
         │ 
1:00 PM │ Lunch
        │
2:00 PM │ Client Call - Acme (1h)
        │ šŸ¤ Zoom (link attached)
        │
3:30 PM │ Product Review (1h)
        │ šŸ“‹ Agenda attached
        │
5:00 PM │ āœ… Day ends

━━━━━━━━━━━━━━━━━━━━━━

šŸ’” Tip: You have 2h of focus time - tackle your highest priority task!
```

## n8n Setup Instructions

1. Create new workflow
2. Add Schedule Trigger node (6am weekdays)
3. Add Google Calendar node (Get Events)
4. Add Code node (format message)
5. Add Slack node (send message)
6. Activate workflow

Would you like me to generate the full n8n workflow JSON?
```

---

*Calendar Automation Workflow - Part of Claude Code*

Get new playbooks like this one

One email a week with new Claude Code workflows. Free, like everything here.

No spam. Unsubscribe anytime.

README.md

What This Does

Automate Google Calendar and Outlook workflows for meeting management, time blocking, daily digests, and cross-platform synchronization. Based on n8n workflow templates.


Quick Start

Step 1: Create a Project Folder

mkdir -p ~/Documents/CalendarAutomation

Step 2: Download the Template

Click Download above, then:

mv ~/Downloads/CLAUDE.md ~/Documents/CalendarAutomation/

Step 3: Start Working

cd ~/Documents/CalendarAutomation
claude

Examples

Request: "Set up daily calendar digest for my Slack"

Output:

# Daily Calendar Digest Setup

$Related Playbooks

Productivity

Calendar Availability Checker

Check Google Calendar availability across all calendars and draft professional scheduling replies with optimal time slot proposals.

10 minutes
Intermediate
Productivity

Claude Export Fixer

Fix broken line-wrapping in Claude Code exported conversation files — reconstruct tables, paragraphs, paths, and tool calls that were hard-wrapped at fixed column widths, with an automated validation suite.

5 minutes
Beginner
Productivity

Chief of Staff Check-In

Run a structured 10-15 minute interactive session combining inbox triage, reminder management, meeting prep, email drafting, and priority alignment.

20 minutes
Advanced
Productivity

Claude Code Custom Personalities for Non-Coding Tasks

Use Claude Code for non-coding tasks by creating custom personalities. Turn each project folder into a different assistant — writing editor, media manager, notes organizer, and more.

10 minutes
Intermediate
Productivity

Connect

Set up an MCP connector.

15 minutes
Intermediate
Productivity

Context Engine

Load brand context for marketing tasks.

15 minutes
Intermediate
Productivity

Connect Apps

Enable Claude to integrate with 1,000+ external applications to perform real actions like sending emails, creating issues, and posting messages.

5 minutes
Beginner
Productivity

Decision Matrix

Stop going in circles — define criteria, weight importance, score options, and let the math reveal what your gut already knows.

5 minutes
Beginner
Productivity

DIY Project Planner — Materials Lists, Costs & Build Instructions

Plan any home improvement project with AI-generated materials lists, itemized cost estimates, tool checklists, and step-by-step build instructions. From shelves to decks to full renovations.

10 minutes
Intermediate
Productivity

Credential Switch

Switch brand credentials.

15 minutes
Intermediate
Productivity

Data Export

Export marketing data.

15 minutes
Intermediate
Productivity

Data Import

Import data from external sources.

15 minutes
Intermediate

Browse all Productivity playbooks →