[Admin] Auditing cancellations
Every cancellation — member-initiated or admin-initiated — writes an entry to the `membership-package-history` collection. The log is append-only: no one (including platform admins via the UI) can edit or delete entries.
What's recorded for each cancellation:
- Who cancelled (member uid or admin uid)
- Their name and when
- The membership id, tier/plan id, organization id
- The effective end date
- Whether the member was grandfathered (notice period snapshotted at signup) or used the current policy
- Any reason the admin supplied (optional)
What's recorded for each policy change:
- Who changed the policy (admin uid + name)
- Before/after notice period values
- Timestamp and optional reason
Viewing the log:
- Per-package: click the History panel on any tier/plan card in your admin view. Shows all actions on that specific package.
- Organisation-wide: use the Scheduled changes dashboard widget above the tier/plan list — it spans every package.
Compliance uses:
- Proof of disclosure at signup (the `cancellationPolicyAcknowledgedAt` timestamp on the membership doc).
- Proof of notice at cancel time (the history entry + the computed `effectiveDate`).
- Proof of policy version (the `cancellationPolicyAcknowledgedVersion` integer increments when we refine the policy text).
Exporting:
History entries can be exported via the backend CF `getMembershipPackageHistory` (admin-only callable). The current UI shows the most recent 50 entries; for compliance exports, contact support for a full dump.