

How to detect room booking conflicts with Power Automate
Automatically check Google Calendar room bookings every 15 minutes and alert Slack when overlapping events are found.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams with shared room calendars who need immediate conflict alerts in their main communication channel
Not ideal for
Single-user calendars or teams that prefer email notifications over Slack messages
Sync type
scheduledUse case type
notificationReal-World Example
A 25-person marketing agency has 3 conference rooms with separate Google Calendar accounts. Before automation, double bookings weren't caught until someone showed up to a locked room. Now conflicts trigger #office alerts within 15 minutes, and the office manager can resolve them immediately.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into Power Automate
Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Event Summary | summary | |
| Start Time | start.dateTime | |
| End Time | end.dateTime | |
| Organizer Email | organizer.email | |
| Event ID | id | |
1 optional field▸ show
| Event Location | location |
Step-by-Step Setup
My flows > New flow > Scheduled cloud flow
Create scheduled cloud flow
Navigate to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then 'New flow'. Select 'Scheduled cloud flow' from the dropdown menu. Name your flow 'Room Booking Conflict Detector' and set it to run every 15 minutes.
- 1Click 'My flows' in the left navigation
- 2Click the 'New flow' dropdown button
- 3Select 'Scheduled cloud flow'
- 4Enter 'Room Booking Conflict Detector' as the flow name
- 5Set repeat every 15 minutes
Flow designer > + New step > Google Calendar
Add Google Calendar connector
Click '+ New step' below the Recurrence trigger. Search for 'Google Calendar' in the connector search box and select it. Choose 'Get events (V4)' from the actions list. This action will fetch all events from your room calendar for conflict analysis.
- 1Click '+ New step' under the Recurrence block
- 2Type 'Google Calendar' in the search box
- 3Select the Google Calendar connector
- 4Choose 'Get events (V4)' action
Google Calendar action > Connection settings
Configure calendar connection
Click 'Sign in' to connect your Google account that has access to the room calendars. After authentication, you'll see a dropdown for Calendar id. Select the specific room calendar you want to monitor. Set 'Time Min' to formatDateTime(utcNow(),'yyyy-MM-ddTHH:mm:ssZ') and 'Time Max' to formatDateTime(addHours(utcNow(),2),'yyyy-MM-ddTHH:mm:ssZ') to check the next 2 hours.
- 1Click 'Sign in' and complete Google OAuth flow
- 2Select your room calendar from the Calendar id dropdown
- 3Click in Time Min field and select 'Expression'
- 4Enter formatDateTime(utcNow(),'yyyy-MM-ddTHH:mm:ssZ')
- 5Set Time Max to formatDateTime(addHours(utcNow(),2),'yyyy-MM-ddTHH:mm:ssZ')
Flow designer > + New step > Data Operations > Compose
Add conflict detection logic
Add a new step and search for 'Compose' action under Data Operations. This will process the calendar events to detect overlaps. In the Compose inputs field, you'll create an expression that compares event start/end times to find conflicts. We'll use this to prepare data for the next filtering step.
- 1Click '+ New step' below the Google Calendar action
- 2Search for 'Compose' in Data Operations
- 3Select the Compose action
- 4Click in the Inputs field to add conflict detection expression
Compose action > Inputs > Expression
Configure overlap detection formula
In the Compose inputs, click 'Expression' and enter this formula to detect overlapping events. This expression compares each event's start and end times against all other events to identify scheduling conflicts. The formula accounts for events that start before another ends or end after another starts.
- 1Click 'Expression' tab in the inputs field
- 2Paste the overlap detection expression
- 3Click 'OK' to save the expression
- 4Verify the expression appears in the inputs field
Flow designer > + New step > Data Operations > Filter array
Filter for actual conflicts
Add another step and select 'Filter array' from Data Operations. Set the 'From' field to the output of your Compose action. In the filter condition, check if the array length is greater than 0, meaning conflicts were found. This prevents false alerts when no conflicts exist.
- 1Add new step and search for 'Filter array'
- 2Set 'From' to the Compose action output
- 3Add condition where length is greater than 0
- 4Set the filter to only pass when conflicts exist
Flow designer > + New step > Slack > Post message
Add Slack connector
Click '+ New step' and search for 'Slack'. Select the Slack connector and choose 'Post message' action. You'll need to sign in to your Slack workspace and authorize Power Automate to post messages. Select the #office channel where conflict alerts should appear.
- 1Add new step and search for Slack
- 2Select Slack connector
- 3Choose 'Post message' action
- 4Sign in to your Slack workspace
- 5Select #office channel from dropdown
Slack Post message > Message field
Configure conflict alert message
In the Message field, create an alert that includes details about the conflicting bookings. Include event names, times, and organizers so the office manager can quickly resolve the issue. Use dynamic content from the Google Calendar events to populate specific conflict details.
- 1Click in the Message text field
- 2Type alert header text
- 3Add dynamic content for event details
- 4Include conflict time ranges and organizers
- 5Format message for readability
Flow designer > Save > Test > Manually
Test the flow
Click 'Save' to save your flow, then 'Test' in the top menu. Select 'Manually' and click 'Test'. The flow will run immediately and check for conflicts in your room calendar. If conflicts exist, you should see a Slack message appear in your #office channel within 30 seconds.
- 1Click 'Save' in the top right
- 2Click 'Test' button
- 3Select 'Manually' option
- 4Click 'Test' to run immediately
- 5Check #office channel for test message
Flow designer > Turn on
Enable automatic monitoring
After successful testing, click 'Turn on' to activate the scheduled flow. The flow will now run every 15 minutes and check for room booking conflicts automatically. You can monitor run history in the flow details page to ensure it's working correctly.
- 1Click 'Turn on' in the flow header
- 2Confirm the flow is enabled
- 3Check the status shows as 'On'
- 4Review run history after first scheduled execution
Add this expression in the Compose action to detect overlapping events by comparing start and end times across all calendar events in the response array.
JavaScript — Code Step// Overlap detection expression for Compose action▸ Show code
// Overlap detection expression for Compose action
map(body('Get_events_(V4)')?['value'], lambda('event1',
{... expand to see full code
// Overlap detection expression for Compose action
map(body('Get_events_(V4)')?['value'], lambda('event1',
{
'summary': item()?['summary'],
'start': item()?['start']?['dateTime'],
'end': item()?['end']?['dateTime'],
'organizer': item()?['organizer']?['email'],
'conflicts': filter(body('Get_events_(V4)')?['value'], lambda('event2',
and(
not(equals(item('event1')?['id'], item('event2')?['id'])),
or(
and(lessOrEquals(item('event1')?['start']?['dateTime'], item('event2')?['start']?['dateTime']),
greater(item('event1')?['end']?['dateTime'], item('event2')?['start']?['dateTime'])),
and(less(item('event1')?['start']?['dateTime'], item('event2')?['end']?['dateTime']),
greaterOrEquals(item('event1')?['end']?['dateTime'], item('event2')?['end']?['dateTime']))
)
)
))
}
))Scaling Beyond 50+ events per room calendar per day+ Records
If your volume exceeds 50+ events per room calendar per day records, apply these adjustments.
Increase time window checks
Check 4-6 hour windows instead of 2 hours to catch more conflicts per API call. Balance against processing time and memory limits.
Implement conflict deduplication
Store detected conflict pairs in SharePoint to avoid alerting about the same overlap multiple times. Clear the list daily.
Optimize API calls
Use single time queries with multiple calendar IDs instead of separate calls per room. Reduces API quota usage significantly.
Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use Microsoft Power Automate for this if you're already in the Microsoft ecosystem and need scheduled conflict checking without webhooks. The Google Calendar connector handles authentication smoothly and the expression builder works well for overlap detection logic. Pick Make instead if you need real-time conflict detection - their webhook triggers fire immediately when bookings are created.
Real math: Each flow run makes 1 Google Calendar API call plus 1 Slack API call when conflicts exist. At 96 runs per day (every 15 minutes), that's 96 Google Calendar calls daily. Google allows 1 million Calendar API requests per day for free, so you won't hit limits. Power Automate free tier gives you 750 runs monthly - this flow uses 2,880 runs monthly, so you need the $15 Power Automate per user plan.
Make handles this better with instant webhook triggers instead of 15-minute delays. Zapier's Google Calendar trigger is more reliable for high-volume calendars. n8n gives you better control over the overlap detection algorithm with proper JavaScript instead of Power Automate's limited expression language. Pipedream processes batch calendar events faster. But Power Automate wins if your IT team already manages other Microsoft flows and wants centralized automation governance.
You'll hit expression complexity limits when checking more than 20 events per run - the nested loops slow down significantly. Google Calendar's API sometimes returns events in random order, breaking your time-based assumptions. All-day events come back with date-only fields instead of dateTime, which breaks the overlap comparison logic unless you add specific handling for them.
Ideas for what to build next
- →Monitor multiple room calendars — Add parallel branches to check conference rooms, phone booths, and meeting spaces simultaneously in one flow.
- →Auto-resolve conflicts — Extend the flow to automatically cancel the second booking and notify organizers with rebooking suggestions.
- →Add conflict resolution workflow — Create a follow-up flow that tracks when conflicts are marked as resolved in Slack threads.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup