Skip to content

RSVP System

RSVP System

Not every event needs a checkout flow. Community meetups, volunteer days, open houses, and free workshops just need a way for people to say “I’m coming.” The RSVP system in Tickets Please handles this with an inline form on the event page — no cart, no payment gateway, no WooCommerce dependency.

How RSVP Works

The RSVP flow has four steps from the visitor’s perspective:

  1. The visitor opens an event page and sees the RSVP ticket section.
  2. They click the Register button (a collapsible summary element) to expand the form.
  3. They fill in their name, email, and quantity, then submit.
  4. The page confirms registration and they receive a confirmation email with an .ics calendar attachment.

Behind the scenes, the form submits via AJAX using rsvp-inline.js. The server validates the nonce, sanitizes input, checks capacity, creates attendee records, decreases available stock, and triggers the confirmation email.

RSVP Form Fields

The default RSVP form collects:

FieldRequiredDescription
Full NameYesThe attendee’s name
EmailYesValidated with is_email()
QuantityYesNumber of spots to reserve (1 to max per submission)
Going / Not GoingNoOptional toggle available per ticket configuration

The Quantity field defaults to 1 and allows up to the per-ticket maximum. The maximum per submission is configured on the ticket itself (default: 5). If you need to allow larger groups, increase this value on the ticket edit screen.

The Going / Not Going toggle is optional. When enabled, visitors who select “Not Going” are recorded as declined. Not-going responses do not consume capacity.

Creating an RSVP Ticket

  1. Go to Events > Tickets > Add New.
  2. Enter a name (e.g., “Free Registration” or “RSVP”).
  3. Leave the Price field blank or set it to 0.
  4. Set the Capacity to the maximum number of attendees, or -1 for unlimited.
  5. Select the event in the Event dropdown.
  6. Click Publish.

The RSVP form appears automatically on the event page once a zero-price ticket is published and linked to the event.

Capacity Enforcement

RSVP capacity works the same as paid ticket capacity. When a visitor submits the form, the server checks available slots before creating attendee records. If the requested quantity exceeds remaining capacity, the submission is rejected with an error message.

For unlimited-capacity RSVPs, set _ticket_capacity to -1. The form never rejects submissions based on count.

See Capacity Management for details on individual vs. shared capacity and how stock decrease timing works.

Submission Flow (Technical)

The RSVP form submits a POST request to admin-ajax.php with the action tec_rsvp_submit. The server-side handler follows this sequence:

  1. Nonce verification — rejects requests with invalid or expired nonces.
  2. Input sanitization — sanitizes name, validates email with is_email(), casts quantity to integer.
  3. Capacity check — compares requested quantity against available slots.
  4. Attendee creation — creates one attendee record per spot reserved. Each attendee’s status is set to completed immediately (no pending state for RSVPs).
  5. Capacity decrease — reduces available stock by the number of attendees created.
  6. Confirmation email — sends an email to the registrant with event details and an .ics attachment.

The AJAX response returns success with a confirmation message, or an error with a human-readable explanation (invalid email, capacity exceeded, nonce failure).

RSVP Options

Several per-ticket settings customize the RSVP experience:

Maximum per submission — controls how many spots one person can reserve at once. Default is 5. Set this on the ticket edit screen.

Require login — when _ticket_rsvp_require_login is enabled, only logged-in WordPress users can submit the form. Anonymous visitors see a message prompting them to log in. Use this for member-only events or when you need to link RSVPs to user accounts.

Guest list — when _ticket_rsvp_guest_list is enabled, attendee names are displayed publicly on the event page. This is useful for community events where seeing who else is attending encourages participation.

Gravity Forms Integration

For events that need to collect more than a name and email, you can link a Gravity Forms form to an RSVP ticket.

  1. Create a form in Forms > New Form with the fields you need (dietary requirements, T-shirt size, accessibility needs, etc.).
  2. Edit the RSVP ticket and select the form from the Registration Form dropdown.
  3. The Gravity Form replaces the default name/email fields on the event page. Submissions go through both Gravity Forms processing and Tickets Please attendee creation.

The meta key _tec_ticket_gf_form_id stores the linked form ID. See Gravity Forms Integration for the full setup.

RSVP Shortcode

To place an RSVP form on a page other than the event page, use the shortcode:

[tec_tickets_rsvp event_id="123"]

Replace 123 with the event’s post ID. The shortcode renders the same RSVP form that appears on the event page, including capacity checks and AJAX submission.

Common Questions

Can someone RSVP multiple times with different emails? Yes. Each submission creates separate attendee records. There is no built-in duplicate detection by email for RSVP tickets.

Can I edit an RSVP after it is submitted? Attendees cannot edit their own RSVPs from the frontend. Admins can edit attendee records from the WordPress admin under Events > Attendees.

How do I export the RSVP list? Go to Events > Attendees, filter by the event, and click Export CSV. The export includes all attendee fields. See Attendee Management for details.

Can I send a reminder email to RSVP attendees? Yes, if you have email reminders enabled under Events > Settings > Emails. Tickets Please sends a reminder 24 hours before the event start time to all confirmed attendees.

What happens when someone RSVPs as “Not Going”? A “Not Going” response creates an attendee record with a declined status. It does not consume capacity. The record is visible in the admin attendee list for reporting purposes.

Can I close RSVPs before the event? Set the sale end date on the ticket to the cutoff date. After that date, the RSVP form displays “Registration closed” instead of the form fields.

Does the RSVP form work without JavaScript? The form uses AJAX for a seamless experience, but it falls back to a standard form POST if JavaScript is disabled. The server-side handler processes both request types.

Next Steps