Skip to main content

Apple iCloud Calendar Integration

Connect your Apple iCloud Calendar to Trix using CalDAV protocol for privacy-focused calendar sync across all your Apple devices.

Overview

Apple iCloud Calendar integration is ideal for users in the Apple ecosystem. It uses the CalDAV protocol with app-specific passwords for secure, privacy-focused calendar sync.

FeatureDetails
Sync MethodPolling (every 15 minutes)
Rate Limit~30 requests per minute (conservative)
Multi-CalendarYes - All iCloud calendars
AuthenticationCalDAV + App-Specific Password
ProtocolCalDAV (iCalendar format)
PrivacyEnd-to-end compatible, no OAuth tracking

Privacy First: Apple iCloud uses app-specific passwords instead of OAuth, giving you fine-grained control. Revoke access instantly from your Apple ID settings without affecting your main password or other apps.

Setting Up App-Specific Password

Before connecting to Trix, you need to generate an app-specific password for iCloud Calendar:

Step 1: Enable Two-Factor Authentication

App-specific passwords require 2FA. If you haven't enabled it:

  1. Go to appleid.apple.com
  2. Sign in with your Apple ID
  3. Navigate to Security section
  4. Click Turn On Two-Factor Authentication
  5. Follow the prompts to verify your phone number

2FA Required: Apple requires two-factor authentication to generate app-specific passwords. This is a security measure to protect your account.

Step 2: Generate App-Specific Password

  1. Visit appleid.apple.com/account/manage
  2. Sign in with your Apple ID and password
  3. In the Security section, find App-Specific Passwords
  4. Click Generate Password or the + icon
  5. Enter a label: Trix Calendar
  6. Click Create
  7. Copy the 16-character password (format: xxxx-xxxx-xxxx-xxxx)

Save It Now!
Apple shows the password only once. Copy it immediately - you'll need it in the next step. If you lose it, you'll need to revoke and generate a new one.

Step 3: Note Format

The app-specific password will look like this:

app-password-format.txt
abcd-efgh-ijkl-mnop

# Spaces and dashes are optional when entering
# These are all equivalent:
abcd-efgh-ijkl-mnop
abcdefghijklmnop
abcd efgh ijkl mnop

Connecting Apple iCloud Calendar

Via Dashboard

The easiest way to connect Apple iCloud Calendar is through the Trix dashboard at app.trixdb.com. Navigate to Settings → Integrations → Apple iCloud and enter your Apple ID and app-specific password.

Note: Apple Calendar is connected via the dashboard or API, not the CLI. The CLI supports trix integrations connect google for Google Calendar.

Via API

api-connect.sh
# Create Apple calendar connection
curl -X POST https://api.trixdb.com/v1/integrations/connections \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "apple",
    "credentials": {
      "apple_id": "[email protected]",
      "app_password": "abcdefghijklmnop"
    }
  }'

# Response
{
  "connection_id": "conn_abc123",
  "provider": "apple",
  "status": "active",
  "calendars_found": 5,
  "created_at": "2026-01-12T10:00:00Z"
}

CalDAV Endpoint:
Trix automatically connects to caldav.icloud.com using your Apple ID and app-specific password. No manual CalDAV configuration needed!

Managing Calendars

List All iCloud Calendars

list-calendars.sh
# API
curl "https://api.trixdb.com/v1/integrations/connections/<connection-id>/calendars" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Example response calendars:
# Calendar (default) - Syncing
# Work - Syncing
# Family - Syncing
# Birthdays - Not syncing
# Holidays - Not syncing

Calendar Colors

iCloud calendars include color information, which Trix preserves:

calendar-colors.json
{
  "calendars": [
    {
      "id": "calendar-1",
      "name": "Work",
      "color": "#0E61B9",
      "sync_enabled": true
    },
    {
      "id": "calendar-2",
      "name": "Family",
      "color": "#63DA38",
      "sync_enabled": true
    }
  ]
}

Enable/Disable Calendars

configure-calendars.sh
# API: Toggle calendar sync
curl -X PATCH "https://api.trixdb.com/v1/integrations/connections/<connection-id>/calendars/<calendar-id>" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "sync_enabled": true }'

# Or configure interactively via the dashboard at app.trixdb.com

CalDAV Protocol

What is CalDAV?

