# Overview.Admin

## What it does for you

Events lets you publish events on your site. You create one event, set when it happens and how often it repeats, and materialise dated occurrences for the public listing, calendar, feed, and optional RSVP flow.

## Your screens

- **Events**: your list of events, with their schedule, venue, and visibility.
- **Event venues**: reusable places you can attach to events.
- **Event occurrences**: the individual dates materialised from each event, plus controls to cancel or reschedule one date.
- **Event registrations**: the people who have signed up, with their status, quantity, and staff controls for pending, confirmed, cancelled, and waitlisted attendees.
- **Event calendar**: an admin calendar of upcoming occurrences.

## What you can do

- Create an event with a schedule, recurrence, venue, visibility, and registration settings.
- Manage reusable venues with address and map details.
- Review and adjust the dates materialised from a recurring event.
- Confirm, cancel, or review attendee registrations.
- Scan upcoming events on the admin calendar or the dashboard widget.
- Choose native RSVP, an external booking link, both, or no booking for each event.
- Cancel or reschedule one generated occurrence without changing the rest of a recurring series.

## Where to find it

Go to **Content > Events** in the admin to create and manage events. Venues, occurrences, registrations, and the calendar live next to it under the same area.

## Setup and publishing

- Run `capell:events-install` to publish and run the package migrations, create the event page types and layouts, and provision an Events listing page with translations and URLs for every site that exists at that point. A site added later is not provisioned automatically by this package; include the installer or `EnsureEventPublishingSurfaceAction` in that site's setup.
- Saving an event does not currently materialise its occurrences, and the package does not register an occurrence-sync schedule or admin action. Your integration must run `SyncEventOccurrencesAction` after creating an event and after changing its schedule, recurrence, visibility, venue, or booking settings. Without occurrence records, the public listing, calendar, feeds, schema, and RSVP links have nothing to show.
- The default sync window is 31 days in the past through 365 days in the future. Adjust `CAPELL_EVENTS_RECURRENCE_SYNC_PAST_DAYS` and `CAPELL_EVENTS_RECURRENCE_SYNC_HORIZON_DAYS` when the integration needs a different window, and run sync again as the horizon advances.
- Enter a valid RRULE and an IANA timezone on the event. The form stores the rule as entered and does not validate its syntax; an invalid rule or timezone makes recurrence expansion fail.
- Creating the event record is not the same as publishing it. After creation, use the publish panel on the edit screen. Public output requires both the event and occurrence to be **Public**, the event to be within its publishing dates, and the event to have a page URL.

## Good to know

- Event, venue, occurrence, and registration access is controlled by separate Shield permissions. Non-global administrators are limited to records for their assigned sites; global administrators can work across sites.
- Recurrence sync upserts dates inside its window and preserves occurrence overrides, but it does not remove dates left behind after shortening or replacing an RRULE. Cancel obsolete occurrences or provide cleanup in the integration.
- A recurring occurrence can be cancelled or rescheduled as an override. Later recurrence syncs preserve that override instead of recreating the original date.
- Cancelling or rescheduling an occurrence does not cancel its registrations, send attendees a cancellation message, or withdraw or move existing reminder logs. Cancelling a registration also leaves its queued reminders in place. Contact attendees and reconcile queued notifications separately before relying on either admin action.
- Native RSVP is available only when the booking mode includes RSVP and the occurrence is publicly bookable. For capacity, both **Pending** and **Confirmed** registrations reserve places; waitlisted and cancelled registrations do not.
- Each public submission creates a separate registration; there is no duplicate-attendee check. Quantity must be positive but has no configured maximum when the occurrence has no capacity, so account for repeated or unusually large submissions in your operating process.
- Turn on **Waitlist enabled** so people can still register once an event is full. Promotion is strictly positional: if the first waitlisted party needs more places than are free, later smaller parties are not skipped. The scheduled reconciliation catches capacity that becomes available outside a cancellation action.
- Native RSVP collects name, email, optional phone, quantity, and a small submission payload in plaintext registration records. The package has no consent checkbox, timed retention, Privacy Center exporter or eraser, or automatic anonymisation; define the notice, lawful basis, access policy, and deletion process for your installation.
- Configure reminders per event with their offsets in minutes. Registration creates its confirmation and reminder logs after the database transaction, including for a waitlisted registration. Due reminders are processed every minute and waitlists every 15 minutes, so keep the application scheduler and a Laravel queue worker available.
- Notification logs are marked sent when the queued mail notification is dispatched, not when mail delivery is confirmed. A failed log is not retried by the scheduled processor, and there is no notification-log or retry screen; monitor the queue and mail transport and provide an operational retry path if delivery is critical.
- **External** and **Both** booking modes store an external URL and can expose it in Event structured data. The package's supplied listing and calendar views render only the native RSVP link, so ensure the event template renders the external URL before advertising external booking.
- The public listing, calendar feed, occurrence pages, and event schema include only eligible public occurrences; private, unpublished, stale, and cancelled occurrences are excluded.
- Public RSVP URLs use an encrypted occurrence reference, are scoped to the resolved site, and the form is private/no-store and noindex. Submissions are CSRF-protected and limited to six attempts per minute for each email-and-IP combination.
- Diagnostics checks recurrence expansion, capacity registration storage, public routes, model registration, and package dependencies. Use `capell:events-doctor` when an Events installation needs operational diagnosis.