Composed connects Google Calendar to iOS through OAuth in under 60 seconds, then surfaces work meetings alongside personal events in one composed timeline view on iPhone. Two-way sync covers Google Calendar, Apple Calendar, and Google Workspace shared calendars, and every imported event picks up AI prep tasks and the Leave-by notification automatically. Setup, the gotchas, and what Composed does that the native Calendar app does not.

iPhone on a wooden desk showing Composed's Today view with a Google Calendar work meeting and a personal dentist appointment side by side

What does Google Calendar sync actually do on iPhone?

Google Calendar sync pulls every event from your Google account into your iOS planning app — work meetings, personal events, shared family calendars, holiday calendars — so you can see your whole day in one place instead of switching between Google Calendar, Apple Calendar, and a separate planner. Composed runs the sync over Google’s OAuth flow (the same secure authorization Gmail uses), pulls events into the unified Today view alongside todos and deadlines, and adds the Composed intelligence layer on top: AI prep tasks, the three-layer reminder model, and Leave-by notifications based on real travel time.

Most iPhone users run three to five calendar surfaces simultaneously: Google Calendar for work, Apple Calendar for personal, a shared Outlook from a partner, sometimes a Google Workspace calendar from a side project. The mental tax of stitching them together yourself — “is Thursday at 2 actually free or am I forgetting the standup?” — is the single largest cause of double-bookings and missed appointments. Composed solves that by making one app the destination for every calendar source you already use.

The sync is genuinely two-way. Edit a meeting in Composed and it updates in Google Calendar. Create something in Google Calendar from your laptop and it appears in Composed on the next refresh cycle. The bridge runs in both directions because Composed treats your calendars as the source of truth — not a competing data store you have to keep in sync manually.

How do I sync Google Calendar to Composed in under 60 seconds?

Open Composed, go to Settings, tap Connect Google Calendar, sign into your Google account on the OAuth screen, and grant calendar access. Your events start appearing in the Today view within a few seconds, and the full backfill — last 7 days plus next 90 days — completes in under a minute. There is no calendar-picker step, no per-sub-calendar checkbox grid, and no sync-conflict resolution dialog. The default is “import everything Google sees” and that is almost always what people want.

Step 1: Use Google’s official OAuth flow

When Composed asks for calendar access, it should redirect you to a Google sign-in page — not ask for your Google password directly. The OAuth popup (“Composed would like access to your Google Calendar”) is Google’s secure way of sharing calendar data without ever giving an app your password. If any planning app on the App Store asks for your raw Google credentials instead of redirecting to Google’s sign-in, that is a red flag worth noticing. Composed only uses OAuth.

Step 2: Handle the “unverified app” screen calmly

When you connect, you might see a screen from Google that says “This app isn’t verified.” This is normal for any app that has recently added Google integration — Google’s verification process takes 2-4 weeks regardless of how established the app is otherwise. Tap Advanced, then Go to Composed, and continue. Composed only requests calendar scope (read and write events), not Gmail, Drive, Contacts, or anything else.

Step 3: Watch the first sync complete

After authorization, Composed pulls events into the Today view immediately. Past events from the last 7 days appear so you can see what you finished. Future events show up to 90 days out. Each event gets an AI prep task pass — the dentist appointment gets “bring insurance card,” the flight gets “verify passport valid 6+ months,” the client meeting gets a checklist of slides-to-review and laptop-charging. All of that happens in the background; you do not have to ask for it.

Step 4: Add a test event and verify the loop

Create a test event in Google Calendar on your laptop — something obvious like “SYNC TEST · DELETE” tomorrow at noon. Open Composed on your iPhone and pull down on the Today view to refresh. The event should appear within a few seconds. Edit the title in Composed to “SYNC TEST · CHECKED” and look back at Google Calendar on your laptop. The change should propagate within a minute. That round-trip confirms both directions of the sync are working.

Can I sync multiple Google Calendars (work + personal + shared)?

Yes. Composed connects a Google account, not a single Google Calendar — so the moment you authorize, every sub-calendar in that account flows in: your primary calendar, your “Work” calendar, “Birthdays,” any shared family or partner calendars, Google Workspace shared calendars, even the country holiday calendar if you have it subscribed. You can connect more than one Google account too, which is what you want if your work Google Workspace lives separately from your personal Gmail. Each account is a distinct connection in Composed’s Settings, and the events come through tagged with their source.

The cleanest pattern for someone running a multi-Google life is:

  1. Connect your personal Gmail Google account first. Birthdays, personal appointments, shared calendars with family members.
  2. Connect your work Google Workspace account second. Work meetings, team calendars, project standups.
  3. Let Composed merge them in the Today view. You will see your full day in chronological order regardless of which calendar each item came from.