CalDAV (Calendar Distributed Authoring and Versioning) is an open standard protocol for accessing calendar data. Unlike proprietary APIs, CalDAV:

  • Works with any CalDAV-compliant server
  • Uses standard iCalendar (.ics) format
  • Supported by Apple, Google, Microsoft, and others
  • Privacy-focused (no OAuth tracking)
  • Open standard (not controlled by one company)

How Trix Uses CalDAV

When you connect an Apple calendar, Trix:

  1. Discovers Calendars - PROPFIND request to list all calendars
  2. Fetches Events - REPORT request with time range filter
  3. Parses iCalendar - Converts .ics format to Trix event format
  4. Handles Timezones - Properly converts VTIMEZONE to UTC
  5. Processes Recurrence - Expands recurring events (RRULE)

Polling vs Real-Time

CalDAV doesn't support push notifications like Google/Microsoft webhooks. Instead, Trix polls for changes every 15 minutes:

polling-flow.txt
Every 15 minutes:
  v
1. REPORT request to CalDAV server
  v
2. Get events in next 30 days
  v
3. Compare with previously synced events
  v
4. Detect new/updated/deleted events
  v
5. Update Trix memories accordingly

15-Minute Delay:
Changes to your iCloud calendar may take up to 15 minutes to appear in Trix. For most users, this delay is acceptable. Need faster updates? Use Google or Microsoft with real-time webhooks.

iCalendar Format

Event Parsing

Trix parses iCalendar (.ics) format and extracts all relevant event data:

event.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//iCloud.com//EN
BEGIN:VEVENT
UID:[email protected]
DTSTART;TZID=America/New_York:20260113T100000
DTEND;TZID=America/New_York:20260113T110000
SUMMARY:Team Standup
LOCATION:Conference Room A
DESCRIPTION:Daily sync meeting
ORGANIZER;CN=John Doe:mailto:[email protected]
ATTENDEE;CN=Jane Smith:mailto:[email protected]
ATTENDEE;CN=Bob Jones:mailto:[email protected]
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

Parsed into:

parsed-event.json
{
  "id": "[email protected]",
  "title": "Team Standup",
  "start": "2026-01-13T15:00:00Z",
  "end": "2026-01-13T16:00:00Z",
  "location": "Conference Room A",
  "description": "Daily sync meeting",
  "organizer": {
    "name": "John Doe",
    "email": "[email protected]"
  },
  "attendees": [
    {"name": "Jane Smith", "email": "[email protected]"},
    {"name": "Bob Jones", "email": "[email protected]"}
  ],
  "status": "confirmed"
}

Recurring Events

Recurring events (RRULE) are automatically expanded into individual occurrences:

recurring.ics
# iCalendar recurring event
RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20260131T235959Z

# Expanded by Trix into:
# Mon Jan 13, 10:00 AM
# Wed Jan 15, 10:00 AM
# Fri Jan 17, 10:00 AM
# Mon Jan 20, 10:00 AM
# ... (until Jan 31)

Timezone Handling

iCalendar events include timezone definitions (VTIMEZONE). Trix properly converts all times to UTC for storage and back to your local timezone for display.

Privacy & Security

App-Specific Passwords vs OAuth

Apple's app-specific password approach offers unique privacy benefits:

Privacy Benefits
  • No third-party OAuth tracking
  • Password only works with specific app
  • Doesn't grant access to other Apple services
  • Instant revocation without password change
  • No refresh token vulnerabilities
Manual Management
  • Must generate password manually
  • Password shown only once
  • No automatic expiration (revoke manually)
  • Requires 2FA to be enabled

What Trix Can Access

  • Read calendar events from iCloud
  • List available calendars
  • Detect calendar color and settings
  • Cannot create or modify events (read-only)
  • Cannot delete events
  • Cannot access contacts, email, photos, or other iCloud data

Minimal Access:
The app-specific password only grants access to CalDAV (calendar data). It cannot access your email, photos, iCloud Drive, or any other Apple services.

Revoking Access

You can revoke Trix's access instantly:

Option 1: Via Trix CLI

revoke-cli.sh
# Disconnect and delete all synced data
trix integrations disconnect <connection-id>

Option 2: Via Apple ID

  1. Go to appleid.apple.com/account/manage
  2. Navigate to Security → App-Specific Passwords
  3. Find "Trix Calendar" in the list
  4. Click Revoke or the x icon
  5. Confirm revocation

