Events And Attendance
Before You Create An Event
Events requires the community_events community feature. C2 shows its navigation entry to staff with events:read; the create page is available to staff with the create permission. A 402 feature limit reached response is a plan limit, not a missing role permission.
Choose a normal event for a published standalone activity. Use a draft when another staff member must check its details before it appears in the normal event list.
Create Or Draft An Event
- Open Events and select Create Event.
- Complete Details, Recurrence, Notifications, Notification timing, and Review.
- On Review, select Save draft or Publish.
The wizard will not proceed without an event name and date/time. Add description, image, and metadata only when attendees need them. Recurrence can be none, weekly, biweekly, or monthly; use an end date for a series that must stop. C2 rejects incompatible recurrence settings, including a monthly recurrence without a day of month.
| Control | Result | Permission checked by C2 | API evidence |
|---|---|---|---|
| Create Event | Opens the wizard. | events:create | Standard event create derives events:create. |
| Publish | Creates a normal event. | events:create | Standard event create derives events:create. |
| Save draft | Creates a draft hidden from the normal list. | events:create-drafts | POST /events/drafts explicitly requires events:create-drafts. |
| Drafts | Opens the draft list. | events:read-drafts | GET /events/drafts explicitly requires events:read-drafts. |
Notification choices
Turn on Notify, select a Discord channel and optionally a role, then choose a reminder amount in Hours or Days. Turning notifications off clears the selected channel and role in C2. Check the destination before saving: this may create an external Discord notification. The feature does not replace Discord Configuration; the community must already have a usable Discord connection.
Run Or Change An Event
Open an event from the list. Normal event details use events:read; drafts also require events:read-drafts.
| Control | Result | Permission checked by C2 | API evidence |
|---|---|---|---|
| Modify | Opens edit mode. | events:update | The update endpoint derives events:update. |
| Save edited normal event | Saves the normal event. | events:create | C2 checks create, not update, for this save path. Test this combination before assigning a least-privilege role. |
| Save edited draft | Saves as a draft. | events:create-drafts | Explicit draft creation needs events:create-drafts. |
| Archive / Unarchive | Toggles archived state. | events:update | PUT /events/:id/archive explicitly requires events:update. |
| Lock / Unlock | Toggles the event lock. | events:update | C2 sends an event update; confirm the operational meaning of lock with your staff process. |
| Delete | Permanently removes the event after confirmation. | events:delete | Standard delete derives events:delete. |
| Save recurrence | Updates recurrence settings. | No explicit C2 check found | C2 calls a standard event update; verify with a test staff role before relying on it. |
Archive rather than delete when the record may be needed for attendance, reporting, or audit context. Locking is reversible, but should be agreed by the operations team before use.
Record Attendance
Event detail shows summary and unit views. In the unit view, choose a bulk status to apply one status to all listed members, or select Manage to change people one at a time. These controls stay disabled until C2 has both members and attendance statuses.
The current C2 condition for changing attendance is unusually strict: it requires both events:manage-attendance and campaign-events:manage-attendance, even on a standalone event. Give both to the attendance role until C2 is changed or tested otherwise.
Verification required:
CommunityAttendanceRecordControllerhas no explicit permission annotation on staff record and bulk endpoints; it relies on generic enforcement. The C2 UI condition above is exact, but test it in the deployed release before making it the final access policy.
Create attendance statuses
Open Events → Attendance statuses. This area needs the community_attendance_status feature. The sidebar accepts either attendance-statuses:read or the legacy attendance_status:read; use the key shown by the C2 permission picker for the community.
| Control | Result | Permission checked by C2 |
|---|---|---|
| Create | Adds a status staff can apply. | attendance-statuses:create |
| Edit | Changes a status. | attendance-statuses:update |
| Delete | Removes a status after confirmation. | attendance-statuses:delete |
Do not delete a status until staff have checked reporting and active event records that use it. Deletion is destructive.
Access Checklist
| Job | Minimum known keys |
|---|---|
| Event reader | events:read |
| Event planner | events:read, events:create; add events:create-drafts and events:read-drafts for drafts |
| Event manager | Planner keys plus events:update; add events:delete only to staff allowed to remove records |
| Attendance recorder | events:read, events:manage-attendance, campaign-events:manage-attendance, and the attendance-status read key |
Related: Campaigns And Calendar, Roles And Permissions, and Errors And Troubleshooting.