Automatic Calendar Events: Meetings appear on your Outlook calendar
Conflict Detection: Existing Outlook events block booking slots
Microsoft Teams Links: Auto-generated for Microsoft 365 work accounts
Two-Way Sync: Reschedule or cancel in Outlook and SalesCal updates to match
Outlook works with both Outlook.com (personal) and Microsoft 365 / Office 365 (work or school) accounts. Teams meeting links are only auto-created on Microsoft 365 work accounts — personal accounts can still book but need a manual meeting link.
You can connect Outlook from two places:
Onboarding wizard (first-time setup):
During onboarding, the calendar step shows Outlook Calendar alongside Google
Click Connect next to Outlook
Sign in with your Microsoft account
Grant the requested permissions
The badge changes to Connected with a green check
Anytime from the dashboard:
Go to Settings > Integrations
Find Outlook Calendar in the available integrations grid
Click Connect
Sign in and grant permissions
SalesCal requests these Microsoft Graph scopes:
Permission | Purpose |
| Persist refresh tokens so you don't have to reconnect every hour |
| Read your Microsoft profile to label the connection |
| Read existing events for conflict detection; create, update, and delete meetings for SalesCal bookings |
| Auto-generate Microsoft Teams meeting links on work accounts |
If your event's location is set to Microsoft Teams, SalesCal asks Microsoft Graph to create the meeting with an online meeting attached. Microsoft returns a Teams join URL which gets stored with the booking.
Work / Microsoft 365 accounts (e.g. [email protected]): Teams links auto-generate
Personal accounts (@outlook.com, @live.com, @hotmail.com, @msn.com): Teams creation silently fails — Microsoft's consumer accounts don't support Teams API meeting creation. Use Zoom or Google Meet for these accounts, or add the meeting link manually after booking
We classify your account when you connect — if you're on a personal account and want Teams, you'll need to upgrade to Microsoft 365 then reconnect.
When someone books a meeting:
SalesCal creates the meeting record in its own database
An Outlook calendar event is created via Microsoft Graph on the assigned host's calendar
If the location is Teams, an online meeting is attached and the join URL is captured
The prospect receives the calendar invite
When prospects view your booking page:
SalesCal queries Microsoft Graph's calendarView endpoint for your existing events
Existing events block those time slots
Only truly free times appear to the prospect
SalesCal subscribes to Microsoft Graph webhooks so changes made directly in Outlook flow back:
Reschedule in Outlook: SalesCal detects the new start time and updates the meeting record
Cancel in Outlook: SalesCal marks the meeting as cancelled
Edit time in Outlook: SalesCal re-syncs the new time
If you reschedule a booking from within SalesCal, the existing Outlook event is updated. But editing the meeting from Outlook then editing again from SalesCal can produce edge cases where the two systems briefly disagree — re-fetch one side if you notice a mismatch.
SalesCal writes to your default Outlook calendar and reads it for conflicts. There's no calendar picker — events go to your primary calendar, and only that calendar is checked for conflicts.
If you keep work meetings on a secondary calendar, set that as your primary in Outlook before connecting (or move bookings yourself after they're created).
Each team member connects their own Outlook account from their own SalesCal session. Round-robin and multi-host event assignment uses each host's own Outlook calendar:
Conflicts are checked against the assigned host's calendar
The booking event is created on the assigned host's calendar
Hosts who haven't connected Outlook (or Google) won't appear in availability checks
There is no shared / delegated calendar support — if you book on behalf of someone, do it from their own SalesCal account.
Try disconnecting and reconnecting
Clear browser cookies for Microsoft (login.microsoftonline.com)
If you're on Microsoft 365, your admin may have restricted third-party OAuth apps — ask them to allow SalesCal
Confirm your account is a Microsoft 365 work account, not a personal @outlook.com account
Verify Microsoft Teams is enabled for your Microsoft 365 tenant
Check that the event's location is set to Microsoft Teams specifically (not "Custom" or another video provider)
Webhook subscriptions expire after about 3 days and SalesCal renews them in the background. If renewals fail (rare), external sync stops. Disconnect and reconnect Outlook to recreate the subscription.
Confirm the events are on your default Outlook calendar (secondary calendars aren't checked)
All-day events show as "Free" by default in Outlook — only events marked Busy block slots
Refresh the booking page to fetch the latest availability
Outlook's default calendar is whichever calendar Microsoft considers your primary. Set the right one as default in Outlook (Calendar settings) and reconnect.
Feature | Outlook | Google Calendar |
Conflict detection | Yes | Yes |
Two-way sync | Yes | Yes |
Auto video links | Teams (work accounts only) | Google Meet |
Multiple calendars | No (primary only) | Limited |
Personal accounts | Supported, but no Teams links | Supported, no Meet on personal Gmail |
Webhook renewal | Every ~3 days | Every ~7 days |
Pick Outlook if your team is on Microsoft 365; pick Google Calendar if you're on Google Workspace. You can connect different team members on different platforms — the booking widget assigns based on whoever's free, regardless of which calendar they use.
Go to Settings > Integrations
Find Outlook Calendar
Click Disconnect
Existing Outlook events remain in your calendar. New bookings stop syncing to Outlook and your availability is no longer checked against your Outlook calendar.
SalesCal only accesses the calendar(s) you grant via OAuth
Refresh tokens are stored encrypted at rest
Webhook subscriptions are scoped to the host's primary calendar only
You can revoke SalesCal's access from Microsoft account → Privacy → Apps and services that can access your data
Use your primary work calendar — secondary calendars aren't checked for conflicts
Add buffer time in your event rather than as separate Outlook events; buffers are kept correct as you reschedule
For Teams on personal accounts, switch to Zoom or Google Meet
Test before launching: book a test meeting, verify the calendar event and Teams link land correctly, then go live
Google Calendar Integration — the same flow for Google accounts
Zoom Integration — alternative video conferencing
Weekly Schedule — your base availability that's combined with calendar conflicts
Managing Meetings — meeting lifecycle in SalesCal