Survey & Custom Questions

Overview

Survey & Custom Questions let event hosts collect structured information from guests during RSVP or registration—dietary needs, t-shirt sizes, session preferences, accessibility requirements, and more. Questions support multiple field types, guest-list visibility, and (for the Attendees module) badge and segmentation options.

Purpose

Eliminate manual follow-up emails and spreadsheets by capturing guest data at the moment of RSVP/registration, with answers stored per guest and exportable for operations teams.

Who should use it

Role Use case
Event host / organizer Create and manage questions
Operations View answers on guest list / registrations export
Marketing Segmentation via used_for_segmentation (Attendees module)
Guest / attendee Answer during RSVP or registration

Benefits

  • Single capture point — no post-registration surveys required for basic fields
  • Supports RSVP events and full Attendee Registration workflows
  • Host-visible response table on event detail page
  • Guest list columns for check-in staff
  • Re-editable answers when guests update RSVP

Action Path
Manage on event detail (host) /events/<pk>/<event_tag>/Survey questions panel
Manage on edit event /events/<pk>/<event_tag>/edit/Survey questions section
Full question manager /attendees/<pk>/<event_tag>/questions/
Edit single question /attendees/<pk>/<event_tag>/questions/<question_pk>/edit/
Guest answers at RSVP Event detail → RSVP sidebar (non-host)
Guest list with answers /events/<pk>/<event_tag>/guests/
Attendee registration questions /attendees/register/<pk>/<event_tag>/ (Attendees module)

Prerequisites

  • Event must exist (questions are attached to an event record)
  • User must be event host or platform staff
  • For guest-facing display: question must have Visible to guests (is_active=True)
  • Attendees module not required for RSVP survey questions

Warning: If Attendee Management is enabled with unified registration workflow, guests are routed to attendee registration—not the legacy RSVP form. Questions still use the same EventRegistrationQuestion model.


Step-by-step instructions

Beginner — Add a survey question (host)

  1. Sign in as event host.
  2. Open your event → View Event (/events/<pk>/<tag>/).
  3. Scroll to Survey questions (left column on desktop).
  4. In Add question (right side of panel):
    - Enter Question text (e.g., "Dietary restrictions")
    - Select Question type (see Field descriptions)
    - Toggle Required if mandatory
    - For dropdown/multi-select: enter Answer options (one per line)
    - Toggle Show in guest list to display on check-in table
  5. Click Add question.
  6. Confirm question appears in list without Hidden label.

[SCREENSHOT: Survey questions panel — add form]

Intermediate — Edit or hide a question

  1. Click Edit next to the question.
  2. Update text, type, options, or uncheck Visible to guests to hide from new submissions.
  3. Save. Use Cancel to return without changes.

[SCREENSHOT: Edit question form with Visible to guests checkbox]

Advanced — Full manager with badge & segmentation

  1. Click Full manager in survey panel header.
  2. Use expanded form with Show on badge, Used for segmentation fields.
  3. Export registrations CSV from Attendees module when segmentation enabled.

Field descriptions

Question fields (organizer)

Field Type Description
Question text Text (500 char) Label shown to guests
Question type Enum text, dropdown, multi_select, yes_no, file_upload, date
Required Boolean Guest cannot submit RSVP without answer
Answer options Textarea One option per line; required for dropdown/multi-select
Sort order Integer Display order (lower first)
Show in guest list Boolean Adds column on RSVP guest list
Show on badge Boolean Attendee module badge printing
Used for segmentation Boolean Filter/export for email segmentation
Visible to guests (is_active) Boolean If false, question hidden from RSVP form

Guest-facing fields

Dynamic fields named cq_<question_id> in the RSVP POST body.


Business rules

Rule Behavior
Active questions only on RSVP form is_active=True questions shown to guests
Host sees all questions Including hidden/inactive in management panel
Answers stored per RSVP RSVPCustomAnswer linked to RSVP + question
Attendee registrations Answers in AttendeeCustomAnswer
Update RSVP Re-submitting updates existing answers
File upload Requires multipart/form-data; re-upload optional if file exists
Multi-select storage JSON array in answer_text
Yes/No storage Values yes / no