If a particular calendar is noisy and you would rather not see it (the “Holidays in United States” calendar is a common one), unsubscribe from it in Google Calendar itself — Composed mirrors what Google considers active. There is no per-calendar mute toggle inside Composed because the simpler model is “everything you see in Google Calendar is what Composed shows you.”

How does Composed handle Apple Calendar at the same time?

Composed reads from Apple Calendar via background sync every 6 hours — the iOS-native bridge — and treats Apple Calendar as a complementary source alongside Google Calendar. If you keep your “share with my partner” calendar in iCloud (Apple Calendar’s native sharing) and your “work meetings” in Google Workspace, Composed pulls from both and shows them in one timeline. iPhone and Mac both stay in sync because iCloud handles the Apple side and Google’s servers handle the Google side; Composed just reads the result.

The technical division of labor: Google Calendar sync uses OAuth and writes back directly to Google’s API. Apple Calendar import uses iOS’s EventKit framework and deduplicates events by their external event ID so a meeting that exists in both Apple Calendar and Google Calendar shows up exactly once — not twice. The Apple Calendar bridge is read-only on Composed’s side (Composed does not write back to Apple Calendar), which is the safest behavior because Apple Calendar is often a passive mirror of accounts you authenticated elsewhere.

What happens to my events if Composed loses internet?

Composed caches your synced events locally on iPhone using LocalCacheService, so your Today view, Month view, and Week view continue to render the last-known calendar state even when offline — at a coffee shop on flaky Wi-Fi, on a plane in airplane mode, in the subway. AI prep tasks that were already generated stay attached to their events. Leave-by notifications that were already calculated still fire on schedule because the iOS notification scheduler holds them independently of the network. What does not work offline: creating new events that need to sync back to Google Calendar (those queue locally and push when iPhone reconnects), and the AI prep-task generation for brand-new events (the generate-checklist edge function runs in the cloud).

The pattern is “cache-first, cloud-second.” Composed reads from the local cache instantly, then revalidates against Google’s API and Apple Calendar in the background. You do not see a loading spinner waiting for the cloud to respond before your day shows up — the cache renders, then the cloud catches up.

Is the sync two-way? Will edits in Composed update Google?

Yes. Composed writes back to Google Calendar through the same OAuth connection used for reads. If you edit a meeting time, change the title, add a note, or delete an event in Composed, the change pushes to Google Calendar within seconds and appears on every other device you have Google Calendar on — laptop, Apple Watch, web. This is the part that distinguishes Composed from read-only viewers; you do not need to switch to Google Calendar to make a change once an event is on your phone.

The one exception is recurring-event editing. Composed creates and edits single events cleanly, but if you have a recurring weekly standup and want to modify just one instance, the safest path today is to make the edit in Google Calendar directly so Google’s recurrence engine handles the “this event only / this and future / all events” branching. That capability is on the roadmap for Composed but not in the current shipping build.

How does Composed compare to Apple Calendar and Fantastical for Google Calendar sync?

Apple Calendar is the default iOS Calendar app. It can show Google Calendar events via the iOS Settings → Calendar → Accounts bridge, but the sync is one-directional (Google to Apple — edits sometimes round-trip and sometimes do not), there are no AI prep tasks, no Leave-by notifications based on real travel time, and the reminder model is a single time-based notification. Apple Calendar is the right tool if all you need is “show me my events.” It is the wrong tool if you want help getting ready for those events.

Fantastical is the leading paid premium iOS calendar — beautiful natural-language parsing, OpenAI-powered event creation, deep Google Workspace integration. It costs $4.99/month or $56.99/year for the full premium tier as of 2026. Fantastical is excellent at scheduling: faster event creation than the native Calendar app, advanced views, weather overlays. What it does not do is generate AI prep checklists for each event, calculate departure time from your current location to the venue with real-traffic-aware buffer, or surface a phase-aware flight timeline (boarding → in flight → arrived) for travel events.

The Google Calendar iPhone app is the third option. It is the canonical Google Calendar surface — beautiful design, perfect sync, deep integration with Gmail and Meet. It is also a pure calendar — no AI prep, no voice input in the way Composed does it, no Leave-by notification based on real travel time. If you live entirely inside Google Workspace and never need preparation help, the Google Calendar app is fine. If you want a layer that turns “I have an event on my calendar” into “I will show up ready,” that layer is what Composed adds.

The goal is not to see every event in every place. It is to see the right events in the place where you actually make decisions.

This is the difference between a calendar and a planner. A calendar tells you when. A planner helps you be ready. Google Calendar, Apple Calendar, and Fantastical are calendars. Composed is a planner that reads your calendars and adds the preparation layer on top.

What does the Composed sync actually do that the native iOS Calendar does not?

