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

# Notification Channels Reference

> Available notification channels, event types by module, delivery configuration, and notification preferences schema for PlaneConnection.

PlaneConnection delivers notifications through multiple channels for safety events, trip updates, crew changes, FBO activity, billing, and compliance deadlines.

## Available Channels

Four notification delivery channels are available, each suited to different urgency levels.

| Channel    | Provider                              | Delivery Speed                         | Best For                                                                         |
| ---------- | ------------------------------------- | -------------------------------------- | -------------------------------------------------------------------------------- |
| **Email**  | Resend (primary), SendGrid (fallback) | Near-instant (typically \< 30 seconds) | Detailed notifications, records that need archival, compliance communications    |
| **SMS**    | Twilio                                | Near-instant (typically \< 10 seconds) | Critical alerts requiring immediate attention, time-sensitive crew notifications |
| **Push**   | Web Push API                          | Instant (when browser/app is active)   | Real-time updates, status changes, assignment notifications                      |
| **In-App** | Native (WebSocket)                    | Instant                                | Low-urgency updates, informational messages, activity feed items                 |

### Channel Fallback Behavior

If a primary channel fails, the system falls back according to these rules:

| Failure                           | Fallback                                                         |
| --------------------------------- | ---------------------------------------------------------------- |
| Email delivery failure (bounce)   | Retry once after 5 minutes, then log as undeliverable            |
| SMS delivery failure              | Fall back to email, log SMS failure                              |
| Push not available (user offline) | Queue for delivery when user reconnects; also deliver via in-app |
| In-app (user not connected)       | Queue in notification center for next session                    |

<Note>
  SMS notifications require a verified phone number on the user's profile. Users without a phone
  number on file will not receive SMS notifications, and the system falls back to email for those
  events.
</Note>

## Notification Event Types by Module

### Safety Management (SMS)

| Event                              | Default Channels    | Urgency  | Description                                                |
| ---------------------------------- | ------------------- | -------- | ---------------------------------------------------------- |
| New safety report submitted        | Email, In-App       | Normal   | A team member submitted a new safety report                |
| Report assigned for investigation  | Email, Push, In-App | High     | An investigation has been assigned to you                  |
| Investigation status change        | Email, In-App       | Normal   | An investigation you are involved in changed status        |
| CPA assigned                       | Email, Push, In-App | High     | A corrective/preventive action was assigned to you         |
| CPA approaching deadline           | Email, SMS, Push    | Critical | A CPA is within 7 days of its due date                     |
| CPA overdue                        | Email, SMS, Push    | Critical | A CPA has passed its due date                              |
| Risk assessment requires review    | Email, In-App       | Normal   | A risk assessment needs your review or approval            |
| SPI threshold breached             | Email, SMS, Push    | Critical | A safety performance indicator crossed its alert threshold |
| Safety committee meeting scheduled | Email, In-App       | Normal   | A safety committee meeting has been scheduled              |
| Compliance deadline approaching    | Email, SMS, Push    | Critical | A regulatory compliance deadline is within 30 days         |
| Document requires signature        | Email, Push, In-App | High     | A safety document needs your signature or acknowledgment   |
| Safety bulletin published          | Email, In-App       | Normal   | A new safety bulletin was published to your workspace      |

### Flight Operations (Ops)