Validation rules

Condition Error
Dropdown/multi-select without options "Add at least one option" on save
Required question empty on RSVP "Please complete all required survey questions"
Invalid option selected ChoiceField validation error

User permissions

Action Host Staff Guest
Add/edit/delete questions
View response table on event
Answer questions ❌ (host UI) ✅ if RSVP as guest
View own answers N/A ✅ ("Your survey answers")

Workflow

sequenceDiagram participant Host participant Nigall participant Guest Host->>Nigall: Add survey questions Nigall->>Nigall: Store EventRegistrationQuestion Guest->>Nigall: Submit RSVP + cq_* fields Nigall->>Nigall: Save RSVPCustomAnswer Host->>Nigall: View Guest survey responses table Guest->>Nigall: Return to event page Nigall->>Guest: Show saved answers + pre-filled form

Examples

Example 1 — Wedding RSVP

Question Type Required
Meal choice Dropdown: Chicken, Fish, Vegetarian Yes
Song request Text No

Example 2 — Conference tee shirt

Question Type Show in guest list
T-shirt size Multi-select: S, M, L, XL Yes

Example 3 — Photo release

Question Type Required
Photo consent Yes/No Yes

Best practices

  • Add questions before sharing the event link
  • Use Show in guest list for day-of operational fields (meal, size, accessibility)
  • Keep required questions minimal to reduce RSVP abandonment
  • Use dropdown instead of free text when you need clean exports
  • Test in incognito as guest after adding questions

Tips

  • Use Sort order 10, 20, 30 to insert questions later without renumbering
  • Full manager link preserves return URL via ?next= parameter
  • Multi-select answers display as comma-separated on guest list

Common mistakes

Mistake Result Fix
Testing while logged in as host No RSVP form visible Use guest account / incognito
Question shows Hidden Not on guest form Edit → check Visible to guests
Dropdown with no options Cannot save question Add answer options
Expecting answers on host RSVP sidebar Host sees management UI only Check Guest survey responses table

FAQs

Are survey questions the same as attendee registration questions?
Same model (EventRegistrationQuestion). RSVP events store answers on RSVP; attendee module stores on AttendeeRegistration.

Can guests change answers after RSVP?
Yes. Logged-in guests re-submit RSVP; guest-link users use /guest-rsvp/<token>/.

Do file uploads work on RSVP?
Yes with enctype="multipart/form-data" on the form.

Troubleshooting

Symptom Cause Resolution
Questions not on RSVP form is_active=False Edit question → Visible to guests
Answers not on event page Viewing as host See Guest survey responses table or guest list
Answers not saved Required field empty / validation failed Check flash message; complete all required
Empty guest list columns show_in_guest_list=False Enable on question
Old questions still hidden after fix Browser cache Hard refresh; verify DB is_active

Screenshot placeholders

  • [SCREENSHOT: Survey questions panel with responses table]
  • [SCREENSHOT: Guest RSVP form with survey fieldset]
  • [SCREENSHOT: Your survey answers callout on event detail]
  • [SCREENSHOT: Guest list with survey columns]
  • [SCREENSHOT: Full manager — add question form]

Administrator notes

  • Bulk-fix hidden questions: EventRegistrationQuestion.objects.filter(event_id=X, is_active=False).update(is_active=True)
  • Quick-add form (SurveyQuestionAddForm) always sets is_active=True
  • Monitor file upload storage path: events/rsvp_survey/

Developer/API notes

Item Detail
Model attendees.models.EventRegistrationQuestion
RSVP answers attendees.models.RSVPCustomAnswer
Form builder attendees.question_services.build_custom_answers_form()
Save save_rsvp_custom_answers(rsvp, form)
POST field prefix cq_<question_pk>
Host context survey_host_context(), guest_survey_responses
Mobile API Survey not yet exposed on mobile RSVP endpoint — web only

See also: Guest Management & Check-In · Participant Guide