Composed wraps every synced event in the same intelligence layer it applies to events you create directly: a three-layer reminder model, AI-generated prep tasks, and a “Leave by” calculation based on real travel time. The native iOS Calendar gives you a single time-based reminder (15 minutes before the event by default) and a list of attendees. Composed gives you a graduated reminder pattern — gentle awareness on the day-of and the day-before, action-tier nudges as the event approaches, and a precise Leave-by notification based on the actual drive or walk time from your current location.

For a 2pm client meeting across town, Apple Calendar fires a “15 minutes before” reminder at 1:45pm regardless of whether the drive takes 12 minutes or 35 minutes. Composed calculates the actual travel time via Apple MapKit and Google Maps, adds a buffer, and tells you when to leave — which might be 1:18pm on a Tuesday with light traffic or 1:05pm on a Friday during construction. The Composed Leave-by calculation recalculates every time you open the app within 8 hours of the event, so if traffic suddenly worsens the Leave-by time shifts and the notification fires earlier.

AI prep tasks are the other addition Composed makes. Every synced Google Calendar event runs through a generate-checklist pass — a context-aware checklist tailored to the event type. A dentist appointment gets “bring insurance card” and “arrive 10 minutes early to fill out forms.” A flight gets “verify passport valid 6+ months” and “check baggage allowance.” A client meeting gets “review slides,” “print agenda,” “charge laptop.” None of this happens in Google Calendar or Apple Calendar; both treat events as opaque time slots.

The free tier of Composed allows up to 5 active events you create directly. Events imported from Google Calendar and Apple Calendar do not count against that 5-event limit — they sync automatically because they originate in another system. Pro ($29.99/year or $79.99 lifetime) unlocks unlimited events plus departure tracking, the flight intelligence timeline, and shared events.

What happens when sync stops working?

If events stop appearing or stop syncing back, there are four common causes and one nuclear fix. Most of the time the issue is that Google revoked the token, often because you (or someone on your account) audited third-party app permissions and removed Composed.

Google revoked access. Google periodically prompts you to review which apps have permission to your account. Check at myaccount.google.com → Security → Third-party apps and look for Composed. If it is missing, reconnect from inside Composed’s Settings.

Your Google password changed. A new Google password can invalidate older OAuth tokens. Disconnect and reconnect the Google account inside Composed; that re-runs OAuth with the new credentials.

The app needs an update. Google’s Calendar API evolves, and an out-of-date Composed binary may use a deprecated connection method. Check the App Store for an update.

Your device has been offline more than you think. Sync requires an internet connection. If you have been on a long flight or in a low-signal area, open Composed on Wi-Fi and pull down to refresh manually.

The nuclear option, when none of those resolves it, is to disconnect the Google account inside Composed’s Settings and reconnect. That re-runs the full OAuth handshake and rebuilds the token. It takes about two minutes and fixes the majority of persistent sync issues.

iPhone showing Composed's Settings screen with the "Connect Google Calendar" option and a confirmation that Google sync is active

How does Composed handle Google Workspace shared calendars and team calendars?

Google Workspace shared calendars (the “team calendar” or “company calendar” pattern) flow through Composed exactly like any other calendar in the connected account. When you authorize a Google Workspace account, Composed sees every calendar your Workspace admin has shared with you — the team calendar, the on-call rotation calendar, the meeting-rooms calendar if your IT has set those up. They all appear in the Today view as soon as the sync completes.

This is the part that makes Composed useful for people whose work life lives inside Google Workspace. A typical week for a Workspace user includes a personal calendar, a team calendar, sometimes a department calendar, plus 1:1 meeting invites that land on the personal calendar. Without consolidation, that is 3-4 surfaces to check. With Composed, it is one view, sorted chronologically, with prep tasks attached.

Composed does not currently filter or recolor events by source calendar inside the Today view (the assumption is “if you see it, it is on your schedule”), but it does respect permissions — if a Workspace event is marked private, Composed honors the privacy flag and shows it as “Busy” without exposing the title.

What sync does NOT do (the honest scope)

Sync is a transport layer. It moves events between systems. It does not, on its own:

  • Resolve double-bookings or conflicts. If your work Google Calendar has a meeting at 2pm and your shared family calendar has a doctor appointment at 2pm, Composed shows both. Resolving the conflict is on you.
  • Magically organize messy calendars. A Google Calendar full of noise stays noisy in Composed. The fix is to clean up the source calendars in Google directly.
  • Replace your calendar app. Composed is a planner that reads from your calendars, not a replacement for them. Google Calendar’s invitation system, attendee management, and meeting-room booking still live in Google.
  • Sync across devices on its own. Composed is iOS-only for now — iPhone primary, iPad uplift-compatible. There is no web app, no Android client, no Mac native app. If you need calendar access on a Mac, use Google Calendar’s web app or Apple Calendar — both of which sync to the same Google account Composed is reading from.

The right mental model: Google Calendar and Apple Calendar are the data layer; Composed is the planning layer on top of them. You can change the data in either place, and Composed will read the truth from whichever side is authoritative.

