Campaigns And Calendar
Create A Campaign
Campaigns requires the community_campaigns feature. Open Campaigns, select Create Campaign, enter the details, optionally use Add metadata, then create it. The list supports search, filters, archived campaigns, and card or table display.
| Control | Result | Permission checked by C2 | API evidence |
|---|---|---|---|
| Open list or detail | Views campaigns and campaign events. | campaigns:read | Standard campaign reads derive campaigns:read. |
| Create Campaign | Creates the campaign. | campaigns:create | Standard create derives campaigns:create. |
| Modify | Opens campaign editing. | campaigns:update | Standard update derives campaigns:update. |
| Archive / Unarchive | Toggles archived state. | campaigns:update | PUT /campaigns/:id/archive explicitly requires campaigns:update. |
| Delete | Deletes after confirmation. | campaigns:delete | Standard delete derives campaigns:delete. |
A 402 feature limit reached error means the community plan prevents the save. It does not mean the staff member needs a broader role.
Create And Run A Campaign Event
Open a campaign and select Create event. C2 uses the campaign ID in the current URL; confirm the campaign name before saving. The wizard has Details, Recurrence, Notifications, Notification timing, and Review, like a standalone event.
| Control | Result | Permission checked by C2 |
|---|---|---|
| Create event / create page | Creates a campaign event. | campaigns:create |
| Modify | Opens the campaign-event editor. | campaigns:update |
| Lock / Unlock | Changes lock state. | campaigns:update |
| Delete | Removes the event after confirmation. | campaigns:delete |
API caveat: C2 gates campaign screens and controls with
campaigns:*. The campaign-event controller explicitly protects only draft list/create operations (campaign-events:read-draftsandcampaign-events:create-drafts); its normal CRUD methods do not carry aCommunityPermissionCheckannotation. The generic layer may enforce them, but this must be release-tested rather than assumed.
The API supports campaign-event drafts, but the current C2 create page exposes a single create path rather than a Save draft button. Do not promise campaign-event drafting to staff until the panel exposes it.
Attendance on a campaign event
The campaign-event screen uses the same attendance UI condition as standalone events: both events:manage-attendance and campaign-events:manage-attendance are required. See Events And Attendance for the attendance-status setup and verification note.
Use The Calendar
Open Calendar to view published standalone and campaign events in month, week, day, or list mode. Select an entry to open the relevant event. C2 uses browser locale and timezone for presentation.
| Action | Permission | API evidence |
|---|---|---|
| Open and view published entries | calendar:read | GET /community/:communityId/calendar is explicitly protected by calendar:read. |
The calendar endpoint returns published events only. Drafts and operationally hidden records should be reviewed from their event or campaign area, not assumed visible on the calendar.
Access Checklist
| Job | Minimum known keys |
|---|---|
| Campaign reader | campaigns:read |
| Campaign planner | campaigns:read, campaigns:create |
| Campaign manager | Planner keys plus campaigns:update; add campaigns:delete only when deletion is authorised |
| Calendar viewer | calendar:read |
Related: Events And Attendance and Discord Configuration.