> ## Documentation Index
> Fetch the complete documentation index at: https://docs.junojourney.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Calendar Sync Issues

> Event not showing in your calendar? Sync problems with Google Calendar or Outlook.

export const FeatureAvailability = ({module, feature}) => {
  const label = feature || module;
  return <Info title="Feature availability">
      {label ? <>This feature requires the <strong>{label}</strong> module. </> : <>This feature may not be enabled for your organization. </>}
      If you don't see it in Juno, contact your administrator.
    </Info>;
};

export const InternalNote = ({children}) => {
  const [isInternal, setIsInternal] = useState(false);
  useEffect(() => {
    const user = window.__mintlify_user__;
    if (user?.groups?.includes("internal")) setIsInternal(true);
  }, []);
  if (!isInternal) return null;
  return <div className="internal-note">
      <strong className="internal-note-title">🔒 Internal Note</strong>
      <div>{children}</div>
    </div>;
};

<FeatureAvailability module="Events" />

## How calendar sync works

Juno can sync events to your **Google Calendar** or **Microsoft Outlook** calendar. When you RSVP to an event in Juno, it creates a corresponding calendar entry in your external calendar.

This sync is **API-based** — Juno connects to Google or Microsoft via OAuth and pushes events directly. It also periodically pulls changes back (e.g. if you update an RSVP in your external calendar).

***

## Connecting your calendar

1. Go to your **Profile** → **Calendar** settings
2. Select **Google Calendar** or **Outlook**
3. Complete the OAuth authorization — you'll be redirected to Google or Microsoft to grant access
4. Once connected, future events you join will appear in your external calendar

***

## Event not showing in my calendar

If you RSVP'd to an event but it's not in your Google Calendar or Outlook:

1. **Check your calendar connection**: Profile → Calendar. Is your calendar still connected? If the connection shows an error, disconnect and reconnect.
2. **Wait a moment**: Sync may take a few minutes. Juno pushes events periodically, not always instantly.
3. **Check the right calendar**: The event may appear in a sub-calendar you're not viewing. Check all calendars in your calendar app.
4. **Re-sync manually**: In your calendar settings, use the **Resync** option to force a full synchronization.

<InternalNote>
  Calendar sync is API-based push via `CalendarManagerService`. Check: (1) Does the user have a connected calendar record in the `calendars` collection? (2) Is `needFullSync: true` set on the calendar? This flag gets set when authentication errors occur (401, 403, token expired). The system will attempt a full resync on next cron run. (3) Check provider-specific OAuth token — Google uses `google-auth-library`, Outlook uses `@azure/msal-node`. Expired or revoked tokens prevent sync. (4) The `CalendarWebhooks` cron job pulls changes from external calendars — if it's not running, changes from the provider side won't reflect in Juno.
</InternalNote>

***

## Calendar disconnected or showing an error

Your calendar connection can break if:

* You changed your Google or Microsoft password
* Your IT team revoked OAuth permissions
* The authorization token expired

**To fix:** Disconnect the calendar in your Juno settings, then reconnect it. This generates a fresh authorization.

***

## Duplicate events in my calendar

If the same event appears multiple times:

1. The event may have been updated in Juno, creating a new calendar entry instead of updating the old one
2. Try removing the duplicate from your external calendar — Juno won't re-create it if you're still RSVP'd
3. Use **Resync** in your calendar settings to reconcile

***

## Timezone issues

Events in Juno store a timezone. If the event shows at the wrong time in your external calendar:

1. Check the event's timezone in Juno — it may differ from your local timezone
2. Confirm your external calendar is set to the correct timezone
3. If the event was created without a timezone, it defaults to the organizer's timezone

***

## RSVP not syncing back

If you accept or decline an event in your external calendar but Juno doesn't reflect the change:

* Juno periodically checks for RSVP changes from your external calendar, but there may be a delay
* For immediate effect, update your RSVP directly in Juno

RSVP states in Juno:

| Status           | Meaning                          |
| ---------------- | -------------------------------- |
| **Needs action** | Invitation sent, no response yet |
| **Accepted**     | You confirmed attendance         |
| **Tentative**    | You tentatively accepted         |
| **Declined**     | You declined the event           |
