semics Events
Events bookings and ticketing for EmDash
@semics.co.uk/semics-eventsOr open Registry in your EmDash admin and search for this name.
Overview
Event bookings for EmDash, built on your own content. Each entry of your events collection becomes bookable: ticket types, capacity and holds that never oversell, a booking page, confirmation emails with calendar files, self-service cancellation, a waitlist that offers freed seats, recurring events, attendee CSV export and check-in from the admin.
- Works without JavaScript; tested against WCAG 2.2 AA at 320 px.
- English and Arabic built in, with right-to-left layouts.
- Asks only for
content:read,schema:read,email:sendandnetwork:requestto Cloudflare Turnstile. - Booking data is erased after a period you choose; deletion on request from the admin.
The booking form and pages come from the npm package @semics-tech/emdash-events (the registry delivers the
core only).
Events Pro (same plugin, separate licence) adds paid tickets with Stripe, promo codes, attendee questions, waivers through semics E-sign, QR passes with a check-in screen, reminders and broadcasts, sales reports and MCP tools.
Documentation: https://github.com/semics-uk/emdash-plugins/tree/main/apps/docs/pages
Permissions
Plugins get only the capabilities they declare and you approve. Your EmDash admin lists these again before anything installs.
FAQ
Why is there no booking form after installing from the registry? The registry installs the core only.
Add the npm package @semics-tech/emdash-events for the form and pages.
Bookings are limited to 10 in 10 minutes for everyone. EmDash does not know visitors' IP addresses. Off
Cloudflare, set trustedProxyHeaders to the header your proxy overwrites, and only that one.
Emails are slow. The plugin sends two emails a minute, rendered from current data.
Nothing happens on schedule. Open the events list or a plugin admin page once after deploying: the plugin then schedules its own jobs.
Can I sell paid tickets? With Events Pro and Stripe.
Does it work in my language? The visitor pages ship in English and Arabic, and you can add more. Emails, calendar files and the admin are English.
More: https://github.com/semics-uk/emdash-plugins/blob/main/apps/docs/pages/faq.md
Security
Report security problems to security@semics.co.uk, not in a public issue.
- Booking access tokens are random, stored only as hashes, and never put in URLs. Emailed links carry a one-time code that is used only when the visitor presses a button, so mail scanners cannot use it up.
- Every form the plugin adds refuses posts from other sites. Refusals never reveal another buyer's data.
- Seat counts are checked as they are written, so concurrent bookings cannot oversell.
- Turnstile protects checkout and the waitlist. Bookings are limited per visitor IP address.
- The only outside host is
challenges.cloudflare.com. Personal data is erased after the retention period.
Details: https://github.com/semics-uk/emdash-plugins/blob/main/apps/docs/pages/configure.md
Installation
- Install the core from the registry, or with npm together with the UI kit:
pnpm add @semics-tech/emdash-events @emdash-cms/sandbox-workerd
- Add the integration and the UI plugin to
astro.config.mjs. A core installed from the registry has anr_…id: pass it aseventsIntegration({ pluginId })and leave the core out ofsandboxed.
import semicsEvents from "@semics-tech/emdash-events";
import { eventsIntegration } from "@semics-tech/emdash-events/integration";
import { eventsUi } from "@semics-tech/emdash-events/ui";
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
output: "server",
integrations: [
eventsIntegration(),
emdash({
siteUrl: "https://events.example.com",
sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
sandboxed: [semicsEvents],
plugins: [eventsUi()],
}),
],
});
- Create an
eventscollection (title,starts_at,ends_at,timezone,venue), or map yours in the settings. - Set
EMDASH_ENCRYPTION_KEY, an email provider, and Turnstile keys. - On an event entry, open Tickets & booking and choose Enable booking.
Full guide: https://github.com/semics-uk/emdash-plugins/blob/main/apps/docs/pages/install.md
Keep exploring
More plugins like semics Events
Browse by keyword, or see everything @semics.co.uk publishes.