Calendar App Overview
Keep your work life and personal calendar perfectly in sync β shifts, time off, interviews, and every important deadline in one unified view.
What Is the Calendar App?
The Calendar app bridges MangoApps Workforce with the external calendars your employees already use every day. It automatically pushes work shifts, approved leave, company holidays, training deadlines, interviews, 1:1 meetings, and more directly into Google Calendar, Microsoft Outlook, or any iCal-compatible client. Instead of manually copying schedules between systems, employees connect once and stay in sync.
Core Value Proposition:
- π Automatic Sync β Work events flow to your personal calendar without lifting a finger
- π Multi-Provider Support β Google Calendar, Microsoft Outlook, and iCal/CalDAV all supported
- π Unified Work View β Shifts, leave, holidays, interviews, training, tasks, and meetings in one calendar
- π Privacy First β Events default to private visibility with encrypted credential storage
At a Glance
| π Providers | π Event Types | β‘ Sync Modes | π± Platforms |
|---|---|---|---|
| 3 (Google, Outlook, iCal) | 10+ (Shifts, Leave, Holidays, Training, Interviews, Tasks, Meetings, and more) | 3 (Scheduled, Real-Time, Webhook) | Web, Mobile |
Perfect For:
- π Shift Workers β See upcoming shifts alongside personal commitments to avoid conflicts
- π’ Office & Hybrid Teams β Keep 1:1 meetings, reviews, and training on your Outlook or Google calendar
- π§βπΌ Recruiters & Hiring Managers β Interview schedules sync directly to external calendars with candidate details
- π Managers & HR β Company holidays, business deadlines, and performance cycles visible at a glance
How It Works
Calendar Sync Flow
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CALENDAR SYNC ARCHITECTURE β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββββββββββββ β
β β MANGOAPPS β Push Events β EXTERNAL CALENDAR β β
β β WORKFORCE β ββββββββββββββββββββββΆ β β β
β β β β β’ Google Calendar β β
β β β’ Shifts β β β’ Outlook / O365 β β
β β β’ Leave β Webhook Triggers β β’ iCal / CalDAV β β
β β β’ Holidays β ββββββββββββββββββββββ β (Apple, etc.) β β
β β β’ Training β β β β
β β β’ Meetings β ββββββββββββββββββββββββββ β
β ββββββββββββββββ β
β β
β βββββββββββββββββββββββ SYNC ENGINE βββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββββββ β
β β SCHEDULED β β REAL-TIME β β WEBHOOK LISTENERS β β
β β Every 10min β β On change β β Google Push / Outlook β β
β β (cron job) β β (job queue) β β Subscriptions β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Connection Flow (Employee)
βββββββββββ βββββββββββββββ ββββββββββββββββ ββββββββββββββββ βββββββββββ
β OPEN ββββΆβ CHOOSE ββββΆβ OAUTH LOGIN ββββΆβ GRANT ββββΆβ SYNCING β
β Calendarβ β Provider β β Google / β β Calendar β β Active β
β App β β (3 options) β β Outlook β β Permissions β β β
βββββββββββ βββββββββββββββ ββββββββββββββββ ββββββββββββββββ βββββββββββ
β β
β iCal Path β
ββββΆ Copy Feed URL βββΆ Paste in Calendar App ββββββββββββ
Event Aggregation
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EVENT SOURCES β UNIFIED CALENDAR β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Work & Scheduling βββ β
β β’ Shifts β β
β β’ Availability ββββ β
β β β β
β Time Off ββββββββββββ€ β ββββββββββββββββββββ β
β β’ Leave Requests β ββββΆβ CalendarEvents ββββΆ JSON API β
β β’ Holidays β β β Service ββββΆ iCal Feed β
β β β β (Aggregator) ββββΆ Push Sync β
β Recruiting ββββββββββ€ β ββββββββββββββββββββ β
β β’ Interviews β β β
β ββββ β
β Development βββββββββ€ β
β β’ Training β β
β β’ Tasks β β
β β β
β Management ββββββββββ€ β
β β’ 1:1 Meetings β β
β β’ Review Cycles β β
β β’ Business Events β β
β β β
β Wellness ββββββββββββ β
β β’ Benefits Events β
β β’ Onboarding β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Features
π Multi-Provider Calendar Integration
Connect to the calendar service your team already relies on.
| Provider | Auth Method | Real-Time Sync | Push Notifications | iCal Feed |
|---|---|---|---|---|
| Google Calendar | OAuth 2.0 (via SSO config) | β | β (Webhooks) | β |
| Microsoft Outlook | OAuth 2.0 (Entra ID / Graph API) | β | β (Subscriptions) | β |
| iCal / CalDAV | Signed URL token | β | β | β |
- Google and Outlook use the same SSO configuration the employee logged in with for a seamless experience
- iCal generates a signed, read-only feed URL that works with Apple Calendar, Thunderbird, or any calendar client
- Credentials are encrypted at rest using Rails encrypted attributes
- Each user can connect one integration per provider per business
π Supported Event Types
The Calendar app aggregates events from across the platform into a single calendar view.
| Event Type | Color | Source | Always Available |
|---|---|---|---|
| Work Shifts | π’ Green | Scheduling module | β |
| Time Off / Leave | π΅ Blue | Leave Management | β |
| Company Holidays | π‘ Yellow | Business holidays | β |
| Training & Development | π£ Purple | Training app | Feature-dependent |
| Interviews | π΄ Red | Recruiting / Job Board | Feature-dependent |
| Tasks & Deadlines | π΅ Teal | Tasks app / EPMS | Feature-dependent |
| Business Events | β« Dark | Performance cycles | Feature-dependent |
| 1:1 Meetings | π£ Deep Purple | EPMS Meetings | Feature-dependent |
| Wellness & Benefits | π Green | Benefits Management | Feature-dependent |
| Onboarding Checkpoints | π€ Blue | Onboarding Hub | Feature-dependent |
Feature-dependent event types appear automatically when their corresponding marketplace app is enabled.
β‘ Sync Engine
Three layers of synchronization keep calendars current.
| Sync Mode | Trigger | Latency | Use Case |
|---|---|---|---|
| Scheduled Sync | Cron job every 10 minutes | β€ 10 min | Baseline sync for all integrations |
| Real-Time Sync | Shift/leave created or updated | Seconds | Immediate push on schedule changes |
| Webhook Sync | Google/Outlook push notification | Seconds | External calendar changes trigger re-sync |
CalendarSyncAllJobruns on a 10-minute cron, queuing individualCalendarSyncJobworkers for each integration that is due- Each integration tracks
last_sync_atand respects configurable sync frequency (default: 30 minutes) - Sync jobs use exponential backoff retry (up to 3 attempts) and automatically discard unrecoverable errors like revoked tokens
- Push notification channels are automatically renewed by
CalendarPushNotificationRenewalJob
π± iCal Feed (Subscribe URL)
For users who prefer a read-only subscription without OAuth:
- A signed URL is generated per user using
Rails.application.message_verifier(:calendar_feed) - The feed serves standard
.icsformat with events from the past 30 days to 90 days ahead - Events include emoji prefixes for quick visual identification (πΌ Shift, ποΈ Leave, π Holiday, π Training, etc.)
- Works with any calendar client that supports iCal subscriptions β Apple Calendar, Thunderbird, Yahoo Calendar, etc.
π§ Sync Settings (Per Integration)
Each connected calendar integration has granular sync controls.
| Setting | Default | Description |
|---|---|---|
| Sync Shifts | β On | Push work shift events to external calendar |
| Sync Leave Requests | β On | Push approved time off |
| Sync Holidays | β On | Push company holidays |
| Sync Interviews | β On | Push interview appointments |
| Sync Training | β On | Push training due dates |
| Sync Tasks | β On | Push task deadlines |
| Sync Business Events | β On | Push performance cycles and deadlines |
| Sync 1:1 Meetings | β On | Push EPMS meetings |
| Event Visibility | Private | Calendar event privacy setting |
| Include Location | β On | Add location details to events |
| Include Description | β Off | Keep events clean by default |
| Sync Direction | Push to External | One-way from MangoApps to calendar |
π Sync Monitoring & Logs
Every sync operation is tracked with detailed logs.
| Metric | What It Tracks |
|---|---|
| Events Created | New events pushed to external calendar |
| Events Updated | Modified events re-synced |
| Events Deleted | Removed events cleaned up |
| Events Skipped | Unchanged events not needing sync |
| Duration | How long the sync took |
| Status | Success, Error, Partial, or Running |
Sync logs use atomic SQL counter increments to prevent race conditions, and cap stored event details at 100 entries per log to control database size.
π Connection Attempt Tracking
Failed OAuth connection attempts are tracked for visibility and troubleshooting.
| Field | Purpose |
|---|---|
| Provider | Google, Outlook, or iCal |
| Status | Pending, Success, or Failed |
| Error Type | unauthorized_client, access_denied, invalid_client, redirect_uri_mismatch, etc. |
| Admin Recommendation | Actionable fix steps (e.g., βAdd callback URL to Google Cloud Consoleβ) |
| IP & User Agent | Security audit trail |
User Roles & Permissions
| Capability | Employee | Manager | HR | Admin |
|---|---|---|---|---|
| View unified calendar | β | β | β | β |
| Connect own calendar (Google/Outlook/iCal) | β | β | β | β |
| Toggle sync on/off for own integration | β | β | β | β |
| Trigger manual sync | β | β | β | β |
| Disconnect own calendar | β | β | β | β |
| Subscribe via iCal feed URL | β | β | β | β |
| View own sync logs | β | β | β | β |
| Access admin settings | β | β | β | β |
| Enable/disable calendar sync globally | β | β | β | β |
| Configure allowed providers | β | β | β | β |
| Toggle provider availability (Google/Outlook/iCal) | β | β | β | β |
| Choose which event types sync | β | β | β | β |
| Set sync frequency | β | β | β | β |
| Select OAuth configuration per provider | β | β | β | β |
| View all user integrations | β | β | β | β |
| Toggle sync for any userβs integration | β | β | β | β |
| Trigger sync for any user | β | β | β | β |
| Reset settings to defaults | β | β | β | β |
| View organization-wide sync statistics | β | β | β | β |
Admin Configuration
Settings Dashboard
Admins access calendar settings from the appβs Settings tab. The configuration is organized into sections:
Core Settings
| Setting | Default | Description |
|βββ|:ββ-:|ββββ-|
| Calendar Sync Enabled | β
| Master switch for all calendar sync |
| Allow User Self-Setup | β
| Let employees connect their own calendars |
| Sync Frequency | 30 min | How often the scheduled sync runs |
| Event Prefix | (empty) | Optional prefix for all synced events |
| Make Events Read-Only | β
| Prevent external edits to synced events |
Provider Settings
| Setting | Default | Description |
|βββ|:ββ-:|ββββ-|
| Google OAuth Enabled | β
| Allow Google Calendar connections |
| Outlook OAuth Enabled | β
| Allow Outlook connections |
| iCal Enabled | β
| Allow iCal feed subscriptions |
Automation Settings
| Setting | Default | Description |
|βββ|:ββ-:|ββββ-|
| Auto-Sync New Shifts | β
| Push new shifts immediately |
| Auto-Sync Shift Changes | β
| Push shift modifications immediately |
| Auto-Sync Leave Requests | β
| Push approved leave immediately |
| Enable Real-Time Sync | β
| Trigger sync on data changes |
| Notification on Sync Errors | β
| Alert on failed syncs |
| Conflict Resolution | Manual | How to handle event conflicts |
| Require Admin Approval | β | Require admin approval for new connections |
| Sync Historical Events | β | Sync events from the past |
| Max Days Ahead | 60 | How far into the future to sync |
Integration Mode
The Calendar app operates in one of three modes:
| Mode | Description |
|---|---|
| Disabled | Calendar sync is turned off entirely |
| Admin Managed | Sync is enabled but only admins can set up integrations |
| User Self-Setup | Employees can connect their own calendars (default) |
OAuth Configuration
Admins can select which SSO/OAuth configuration is used for each provider:
- Google Calendar β uses
google_oauth2SSO configurations (business-level or system-level) - Microsoft Outlook β uses
entra_idSSO configurations (business-level or system-level) - Priority order: Userβs login SSO β Admin-selected config β Business default β System default
Statistics Dashboard (Admin View)
| Metric | Description |
|---|---|
| Total Integrations | All calendar connections across the business |
| Active Integrations | Connections in βactiveβ status |
| Sync Enabled | Connections with sync turned on |
| Recent Syncs (24h) | Syncs completed in the last 24 hours |
| Failed Syncs (24h) | Syncs that errored in the last 24 hours |
| Providers Breakdown | Count per provider (Google, Outlook, iCal) |
Mobile Experience
The Calendar app includes a dedicated mobile interface accessible at /m/apps/calendar:
- Upcoming Events View β See the next 7 days of shifts, leave, and holidays at a glance
- Integrations List β View all connected calendars with status indicators
- Toggle Sync β Enable or disable sync per integration with a single tap
- Manual Sync β Queue an immediate sync from mobile
- Provider Availability β See which providers are available to connect
The mobile interface uses the shared mobile layout with dark mode support, touch-optimized targets, and offline detection.
Getting Started
For Employees
- Open the Calendar app from the marketplace sidebar
- Choose your provider β Google Calendar, Outlook, or iCal
- For Google/Outlook: Click βConnectβ and sign in with your work account. Grant calendar permissions when prompted
- For iCal: Copy the generated feed URL and paste it into your calendar appβs βSubscribe to Calendarβ feature
- Verify the connection β Your shifts and upcoming events should appear in your external calendar within minutes
- Customize sync settings β Toggle which event types you want synced from the integration detail page
For Admins
- Enable the Calendar app from the Marketplace
- Open Settings and verify the master sync toggle is on
- Configure providers β Enable Google, Outlook, and/or iCal based on your organizationβs needs
- Select OAuth configurations β Choose which SSO configuration each provider should use
- Set sync preferences β Adjust frequency, event types, and automation settings
- Monitor adoption β Use the statistics dashboard to track how many employees have connected
Best Practices
| Practice | Recommendation |
|---|---|
| Start with defaults | The default configuration enables all providers and event types β a good starting point for most organizations |
| Use SSO alignment | When possible, use the same Google/Microsoft account for SSO login and calendar sync for a seamless experience |
| Monitor failed syncs | Check the admin statistics dashboard weekly for failed sync counts; expired tokens are the most common issue |
| Keep events private | The default βprivateβ visibility protects employee schedule details from being visible to calendar-sharing recipients |
| Use iCal for read-only needs | If employees only need to see their schedule (not sync interactively), the iCal feed is the simplest option |
| Set a reasonable sync frequency | 30 minutes is the default and works for most teams. Reduce to 15 minutes for fast-paced shift environments |
| Enable real-time sync | For shift-based organizations, real-time sync ensures last-minute schedule changes reach employees immediately |
| Review connection attempts | Use the connection attempt log to diagnose OAuth setup issues before employees report problems |
Troubleshooting
| Issue | Likely Cause | Fix |
|---|---|---|
| βCalendar sync is not enabledβ | Admin has not enabled sync | Admin enables via Settings β Core Settings |
| βGoogle OAuth not configuredβ | No SSO configuration for google_oauth2 |
Admin configures Google OAuth in SSO settings |
| βCalendar credentials could not be decryptedβ | Encryption key mismatch (e.g., after environment migration) | Employee reconnects calendar via the Reconnect button |
| Events not appearing | Sync has not run yet or event type is disabled | Trigger manual sync; verify event type is enabled in settings |
| βRate limit exceededβ | More than 60 API requests per minute | Wait 1 minute and retry |
| βAuthorization failedβ | Token expired or revoked | Click Reconnect to re-authenticate with the provider |
| iCal feed shows old data | Client caches the feed | Most iCal clients refresh every 15-60 min; wait for the next refresh |
Related Resources
- Scheduling & Teams β Manage the shifts that sync to calendars β Scheduling & Teams App Overview
- Time & Attendance β Track clock-ins alongside synced shift events β Time & Attendance App Overview
- Leave Management β Approved leave flows into the calendar automatically
- Training β Training deadlines sync as calendar events when the Training app is enabled
- EPMS (Performance Management) β 1:1 meetings and review cycles appear as calendar events
Your work schedule, your calendar, always in sync β MangoApps Workforce Calendar.