Event Registration
An admin creates the event once. From there the public signs up, a paid ticket goes through Stripe checkout and a webhook confirms the seat, a free ticket is confirmed on the spot. No human touches the money path.
One setup step, then hands off
The only human step is the first one. Everything between a visitor clicking register and a confirmed seat in the admin hub is automated.
How each step works
Name, dates, location, capacity, and one or more ticket tiers with a price (or none). The event is defined once in the admin hub, and that definition drives everything downstream: the public page, the checkout, and the roster.
A public signup page is generated from the event record, and it only takes registrations while the event is open. There is no second copy of the details to keep in sync, so the page can never disagree with the event.
Registration and payment are one motion. Submitting the form reserves the seat atomically against capacity (a full tier says so, a full event waitlists). A paid ticket holds that seat for 30 minutes while the attendee checks out through Stripe, which handles cards, receipts, and compliance. A free ticket skips Stripe and is confirmed immediately. Nobody at Edge8 ever sees or handles card details.
When Stripe confirms the payment, its webhook flips the held registration to registered and emails the ticket link, once. Every write is guarded by the row's current status, so a redelivered webhook repeats nothing, and an expired checkout releases the hold so the seat frees up. A paid seat is only counted when the money is real, so the attendee list and the revenue never diverge.
Every registration appears on the admin event roster as it happens: registered, pending payment, waitlisted, checked in, and revenue collected, with a CSV export. Each registrant also enters the CRM lead queue. Event day starts with a list that is already correct.
The seven elements
Every workflow we document has the same anatomy: seven elements, each assigned to a human, a machine, or both. This is the Centaur Map from our workflow design method.
An admin creates the event once; from then on, each registration is triggered by an attendee.
The event record: name, date, capacity, price. One definition drives everything downstream.
Is there a seat, and is the payment confirmed? The database reserves the seat atomically; for a paid ticket, Stripe answers the second question and only its answer confirms the seat.
A free ticket is confirmed on the spot. A paid ticket holds its seat while the attendee checks out, and the Stripe webhook confirms it seconds after payment.
A confirmed seat with a ticket code, tied to a real payment when the ticket has a price. Attendance and revenue are the same number.
Stripe sends the receipt; Edge8 emails the ticket link once per seat; the roster on the admin event page updates as it happens.
Registered, pending, waitlisted and checked-in seats against capacity, plus revenue collected per event, read live from the roster.
The standing rules
- The event record is the single source for page, price, and capacity
- No payment, no paid seat: a held seat only counts once Stripe confirms; free tickets confirm instantly
- Card details never touch Edge8 systems
- The attendee list is read from the system, never kept in a spreadsheet
Why it works
- One definition drives everything, so nothing goes out of sync
- Webhook confirmation makes revenue and attendance the same number, and redeliveries are harmless
- Zero manual steps between signup and seat means zero backlog
- Admins spend event week on the event, not on reconciliation