Setup guide
Calendar sync, one-click for most, three steps for iCloud.
Outcome Engine pulls a 60-day window of events into your calendar view and pushes new bookings + smart blocks back to your real calendar. Two-way, native, no third-party middleware.
Google Workspace · Personal Gmail
Connect Google Calendar
≈ 30 seconds for end users
Standard Google OAuth. You consent once and Outcome Engine reads your calendar + writes new bookings (with Google Meet links auto-generated).
- 1In Outcome Engine, open
Settings → Calendar. - 2Find Google Calendar and click
Connect. - 3You bounce to Google's consent screen. Pick the account with the calendar you want synced and approve.
- 4You land back on the settings page with a green
Connectedbadge and a 60-day window of events.
What we get access to
Only the calendar API — we never request scopes for Gmail, Drive, or anything else. Google's consent screen shows the exact scopes: calendar.events, userinfo.email.
Outlook · Microsoft 365 · Personal Outlook.com
Connect Outlook
≈ 30 seconds for end users
OAuth via Microsoft Graph. Works for work accounts (Microsoft 365) and personal Outlook.com accounts. Teams meetings auto-generate on new bookings.
- 1In Outcome Engine, open
Settings → Calendar. - 2Find Outlook / Microsoft 365 and click
Connect. - 3Microsoft asks you to sign in and consent to read/write calendar access. Click
Accept. - 4You land back on the settings page with the connection live. Sync runs immediately.
What we get access to
The Microsoft Graph scopes Calendars.ReadWrite, User.Read, and offline_access. Nothing touches your inbox.
iCloud Calendar · for Apple Mail users
Connect iCloud (or bridge through Google)
≈ 3 minutes the first time
Apple doesn't provide OAuth for iCloud Calendar — it's the only major provider that doesn't. So we use CalDAV with an app-specific password (a one-time password Apple generates just for Outcome Engine). You can also bridge through Google if you don't want to deal with app-specific passwords.
Option A — Native iCloud (recommended)
Real two-way sync. Bookings push to your iPhone/iPad/Mac.
- 1Open appleid.apple.com and sign in. Make sure two-factor authentication is on — Apple requires it for app passwords.
- 2Click
Sign-In and Security→App-Specific Passwords→Generate an app-specific password. Name itOutcome Engine. - 3Apple shows the password once — a 16-char string like
abcd-efgh-ijkl-mnop. Copy it. - 4In Outcome Engine, open
Settings → Calendar → Connect iCloud, paste your Apple ID email and the password, clickConnect iCloud. Sync runs immediately.
Option B — Bridge through Google (faster setup, one-way only)
Your iCloud calendar appears inside OE, but new bookings push to Google (not back to iCloud).
- 1In iCloud.com → Calendar, click the share icon next to a calendar → enable
Public Calendar→ copy the URL. - 2In Google Calendar, click
Other calendars + → From URL. Paste the URL, changingwebcal://tohttps://. Click Add. - 3Connect Google Calendar in Outcome Engine. Your iCloud events now appear inside OE.
No FaceTime video links — and why
Apple doesn't expose an API for FaceTime, Zoom, or any video provider. So iCloud bookings created from Outcome Engine don't auto-generate a video link the way Google (Meet) and Outlook (Teams) do. If you need a video link, add a Zoom or Google Meet URL manually in the booking description.
When sync isn't behaving
Troubleshooting
iCloud says 'credentials rejected'?
Almost always one of three things: (1) you pasted your regular iCloud password instead of an app-specific password — Apple won't accept the regular one over CalDAV; (2) two-factor authentication isn't enabled on your Apple ID (Apple requires 2FA before letting you generate app passwords); (3) the password has been revoked — go to appleid.apple.com and generate a new one.
I don't see 'App-Specific Passwords' on appleid.apple.com?
That option only appears once 2FA is enabled on your Apple ID. Go to Sign-In and Security → Two-Factor Authentication → turn it on, then refresh. The App-Specific Passwords link appears immediately.
Google connection works but events aren't showing up?
Check that you connected the right Google account — if you have multiple, Google's consent screen lets you pick. On settings/calendar, the connection row shows the email you connected. If wrong, disconnect and reconnect. Also try the 'Sync now' button — first sync sometimes takes 10 seconds.
My iCloud events show up in the wrong timezone?
iCloud returns event times with TZID parameters. We convert those to UTC using your browser's timezone for display. If you see consistent N-hour offsets, your browser may be set to a different timezone than your phone/Mac. Check System Preferences → Date & Time.
I revoked the Outcome Engine app-specific password at appleid.apple.com. Now what??
Sync will start failing on the next attempt and the connection row will show an error. To restore, generate a new app-specific password and reconnect at /settings/calendar/connect-apple — same flow, new password.
Can I sync more than one Apple ID??
Today we support one calendar connection per provider per user. To switch which iCloud account is connected, disconnect on the settings page and reconnect with the new credentials.
Does this work for an Exchange / on-prem Outlook server??
Microsoft 365 (cloud) is fully supported via OAuth. Self-hosted Exchange isn't — you'd need to bridge through a cloud calendar (your IT team can typically forward Exchange → Outlook.com).
Security model
How we handle your calendar credentials.
- OAuth providers (Google, Outlook): access + refresh tokens stored under your user row. Postgres row-level security blocks every other user from reading them. Scopes are minimal — calendar only, never inbox.
- Apple app-specific password: encrypted with AES-256-GCM (authenticated, per-record IV) before it touches the database. Key never leaves the server. Revocable at any time at appleid.apple.com.
- Token revocation:disconnect any provider from Settings → Calendar. We delete the stored credential immediately. For Apple, you can also revoke the app password at appleid.apple.com — that works even if you can't reach Outcome Engine.
Ready to connect?
Setup is one click for Google and Outlook, three minutes for iCloud. Either way you'll have two-way sync in under five.