| Event                       | Default Channels    | Urgency  | Description                                                             |
| --------------------------- | ------------------- | -------- | ----------------------------------------------------------------------- |
| Trip created                | Email, In-App       | Normal   | A new trip was created in the system                                    |
| Trip assigned (crew)        | Email, SMS, Push    | High     | You were assigned to a trip as PIC, SIC, or cabin crew                  |
| Trip status change          | Email, Push, In-App | Normal   | A trip you are involved in changed status                               |
| Trip cancelled              | Email, SMS, Push    | Critical | A trip you are assigned to was cancelled                                |
| Schedule conflict detected  | Email, SMS, Push    | Critical | A scheduling conflict was detected for crew or aircraft                 |
| Duty time limit approaching | Email, SMS, Push    | Critical | A crew member is approaching duty time limits (14 CFR 135.267)          |
| Aircraft status change      | Email, Push, In-App | High     | An aircraft changed operational status (e.g., grounded, in maintenance) |
| Due item approaching        | Email, Push, In-App | High     | An aircraft or crew due item is within its warning window               |
| Due item overdue            | Email, SMS, Push    | Critical | An aircraft or crew due item has passed its due date                    |
| FRAT score elevated         | Email, SMS, Push    | Critical | A pre-departure FRAT assessment scored above the caution threshold      |
| Passenger manifest updated  | Email, In-App       | Normal   | A passenger manifest was modified for an upcoming trip                  |
| Expense submitted           | Email, In-App       | Normal   | A crew member submitted an expense for approval                         |
| Charter request received    | Email, Push, In-App | High     | A new charter marketplace request matches your fleet profile            |

### FBO Management

| Event                     | Default Channels    | Urgency  | Description                                                               |
| ------------------------- | ------------------- | -------- | ------------------------------------------------------------------------- |
| New booking created       | Email, In-App       | Normal   | A new hangar or tiedown booking was created                               |
| Booking check-in          | Push, In-App        | Normal   | A guest has checked in                                                    |
| Booking check-out         | Push, In-App        | Normal   | A guest has checked out                                                   |
| Payment received          | Email, In-App       | Normal   | A payment was received on a booking or POS order                          |
| Payment overdue           | Email, SMS          | High     | A booking or invoice payment is past due                                  |
| Fuel delivery received    | Email, Push, In-App | Normal   | A fuel delivery was received and logged                                   |
| Fuel QC inspection failed | Email, SMS, Push    | Critical | A fuel quality control inspection failed -- per NATA Safety 1st standards |
| Low fuel tank level       | Email, SMS, Push    | High     | A fuel tank has dropped below its reorder threshold                       |
| POS low stock alert       | Email, In-App       | Normal   | A tracked inventory item is at or below its reorder point                 |
| Customer portal message   | Email, Push, In-App | Normal   | A customer sent a message through the portal                              |

### Billing and Financial

| Event                   | Default Channels | Urgency | Description                                              |
| ----------------------- | ---------------- | ------- | -------------------------------------------------------- |
| Invoice generated       | Email, In-App    | Normal  | A new invoice was created                                |
| Invoice paid            | Email, In-App    | Normal  | An invoice was paid in full                              |
| Invoice overdue         | Email, SMS       | High    | An invoice is past its due date                          |
| Subscription renewal    | Email            | Normal  | Your PlaneConnection subscription is approaching renewal |
| Payment method expiring | Email, SMS       | High    | A saved payment method is expiring within 30 days        |

### System and Security

| Event                             | Default Channels | Urgency | Description                                          |
| --------------------------------- | ---------------- | ------- | ---------------------------------------------------- |
| New user invitation               | Email            | Normal  | A new team member was invited to the workspace       |
| User role changed                 | Email, In-App    | Normal  | Your role was changed in the workspace               |
| Two-factor authentication enabled | Email            | Normal  | 2FA was enabled on your account                      |
| Login from new device             | Email, Push      | High    | A login was detected from a previously unseen device |
| Password changed                  | Email            | Normal  | Your password was changed                            |
| API key created                   | Email            | Normal  | A new API key was generated for the workspace        |
| Data export completed             | Email, In-App    | Normal  | A requested data export is ready for download        |
| Privacy request received          | Email, Push      | High    | A data privacy request (GDPR/CCPA) was submitted     |

## Delivery Configuration

### Workspace-Level Settings

Administrators control default notification behavior for all workspace members:

