Stop counting RSVPs
by hand.
Guest count, meal preference, and a clear yes-or-no arrive as structured fields — not a reply-all thread you have to tally in a notebook the night before.
- Guest count & meal preference fields
- Spam filtered server-side
- Free to start — no credit card
Jun
12
Summer Workshop 2026
7:00 PM · The Garden Hall
Recent RSVPs
Why "just reply to this email" doesn't scale
Somewhere between the tenth reply-all and the guest who texted instead of emailing, the headcount stops being a headcount.
Replies scattered everywhere
Some RSVP by email, some by text, some in a group chat — nobody has the full list in one place.
No real headcount
"We'll be there!" doesn't say if that's one person or a family of five until it's too late to plan for it.
Catering surprises
Without meal preferences collected ahead of time, dietary needs come up as a surprise at check-in.
Manual tallying
Counting replies by hand into a spreadsheet the night before is exactly the kind of error-prone busywork a form should remove.
Built for headcounts, not just "yes" or "no"
Whether it's a wedding, a webinar, or a workshop with limited seats, an RSVP form should tell you exactly who's coming and what they need.
Clear attending field
A structured yes/no select instead of parsing tone out of a text message.
Guest count field
A number field for how many are coming, so the headcount is a number — not a guess.
Meal & dietary preferences
Dropdown for meal choice, plus a text field for allergies or dietary notes.
A ticket-style hosted page
No invite site? Publish an RSVP page at its own subdomain using the "Event" template.
Instant alerts, shared dashboard
Get an email the moment someone RSVPs, and see every response in one searchable place.
Spam protection built in
Server-side spam detection runs automatically, with optional reCAPTCHA or Turnstile for public invites.
An RSVP form vs. a full ticketing platform
Eventbrite and Google Forms both work — but neither is really built for "collect an RSVP on my own page." Here's the honest difference.
| NBForms | Eventbrite | Google Forms | |
|---|---|---|---|
| Where it lives | Embedded directly on your own invite page, or a branded hosted page at your own subdomain. | A separate Eventbrite listing page, alongside ads for other events. | A generic Google-branded form, usually linked or embedded separately. |
| Guest experience | Fills out a normal form — no account or app required. | Often prompted to create or sign into an Eventbrite account. | Fills out a form — simple, but looks the same as every other Google Form. |
| Built for | Free RSVPs with structured details — guest count, meals, sessions. | Public ticket sales at scale, including paid tickets. | General-purpose surveys and forms of any kind. |
| Your data | Lands in your NBForms dashboard, exportable and connectable via webhook, Zapier, or Make. | Lives inside your Eventbrite organizer account. | Lives in a Google Sheet tied to your Google account. |
This isn't a knock on either tool — Eventbrite is built for public ticket sales, and Google Forms is a fine free default. NBForms just does one thing: a branded RSVP that lives on your own page.
RSVP and registration forms for any event
A wedding, a conference, a webinar, and a neighborhood workshop all need the same three things from an RSVP: a clear yes-or-no, a guest count, and whatever detail actually matters for that event — a meal choice, a dietary restriction, a session pick. NBForms turns that into a structured form that posts straight to your endpoint: attendance as a select field, headcount as a number field, and preferences as dropdowns — arriving as clean data next to each other, not buried inside a "see you there!" reply.
Every RSVP lands in a shared dashboard with an instant email alert, so you're never refreshing an inbox to know where the count stands. Add multiple notification recipients and CC addresses if a co-host or venue coordinator needs the same alerts, and connect Zapier, Make, or a plain webhook to push confirmed guests into a spreadsheet, a check-in app, or your CRM. Server-side spam filtering runs on every submission automatically — useful the moment an event page gets shared publicly — with optional reCAPTCHA or Turnstile for extra protection on high-traffic invites.
Because it's just an HTML form action, it drops into whatever your invite page is built with — a Squarespace event page, a Notion page, a hand-coded site, or one of the framework snippets for 16 stacks. No invite page at all? Publish a ticket-style hosted RSVP page from the "Event" template in the template library and share one link everywhere — a group chat, an Instagram bio, or a printed invitation's QR code. Getting started is free with no credit card, and pricing beyond that is pay-as-you-go credits, not a per-attendee ticketing fee.
At a glance
- No backend or server required — just an HTML form action
- Guest count, meal preference, and attendance as structured fields
- Instant email alert, plus a searchable submissions dashboard
- Server-side spam filtering, plus optional reCAPTCHA/Turnstile
- Ticket-style hosted page option — no invite site required
- Free to start, pay-as-you-go credits — never a per-attendee fee
An RSVP form you can paste today
Attendance, guest count, and meal preference all arrive as structured fields. Styled with Tailwind CSS out of the box.
<form action="https://api.nbforms.com" method="POST" class="space-y-5 max-w-md min-w-[400px]"> <input type="hidden" name="_token" value="YOUR_TOKEN" /> <div class="mb-1"> <h2 class="text-xl font-bold text-gray-900 tracking-tight">You're invited — RSVP below</h2> <p class="text-sm text-gray-500 mt-1">Summer Workshop 2026 · June 12, 7:00 PM</p> </div> <div class="grid grid-cols-2 gap-4"> <div> <label class="block text-xs font-semibold text-gray-700 mb-1.5">Name</label> <input type="text" name="name" required class="w-full rounded-xl border border-gray-200 bg-gray-50 px-3.5 py-2.5 text-sm text-gray-900 shadow-sm outline-none transition-all focus:bg-white focus:border-[#e1584b] focus:ring-4 focus:ring-[#e1584b]/10" /> </div> <div> <label class="block text-xs font-semibold text-gray-700 mb-1.5">Email</label> <input type="email" name="email" required class="w-full rounded-xl border border-gray-200 bg-gray-50 px-3.5 py-2.5 text-sm text-gray-900 shadow-sm outline-none transition-all focus:bg-white focus:border-[#e1584b] focus:ring-4 focus:ring-[#e1584b]/10" /> </div> </div> <div> <label class="block text-xs font-semibold text-gray-700 mb-1.5">Will you be attending?</label> <select name="attending" required class="w-full rounded-xl border border-gray-200 bg-gray-50 px-3.5 py-2.5 text-sm text-gray-900 shadow-sm outline-none transition-all focus:bg-white focus:border-[#e1584b] focus:ring-4 focus:ring-[#e1584b]/10"> <option value="">Select…</option> <option>Yes, I'll be there</option> <option>Sorry, can't make it</option> </select> </div> <div class="grid grid-cols-2 gap-4"> <div> <label class="block text-xs font-semibold text-gray-700 mb-1.5">Guests (including you)</label> <input type="number" name="guest_count" min="1" value="1" class="w-full rounded-xl border border-gray-200 bg-gray-50 px-3.5 py-2.5 text-sm text-gray-900 shadow-sm outline-none transition-all focus:bg-white focus:border-[#e1584b] focus:ring-4 focus:ring-[#e1584b]/10" /> </div> <div> <label class="block text-xs font-semibold text-gray-700 mb-1.5">Meal preference</label> <select name="meal_preference" class="w-full rounded-xl border border-gray-200 bg-gray-50 px-3.5 py-2.5 text-sm text-gray-900 shadow-sm outline-none transition-all focus:bg-white focus:border-[#e1584b] focus:ring-4 focus:ring-[#e1584b]/10"> <option>No preference</option> <option>Chicken</option> <option>Vegetarian</option> <option>Vegan</option> </select> </div> </div> <div> <label class="block text-xs font-semibold text-gray-700 mb-1.5">Allergies or dietary notes (optional)</label> <input type="text" name="dietary_notes" class="w-full rounded-xl border border-gray-200 bg-gray-50 px-3.5 py-2.5 text-sm text-gray-900 shadow-sm outline-none transition-all focus:bg-white focus:border-[#e1584b] focus:ring-4 focus:ring-[#e1584b]/10" /> </div> <button type="submit" class="w-full rounded-full bg-gradient-to-r from-[#f97316] to-[#e1584b] px-4 py-3 text-sm font-semibold text-white shadow-lg shadow-[#e1584b]/25 transition-all hover:brightness-110">Send RSVP</button> </form>
Replace YOUR_TOKEN with the token from your form's setup page. Keep or drop the Tailwind classes — NBForms only cares about the action and field names.
Event RSVP forms — FAQ
Can guests tell me how many people they're bringing?
Yes. Add a number field for guest count, so the RSVP arrives with a real headcount instead of a vague "we'll be there" that could mean one person or five.
Can I collect meal preferences or dietary restrictions?
Yes. A select field works well for meal choice (chicken, vegetarian, vegan), and a text field lets guests note allergies or other dietary details — both arrive with the rest of the RSVP.
Does this sync with my calendar or send a calendar invite?
No. NBForms uses a plain date field if you need one on the form — it's not connected to Google Calendar, Outlook, or any calendar sync. It records what a guest enters, nothing more.
Do guests get an automatic confirmation email after they RSVP?
Not an automated one — there's no auto-responder template. You (the organizer) get an instant email alert, and you can set a custom thank-you message or redirect guests to an "add to calendar" page right after they submit.
Can I cap the number of RSVPs once an event is full?
There's no automatic attendee cap or waitlist. Watch your submissions dashboard as RSVPs come in, and flip the form's Active toggle off in Settings once you've hit capacity — submissions are rejected while it's off.
Do I need an event website to collect RSVPs?
No. Publish an RSVP page as its own hosted page at a free nbforms.com subdomain, using the "Event" template — a ticket-style page with your event details and the form, live in minutes.
What does this cost to run event registrations?
Creating and building forms is free, with no per-attendee ticketing fee ever. Beyond the free monthly submission quota, pricing is pay-as-you-go credits — you only pay for what you use.
Know your headcount before the day of
Free to start. No credit card. No per-attendee ticketing fee — ever.
Create Your Event Form