Selling a live event sounds simple until you build it. A payment has to become a seat, the seat has to show up in the buyer's dashboard, and the meeting link should be useful at the right moment and not before. In VeloxonHub events are just another product type, so they go through the same cart and checkout as courses and memberships. The 30-second reel shows the flow. Here's what happens under the hood.
1. An event is a product with settings, not a separate system
The host creates an event in a 6-step drawer: details, type, schedule, registration, pricing and notifications. Under the hood it's a scheduling product with event settings (type, recurrence, capacity, replay) and one or more occurrences (start, end, time zone, meeting provider, join URL). If the host picks the built-in live room, the live session is created from the event's name and date, so there's no link to paste.
Prices are attached after the first save, through the same pricing model every other product uses. That keeps the Product List widget and the cart unaware of what an "event" is.
2. The widget and the cart don't special-case events
The Product List widget the host drops on a page reads the public products endpoint and renders events next to everything else, with their active prices, search, filters and an Add to Cart button. The cart and checkout work the same way for every product type.
3. Fulfilment happens on the paid order item
When an order is paid, an access service walks its items and grants access per product type. For a scheduling item, it creates the buyer's booking for that event. If the event needs approval (the waitlist option), the booking stays pending and the host is notified. The approval notice is sent after the payment is recorded, so a notification problem can never turn a successful payment into an error for the buyer.
4. Join is a time window, not just a link
The buyer's dashboard shows the booking in a calendar. The Join button only unlocks when two things are true:
- the booking is
confirmed,approvedorrescheduled, and - it's no more than 10 minutes before the start. For a recurring event, that means the next upcoming occurrence.
Before that, the card shows the date and time in the buyer's own time zone. Showing the link too early mostly produces people sitting alone in an empty room.
What we'd tell someone building the same thing
- Model events as products. Your cart, coupons, checkout and receipts then come for free.
- Fulfil per order item, after payment, and make side effects (emails, notifications) unable to fail the purchase.
- Treat "join" as a window with a status check, not a URL you hand out at checkout.
Try it with a free trial: https://veloxonhub.com. I'm happy to go into the booking or time-zone logic in the comments.