Revoking the password immediately blocks Trix from accessing your calendar. Your main Apple ID password and other apps are unaffected.

Troubleshooting

Common Issues

ProblemSolution
"Invalid username or password"1. Verify Apple ID is correct (email, not phone)
2. Regenerate app-specific password
3. Ensure 2FA is enabled
Can't generate app-specific passwordEnable Two-Factor Authentication on your Apple ID first
Safari shows warning copying passwordUse Chrome/Firefox, or manually type password (copy often fails)
Events from yesterday showingExpected - Trix fetches 3 days past to 30 days future
Changes taking 15+ minutes to syncCalDAV uses polling (not real-time). Wait one polling cycle.
Missing calendar in listEnsure calendar exists in iCloud.com (some only on device)
Recurring event showing duplicatesExpected - each occurrence is a separate event

Password Entry Tips

Copy-Paste Issues?
Safari sometimes adds extra characters when copying app-specific passwords. Try these workarounds:
1. Use Chrome or Firefox to generate the password
2. Manually type the password (remove spaces/dashes)
3. Paste into a text editor first, then copy again

Get Detailed Diagnostics

troubleshoot.sh
# Run built-in troubleshooter
trix integrations troubleshoot apple

# Output:
# CalDAV connection active
# Apple ID: [email protected]
# App-specific password: valid (no expiration)
# Last sync: 3 minutes ago (success)
# Calendars syncing: 3 of 5 enabled
# Events found: 47 upcoming
# Polling interval: 15 minutes (no real-time)
#
# Connection healthy!
#
# Note: Changes may take up to 15 minutes to appear.

Comparison: Apple vs Google vs Microsoft

FeatureApple iCloudGoogleMicrosoft
Sync Speed15-min pollingReal-time webhooksReal-time webhooks
PrivacyApp passwords (best)OAuth trackingOAuth tracking
SetupManual passwordAutomatic OAuthAutomatic OAuth
RevocationInstant (Apple ID)Instant (Google Account)Instant (MS Account)
ProtocolOpen (CalDAV)Proprietary RESTProprietary Graph API
Multi-CalendarYesYesYes
Rate Limit~30 req/min60 req/min600 req/min

When to Choose Apple iCloud

  • You use iPhone, iPad, or Mac exclusively
  • You value privacy over real-time sync
  • You prefer app-specific passwords over OAuth
  • 15-minute delay is acceptable for your use case
  • You don't need instant notifications

When to Choose Google/Microsoft Instead

  • You need real-time sync (< 1 minute)
  • You prefer automatic OAuth over manual passwords
  • You use Google Workspace or Office 365
  • You want instant push notifications

Mix and Match:
Use Apple for personal calendar (privacy) and Google/Microsoft for work calendar (real-time). Trix supports unlimited connections across all providers!

Frequently Asked Questions

Q: Can I use my main Apple ID password?

A: No. Apple requires app-specific passwords for third-party apps when 2FA is enabled. This is a security feature to protect your account. App-specific passwords can be revoked independently without affecting your main password.

Q: How long does the app-specific password last?

A: Indefinitely, until you manually revoke it. Unlike OAuth tokens that expire, app-specific passwords remain valid until you delete them from your Apple ID settings.

Q: Can Trix modify my calendar events?

A: No. Trix only requests read-only CalDAV access. It cannot create, update, or delete events. All calendar modifications must be made through Apple's Calendar app or iCloud.com.

Q: Why is there a 15-minute delay?

A: CalDAV doesn't support push notifications like Google/Microsoft APIs. Trix polls for changes every 15 minutes to balance freshness with API usage. This is a limitation of the CalDAV protocol, not Trix.

Q: Can I connect multiple Apple IDs?

A: Yes! Create separate connections for each Apple ID. Useful for work and personal iCloud accounts, or family sharing scenarios.

Q: Does this work with Family Sharing calendars?

A: Yes. Any calendar shared with your Apple ID (including Family Sharing calendars) will appear in the calendar list. You can selectively enable which ones to sync.

Q: What if I change my Apple ID password?

A: App-specific passwords remain valid even if you change your main Apple ID password. However, if you disable 2FA or deactivate your Apple ID, all app-specific passwords are revoked.

Next Steps