A real-world example: the dentist follow-up

Last winter Jesse (Composed’s founder) was at the dentist for a routine cleaning when the dentist mentioned a follow-up visit in six months. Standing at the front desk, holding a paper card with the next appointment time scribbled on it, the old workflow would have been: open the iPhone Calendar app, tap the day, type the time, type the address, save, and hope to remember to actually leave on time six months later.

The Composed workflow: tap the voice button on the lock screen, say “Dentist follow-up June 14th at 10am at Charlevoix Family Dentistry on Bridge Street,” and watch Composed parse the natural-language sentence into a calendar event with the correct date, the venue resolved via place lookup, an AI prep checklist generated automatically (“bring insurance card,” “confirm copay”), and a Leave-by notification scheduled. The whole interaction was 10 seconds. Then it pushed to Google Calendar via two-way sync, so the appointment showed up on Jesse’s MacBook the same day.

That is the difference Composed makes when you stack it on top of Google Calendar. The calendar holds the event. Composed makes the event useful.

iPhone displaying Composed's Today view with a synced Google Calendar event showing AI prep tasks and a "Leave by" departure notification

How does this fit into a single-calendar setup?

The case for running one calendar for your whole life is largely about cognitive load. When you stitch three or four calendars together in your head, you are doing work your tools should be doing for you. Sync is what makes that consolidation possible without forcing you to migrate everything into one calendar account.

The cleanest setup for most people: keep events where they naturally live (work in Google Workspace, personal in Google or Apple, family-shared wherever your partner uses), then connect every source to Composed so the unified view is the only thing you ever look at on your phone. You do not have to change where data lives. You just change where you look at it.

The same principle applies to the reverse direction: if you only run one calendar today and that calendar is Google, Composed is what turns it into a planning surface without making you switch tools. You keep Google Calendar as the source of truth. You add Composed as the interface that helps you show up ready.

This pattern — let the calendar be the calendar, and let the planner be the planner — is also why we recommend pairing Google Calendar with Composed’s voice-to-calendar capability rather than trying to make Google Calendar do everything. Voice capture, AI prep, and Leave-by notifications are planner work. Storage and cross-device propagation are calendar work. Sync is what bridges the two.


If sync is the bridge, the three-layer reminder model is what makes the synced events actually useful — awareness when an event is more than a week out, action nudges as it approaches, and time-sensitive Leave-by notifications inside the final 24 hours. That is the layer no calendar app provides on its own, and the reason a planner on top of Google Calendar matters. The author who designed this approach is Jesse Meria, who built Composed after years of watching ADHD-tax show up as forgotten appointments and rushed departures from a calendar that had every event listed but did not help him be ready for any of them.

Frequently asked questions

Does Composed support two-way Google Calendar sync?

Yes. Composed uses Google's OAuth flow to read events from Google Calendar and write events back to Google Calendar. Edit a meeting in Composed and it propagates to Google Calendar within seconds; create something on Google Calendar and it appears in Composed on the next refresh. Recurring-event editing for individual instances is best done in Google Calendar directly while that capability is still on the Composed roadmap.

Can I sync multiple Google accounts (work Workspace + personal Gmail)?

Yes. Each Google account is a separate connection in Composed's Settings. Connect your personal Gmail Google account and your work Google Workspace account independently; Composed merges events from both into one chronological Today view on iPhone. Google Workspace shared calendars (team calendar, on-call rotation) flow through automatically once the Workspace account is authorized.

Does syncing Google Calendar count against the 5-event free tier on Composed?

No. Events imported from Google Calendar and Apple Calendar do not count against the 5-event limit on Composed's free tier. Only events you create directly inside Composed count toward that limit. Synced events still receive AI prep tasks and the three-layer reminder model on the free tier.

What permissions does Composed request from Google?

Calendar scope only — read and write events on the calendars in the authorized Google account. Composed does not request access to Gmail, Drive, Contacts, Tasks, or any other Google service. You can audit and revoke the permission at any time at myaccount.google.com under Security → Third-party apps.

Why does Composed show an 'app isn't verified' screen when I connect Google?

Google shows an 'unverified app' screen for any app that recently added Google integration; the verification process takes 2-4 weeks regardless of the app's age. Tap Advanced, then Go to Composed, to continue. The screen is a Google policy notice, not a Composed message — your data is handled through OAuth's standard scoped token, the same security model Gmail and Google Drive use.

Will my synced Google Calendar events still work if Composed goes offline?

Yes. Composed caches every synced event locally on iPhone via the LocalCacheService, so the Today, Month, and Week views continue to render the last-known calendar state offline. AI prep tasks already generated stay attached. Scheduled Leave-by notifications and reminders still fire because iOS holds them independently of the network. New events you create while offline queue locally and sync to Google Calendar when iPhone reconnects.