Skip to content
Agentic Control Plane

How to Build an AI Agent for Slack and Google Calendar

Schedule meetings from Slack conversations with natural language, get intelligent reminders, and never lose a meeting commitment made in chat.

Last updated: March 17, 2026

Slack Google Calendar

The workflow problem

Meetings are born in Slack conversations. Someone says “let’s sync on this tomorrow.” Another person responds “sure, afternoon works.” A third person says “I’m free after 2.” Nobody creates the calendar event. The next day, two of them remember and the third has scheduled something else in that slot. The sync never happens, the decision gets delayed, and someone eventually creates the meeting for the following week.

This pattern repeats dozens of times daily in every Slack workspace. Scheduling is a tax on collaboration. The person who volunteers to “set up the invite” has to leave Slack, open Google Calendar, check availability for multiple people, pick a time, write a title and description, add attendees, and send the invite. It takes three minutes and a complete context switch. So nobody volunteers, and meetings either happen late or not at all.

Reminders are equally fragmented. Google Calendar sends email notifications that get buried. Slack has a reminder feature, but it is disconnected from the calendar. A meeting could be canceled in Google Calendar while the Slack reminder still fires, or rescheduled without anyone updating the Slack channel where it was discussed.

For managers, the problem multiplies. They make scheduling commitments across dozens of Slack channels throughout the day. By 5 PM, they have no idea how many meetings they verbally committed to but never formalized. The calendar does not reflect reality until someone manually reconciles it.

Why an AI agent, not just automation

Calendar bots exist. Most of them require rigid syntax: “/meet @alice @bob tomorrow 2pm” or specific slash commands. They solve the mechanical problem of creating events but miss the conversational reality of how meetings are actually scheduled.

An AI agent understands natural language and conversational context. When someone in a Slack thread says “Can we discuss the budget proposal this week? I’m pretty open Wednesday and Thursday afternoons,” the agent recognizes a scheduling intent even without an explicit command. It can check the calendars of the people in the thread, find a common slot that matches “Wednesday or Thursday afternoon,” and propose it inline.

The agent also understands meeting context. It reads the Slack conversation to generate a meaningful calendar event title and description. Instead of “Meeting with Alice and Bob,” the event reads “Budget Proposal Review – Q2 Marketing Spend.” The agenda is pre-populated from the Slack discussion, so attendees walk in prepared.

For reminders, the agent is contextually intelligent. It does not just send a generic “meeting in 15 minutes” notification. It can post in the original Slack thread: “Reminder: the budget proposal review is in 15 minutes. Based on the discussion in this thread, the open questions are whether to increase the paid social allocation and whether to roll the influencer budget into Q3.” This turns a reminder into a preparation prompt.

How it works with ACP

ACP connects to Slack via OAuth 2.0 and to Google Calendar via Google OAuth 2.0 with Calendar API scopes. The agent operates as a scheduling assistant embedded in your Slack workflow.

Slack tools available: Read messages and threads in configured channels. Post messages and thread replies. Read user profiles and email addresses (for calendar matching). Send direct messages for private scheduling. React to messages (to acknowledge scheduling requests). Search message history.

Google Calendar tools available: Read calendar events and free/busy information. Create events with attendees, title, description, location, and conferencing (Google Meet). Update and delete events. List calendars for the authenticated user. Check availability across multiple calendars.

The agent watches Slack conversations for scheduling signals. When it detects a meeting being discussed, it checks participant availability and proposes options. Upon confirmation, it creates the Google Calendar event and posts a confirmation in Slack with the event link.

Here is how a natural scheduling interaction works:

Slack #design-team, 11:14 AM: @maya: “We need to review the new onboarding flow mockups before the sprint starts. @chris and @priya should be in the room. Can we do it this week?”

Agent (thread reply), 11:14 AM: “I checked calendars for Maya, Chris, and Priya. Here are the open slots this week:

  1. Wednesday 1:00–1:30 PM – all three available
  2. Thursday 10:00–10:30 AM – all three available
  3. Thursday 3:00–3:30 PM – Chris has a soft hold, Maya and Priya available

Which works? Or reply with a different time and I’ll check.”

@priya: “Wednesday 1pm works for me” @chris: “+1”

Agent (thread reply), 11:18 AM: “Done. Created: Onboarding Flow Mockup Review – Wednesday 1:00-1:30 PM. Attendees: Maya, Chris, Priya. Google Meet link included. Description: Review new onboarding flow mockups before sprint start. (Source: #design-team thread)

[View in Google Calendar]”

The agent generated the event title from the conversation context, set a reasonable duration, added a Google Meet link, and included a description derived from the discussion.

Governance and security

Calendar data reveals organizational patterns: who meets with whom, how often, and about what. This data must be handled carefully.

Google Calendar OAuth scopes: The agent requests calendar.readonly for checking availability and calendar.events for creating and modifying events. It does not request access to other Google services (Drive, Gmail, Contacts). The agent can only access calendars of users who have authenticated through ACP. It cannot view calendars of external users or users who have not connected their accounts.

Slack OAuth scopes: The agent requests channels:history and channels:read for monitoring conversations, chat:write for posting scheduling proposals and confirmations, and users:read and users.profile:read for matching Slack users to Google Calendar accounts. It does not access private channels or DMs unless explicitly configured.

Availability exposure: The agent only shares free/busy information, not meeting titles or attendee lists. When it says “Chris has a soft hold at 3 PM,” it does not reveal what that hold is. This prevents information leakage about sensitive meetings (board discussions, HR reviews, interview schedules).

Audit trail: Every calendar event created by the agent is logged with the Slack conversation that triggered it, the users involved, and the scheduling decision. If a meeting was created in error, administrators can trace it back to the source conversation and the user who confirmed it.

Consent model: The agent only checks availability for users who have connected their Google Calendar through ACP. It will not attempt to query calendars for users who have not opted in. If a Slack user mentions someone who has not connected their calendar, the agent notes that their availability is unknown rather than silently skipping them.

Example use cases

  • Conversational scheduling: Any Slack message that mentions a desire to meet triggers the agent to check availability and propose times, eliminating the need for back-and-forth scheduling emails or separate scheduling tools.

  • Recurring meeting setup: A manager says “Let’s do weekly design syncs, Tuesdays at 10 AM” in Slack. The agent creates the recurring Google Calendar event, adds the channel members as attendees, and posts a confirmation.

  • Pre-meeting briefing: Fifteen minutes before each meeting, the agent posts in the relevant Slack channel with a summary of the agenda (from the calendar event description), links to relevant documents mentioned in previous Slack conversations, and a reminder of open action items.

  • Conflict detection: When a user agrees to a meeting in Slack that conflicts with an existing calendar event, the agent flags the conflict immediately: “Note: you have ‘Q2 Planning’ from 1:00–2:00 PM on Wednesday, which overlaps with this proposal.”

  • Post-meeting follow-up: After a meeting ends, the agent posts in the relevant Slack thread asking for action items or notes. Replies in the thread are attached to the calendar event as notes for future reference.

Getting started

Start scheduling meetings from Slack conversations today:

  1. Sign up at cloud.agenticcontrolplane.com and create a workspace.
  2. Connect your tools by installing the Slack app and authenticating Google Calendar through the Data Sources page. Each team member who wants availability checking must connect their own Google Calendar.
  3. Describe your agent in plain English: “Watch for scheduling discussions in Slack and propose available times from Google Calendar. Create calendar events when the team confirms a time.” The agent will start monitoring configured channels immediately.

Ready to build this agent?

Sign up free, connect your tools, and have this running in minutes.

Related agent guides