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

# Notification Types

> All notification types, when they are created, who receives them, and whether they include an action URL.

AspFox creates notifications automatically from backend events. Notifications are tenant-scoped — a user only sees notifications for their currently active tenant.

## Notification type reference

| Type                        | Title                  | When created                                                           | Who receives it            | Action URL          |
| --------------------------- | ---------------------- | ---------------------------------------------------------------------- | -------------------------- | ------------------- |
| `MemberInvited`             | Invitation sent        | `InviteMemberCommand` succeeds                                         | Tenant owner only          | `/settings/members` |
| `MemberJoined`              | New member joined      | `AcceptInvitationCommand` succeeds                                     | All tenant members         | `/settings/members` |
| `MemberRemoved`             | Member removed         | `RemoveMemberCommand` succeeds                                         | The removed user only      | None                |
| `OwnershipTransferred`      | Ownership transferred  | `TransferOwnershipCommand` succeeds                                    | New owner and former owner | None                |
| `SubscriptionUpgraded`      | Subscription activated | `checkout.session.completed` webhook                                   | All tenant members         | None                |
| `SubscriptionCanceled`      | Subscription canceling | `customer.subscription.updated` webhook (cancel\_at\_period\_end=true) | Tenant owner only          | None                |
| `SubscriptionPastDue`       | Payment failed         | `invoice.payment_failed` webhook                                       | Tenant owner only          | `/billing`          |
| `SubscriptionTrialExpiring` | Trial ending soon      | `TrialExpiryJob` (7-day and 1-day warnings)                            | Tenant owner only          | `/billing`          |
| `PaymentRecovered`          | Payment successful     | `invoice.payment_succeeded` webhook when previous status was PastDue   | Tenant owner only          | None                |

## Who receives each notification

**Tenant owner only** — notifications that require action from the owner, or that contain billing information the owner needs to act on. `MemberInvited`, `SubscriptionCanceled`, `SubscriptionPastDue`, `SubscriptionTrialExpiring`, `PaymentRecovered`.

**All tenant members** — notifications about workspace activity that is relevant to everyone. `MemberJoined`, `SubscriptionUpgraded`.

**Specific user only** — notifications targeted at a single individual. `MemberRemoved` goes to the member who was removed. `OwnershipTransferred` goes to both the new owner and the former owner.

## Notification payload

Each notification in the API response includes:

```json theme={null}
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "type": "SubscriptionPastDue",
  "title": "Payment failed",
  "message": "Your Pro subscription payment failed. Please update your payment method.",
  "isRead": false,
  "actionUrl": "/billing",
  "createdAt": "2025-05-01T09:00:00Z"
}
```

`actionUrl` is null for notification types that do not have one. The frontend renders a clickable link when `actionUrl` is present.

## How to add a notification type

See [Notification System → How to add a new notification](/core-concepts/notifications#how-to-add-a-new-notification-type) for the step-by-step guide.