| Setting                         | Type     | Default               | Description                                                         |
| ------------------------------- | -------- | --------------------- | ------------------------------------------------------------------- |
| `email_enabled`                 | Boolean  | `true`                | Master toggle for email notifications                               |
| `sms_enabled`                   | Boolean  | `false`               | Master toggle for SMS notifications (requires Twilio configuration) |
| `push_enabled`                  | Boolean  | `true`                | Master toggle for push notifications                                |
| `in_app_enabled`                | Boolean  | `true`                | Master toggle for in-app notifications                              |
| `quiet_hours_start`             | Time     | `22:00`               | Start of quiet hours (non-critical notifications deferred)          |
| `quiet_hours_end`               | Time     | `06:00`               | End of quiet hours                                                  |
| `quiet_hours_timezone`          | Timezone | Workspace timezone    | Timezone for quiet hours calculation                                |
| `quiet_hours_override_critical` | Boolean  | `true`                | Deliver critical notifications during quiet hours                   |
| `email_from_name`               | String   | Workspace name        | Display name for outgoing email notifications                       |
| `email_reply_to`                | String   | Workspace admin email | Reply-to address for notification emails                            |

<Note>
  Disabling a channel at the workspace level prevents all users from receiving notifications through
  that channel, regardless of personal preferences. Workspace-level settings override individual
  user settings.
</Note>

### SMS Provider Configuration

SMS notifications require a configured Twilio integration (**Settings > Integrations**).

| Setting               | Description                                          |
| --------------------- | ---------------------------------------------------- |
| `twilio_account_sid`  | Twilio Account SID                                   |
| `twilio_auth_token`   | Twilio Auth Token (stored encrypted)                 |
| `twilio_phone_number` | Twilio phone number used as the sender               |
| `sms_rate_limit`      | Maximum SMS messages per user per hour (default: 10) |

## Notification Preferences Schema

Each user has a preferences object that controls their individual notification behavior. Preferences are structured by event category and channel.

```json theme={}
{
  "preferences": {
    "safety": {
      "new_report": { "email": true, "sms": false, "push": true, "in_app": true },
      "investigation_assigned": { "email": true, "sms": true, "push": true, "in_app": true },
      "cpa_deadline": { "email": true, "sms": true, "push": true, "in_app": true },
      "spi_breach": { "email": true, "sms": true, "push": true, "in_app": true }
    },
    "ops": {
      "trip_assigned": { "email": true, "sms": true, "push": true, "in_app": true },
      "trip_cancelled": { "email": true, "sms": true, "push": true, "in_app": true },
      "duty_time_warning": { "email": true, "sms": true, "push": true, "in_app": true },
      "schedule_conflict": { "email": true, "sms": true, "push": true, "in_app": true }
    },
    "fbo": {
      "booking_created": { "email": true, "sms": false, "push": false, "in_app": true },
      "fuel_qc_failed": { "email": true, "sms": true, "push": true, "in_app": true },
      "payment_overdue": { "email": true, "sms": true, "push": false, "in_app": true }
    },
    "billing": {
      "invoice_overdue": { "email": true, "sms": true, "push": false, "in_app": true }
    },
    "system": {
      "new_device_login": { "email": true, "sms": false, "push": true, "in_app": false }
    }
  },
  "digest": {
    "enabled": true,
    "frequency": "daily",
    "time": "08:00",
    "timezone": "America/New_York",
    "include_categories": ["safety", "ops", "fbo"]
  }
}
```

<Note>
  A daily or weekly digest email summarizing all non-critical notifications is available. Digest settings are configured in **Account > Notification Preferences**.
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Configure Your Workspace" href="/how-to/admin/configure-workspace">
    Notification channel and quiet hours configuration.
  </Card>

  <Card title="Set Up Integrations" href="/how-to/admin/set-up-integrations">
    Twilio and email provider configuration.
  </Card>

  <Card title="User Roles" href="/reference/user-roles">
    Role-based notification visibility and defaults.
  </Card>

  <Card title="Permissions Matrix" href="/reference/permissions">
    Which roles can configure workspace-level notification settings.
  </Card>
</CardGroup>
