docs/integrations/google-calendar

Google Calendar

v1.3.0last modified 2026-03-27
01

Connect Google Calendar

1. Open Ekachit app → Settings → Integrations
2. Tap Google Calendar → "Connect"
3. Google OAuth consent screen appears
4. Review the scope (read-only calendar access) → "Allow"
5. Redirect back to Ekachit → ✓ Connected
💡If you signed up with Google SSO, calendar is auto-connected — skip to "What Syncs".
02

OAuth Scopes

We request the minimum scope needed:

// requested scope
https://www.googleapis.com/auth/calendar.events.readonly
What Ekachit reads:
Event times and durations
Attendee count (number only)
Recurring event status
What Ekachit does not read:
We don't read event titles or descriptions
We don't read attendee names or emails
We don't read attachments or meeting links
We cannot create, edit, or delete events
While the calendar scope provides access to all event fields, Ekachit only reads the metadata listed above. Event content is never transmitted to or stored on our servers.
03

What Syncs

synced fields
start_time:ISO 8601 event start
end_time:ISO 8601 event end
duration_minutes:computed from start/end
attendee_count:integer (0 = solo block, 2+ = meeting)
is_recurring:boolean
is_all_day:boolean (all-day events excluded from cost)
calendar_id:primary calendar only (by default)
04

What Does NOT Sync

event titles or summaries
event descriptions or notes
attendee names or email addresses
meeting links (Zoom, Meet URLs)
attachments or documents
location or address
calendar name or color
organizer identity
RSVP status
05

Sync Frequency

sync schedule
interval:every 15 minutes (automatic)
manual_trigger:Settings → Integrations → Google Calendar → Sync Now
initial_sync:fetches 30 days of history on first connect
forward_window:syncs events up to 14 days ahead
conflict_resolution:server timestamp wins (last-write-wins)
06

True Meeting Cost Calculation

Ekachit calculates the real cost of every meeting, including context-switch recovery time:

// true cost formula
true_cost = meeting_duration + (recovery_time × transitions)
where:
meeting_duration = end_time - start_time
recovery_time = 23 min (research-backed average)
transitions = 2 (entering + exiting the meeting)
example:
1h meeting → 60 + (23 × 2) = 106 min (~1.4x)
30m meeting → 30 + (23 × 2) = 76 min (~2.5x)
Short meetings are disproportionately expensive. A 15-min standup actually costs ~61 minutes (4x).
07

Focus Window Detection

Ekachit scans your calendar and identifies gaps between meetings as potential focus windows:

focus window rules
minimum_gap:45 minutes (configurable)
buffer:15 min before meeting, 23 min after (recovery)
usable_time:gap - buffer_before - buffer_after
display:shown in Morning Plan as suggested focus blocks
notification:optional reminder 5 min before window starts

Example: If you have meetings at 10:00-10:30 and 14:00-15:00, Ekachit identifies 10:53-13:45 as a 2h 52m focus window (accounting for recovery after the first meeting and prep before the second).

08

Troubleshooting

Calendar not syncing

Settings → Integrations → Google Calendar → Disconnect → Reconnect. This refreshes the OAuth token.

Missing meetings

Private events are only synced if your Google Calendar privacy setting allows apps to see them. Check Google Calendar → Settings → Event visibility.

Multiple calendars

Only your primary calendar syncs by default. To add others: Settings → Integrations → Google Calendar → Manage Calendars.

Wrong meeting costs

Meeting cost uses the default 23-min recovery. Adjust in Settings → Focus → Recovery Time if your context-switch time is different.

Google shows 'Unverified app' warning

Ekachit is verified with Google. If you see this warning, ensure you're accessing Ekachit from the official website. Contact support@ekachit.app if the issue persists.