Events & Registration (RSVP & Ticketed)
Overview
Events are the central object in Nigall. Each event has a registration type (RSVP or Registration), visibility (public or private), optional module toggles, ticketing fields, and recurrence support. This is the definitive guide for creating, editing, and publishing events.
Purpose
Configure the correct registration path and modules so guests experience RSVP simplicity or full attendee registration with tickets, QR codes, and compliance tooling.
Who should use it
- Event hosts and organizers
- Operations leads configuring modules before go-live
- Customer success during onboarding
Benefits
- Single create/edit form with module toggles
- Post-save module setup wizard for enabled modules
- RSVP and Registration paths share survey questions model
Navigation path
| Action |
Path |
| Create event |
/events/create/ |
| My Events |
/events/my-events/ |
| Event detail |
/events/<pk>/<event_tag>/ |
| Edit event |
/events/<pk>/<event_tag>/edit/ |
| Module setup (create) |
/events/create/<pk>/setup/<step>/ |
| Module setup (edit) |
/events/<pk>/<event_tag>/edit/setup/<step>/ |
| RSVP |
/events/<pk>/<event_tag>/rsvp/ |
| Attendee registration |
/attendees/register/<pk>/<event_tag>/ |
| Legacy ticket checkout |
/payments/checkout/<pk>/<event_tag>/ |
Prerequisites
- Authenticated Nigall account (any plan can create events)
- Subscription tier matching enabled modules (see Roles & Permissions)
- For paid tickets: Stripe configured in environment
- For public Discover: at least one event category
Registration types
| Type |
Value |
Default visibility |
Guest experience |
| RSVP |
rsvp |
Private |
Sidebar RSVP form; guest list check-in |
| Registration |
registration |
Public |
Attendee module or legacy checkout |
flowchart TD
Create[Create Event] --> Type{registration_type}
Type -->|rsvp| RSVP[RSVP form + guest list]
Type -->|registration| Reg{attendees_enabled?}
Reg -->|Yes| AM[Attendee registration flow]
Reg -->|No| Legacy[Legacy payments checkout]
Warning: Enabling Attendee Management routes guests to /attendees/register/ — not the legacy RSVP sidebar.
Step-by-step — Create RSVP event
- My Events → Create Event (
/events/create/).
- Event Details:
- Title, description, location
- Registration type: RSVP
- Start / end date-time
- Capacity (default 100)
- Visibility: Private (default for RSVP) or Public
- Ticketing: Mark Free event if no payment.
- Event modules: Leave Attendees off for pure RSVP.
- Survey questions: Add via inline panel or after save.
- Click Create Event.
- Share
/events/<pk>/<tag>/.
[SCREENSHOT: Create Event — registration type RSVP selected]
Step-by-step — Create ticketed Registration event
- Create event with Registration type.
- Enable Attendee Management (
attendees_enabled).
- (Optional) Enable GDPR fields (
attendee_gdpr_enabled).
- Set Free event off; configure price or ticket tiers in Ticketing section.
- Save → redirected to setup wizard step
attendees.
- Complete
attendee_registration_info and retention settings.
- Configure ticket tiers (
ticket_types text / tier UI on edit form).
- Test registration in incognito.
Step-by-step — Module setup wizard
After save (create or edit), if any module toggles are enabled, Nigall redirects through EVENT_SETUP_STEPS:
| Step key |
Enable field |
Wizard fields |
exhibitors |
exhibitors_enabled |
Prospectus, fees, floor plan, approval |
vendors |
vendors_enabled |
Stall fees, load-in, deposits, documents |
attendees |
attendees_enabled |
Registration info, data retention |
sponsors |
sponsors_enabled |
Prospectus, ACH, platform fee % |
speakers |
speakers_enabled |
CFP info, slot counts, deadline |
program |
program_enabled |
(configure in Program app after) |
volunteers |
volunteers_enabled |
Prospectus, benefits, skills |
URLs:
- Create flow: /events/create/<pk>/setup/<step>/
- Edit flow: /events/<pk>/<tag>/edit/setup/<step>/
Field descriptions
Core event fields
| Field |
Description |
| Title |
Public name (max 200) |
| Registration type |
rsvp or registration |
| Visibility |
public (Discover) or private (link-only) |
| Event category |
Required for public; preset tags or custom |
| Description |
Full event description |
| Location |
Address or virtual link |
| Venue |
Optional FK to Venue — auto-fills location |
| Latitude / longitude |
Geocode for Discover nearby |
| Start / end date |
Event window (timezone-aware) |
| Capacity |
Max headcount |
| Cover images |
Card, banner, mobile variants + crop data |
Ticketing fields
| Field |
Description |
is_free |
No payment required |
price |
Base price (legacy) |
ticket_types |
Tier configuration text |
allow_group_purchasing |
Group checkout |
coupon_code |
Single event coupon |
coupon_discount_percent |
Percent off |
Communication toggles
| Field |
Description |
email_blasts_enabled |
Email communications module |
sms_reminders_enabled |
SMS flag (provider-dependent; email primary) |
Module toggles
See Event Field Reference for full list.
Business rules
| Rule |
Behavior |
| RSVP capacity |
Sum of adult_count + kid_count for attending RSVPs |
| Waitlist |
New attending RSVPs when full → waitlist status |
| Public + category |
Public events require event_category |
| Past events |
Edit, RSVP, check-in disabled when end_date < now |
| Registration default visibility |
public for registration type |
| RSVP default visibility |
private |
| Module field locks |
Toggles grayed without subscription tier |
| Recurrence |
Optional series — see Recurring Events |
| Event tag |
Auto-generated 6-char uppercase on save |
Validation rules
| Condition |
Error |
| End before start |
Form validation error |
| Public without category |
Cannot save |
| Paid tier without Stripe |
Checkout fails at payment |
| Module toggle without plan |
Field locked / ignored on save |
User permissions
| Action |
Host |
Staff |
Guest |
| Create event |
✅ |
✅ |
❌ |
| Edit event |
✅ |
✅ |
❌ |
| Delete event |
✅ |
✅ |
❌ |
| RSVP / register |
Preview only |
✅ |
✅ |
| Module setup wizard |
✅ |
✅ |
❌ |
Workflow — end to end
sequenceDiagram
participant Host
participant Nigall
participant Guest
Host->>Nigall: Create event + toggles
Nigall->>Host: Module setup wizard
Host->>Nigall: Publish / share
Guest->>Nigall: RSVP or Register
Nigall->>Guest: Confirmation + ticket
Host->>Nigall: Guest list / registrations
Examples
| Scenario |
Type |
Modules |
| Team dinner |
RSVP |
Communications |
| Annual gala |
Registration |
Attendees, Sponsors, Program |
| Trade show |
Registration |
Attendees, Exhibitors (Enterprise), Vendors |
Best practices
- Choose RSVP for invite-only headcount; Registration for QR and compliance
- Complete wizard before sharing links
- Set capacity before marketing push
- Test guest flow in incognito as non-host
Tips
- Link venue profile to auto-fill operations defaults
- Use
email_blasts_enabled with Communications hub
- Program step is placeholder — build schedule in
/program/
Common mistakes
| Mistake |
Result |
Fix |
| Registration without Attendees |
Legacy checkout only |
Enable attendees module |
| Public event no category |
Save blocked |
Add category |
| Host tests RSVP |
No guest form |
Use test account |
| Skip wizard |
Incomplete module config |
Visit edit setup URLs |
FAQs
Can I switch registration type after launch?
Possible but disruptive; test impacts on existing RSVPs/registrations.
What's the difference between price and ticket tiers?
price is legacy single price; tiers support multiple SKUs via ticketing section.
Troubleshooting
| Symptom |
Cause |
Fix |
| Wizard doesn't appear |
No modules enabled |
Enable toggle; save |
| Guests see wrong form |
Type/module mismatch |
Check registration_type + attendees_enabled |
| Module toggle locked |
Plan too low |
Upgrade subscription |
Screenshot placeholders
[SCREENSHOT: Create event module toggles section]
[SCREENSHOT: Module setup wizard — attendees step]
[SCREENSHOT: Ticketing tiers on edit form]
[SCREENSHOT: Registration type selector]
Administrator notes
- Configure Stripe keys in environment for production payments
- Staff bypass subscription field locks on event form
- Enterprise required for
exhibitors_enabled toggle
Developer/API notes
| Item |
Detail |
| Model |
events.models.Event |
| Setup steps |
events.forms.EVENT_SETUP_STEPS |
| RSVP model |
events.models.RSVP |
| Mobile detail |
GET /api/mobile/v1/events/<pk>/<tag>/ |
| Mobile RSVP |
POST /api/mobile/v1/events/<pk>/<tag>/rsvp/ |
See also: Event Field Reference · Quick Start — Organizers