Ask only what check-in needs
Name, email, ticket type, attendee count, dietary requirements. Every extra field costs registrations — skip company/title unless you'll actually use them.
Form template · Event registration
For meetups, workshops, fundraisers, and community events that don't need a ticketing platform: a registration form collects who's coming, what ticket they want, and how many seats.
This template is one of our free HTML form templates. See more form templates by industry.
Overview
Search "event registration form template" and you usually want HTML you can copy, drop in, and have live before the invites go out — that's exactly how SplitForms works. Take a plain <form>, add one hidden access_key field, point its action at a single endpoint (https://splitforms.com/api/submit), and host the page anywhere static: GitHub Pages, Netlify, S3, no server or backend code. Every registrant's name, email, ticket or session choice, headcount, and dietary or access notes lands in a dashboard you can export straight to a CSV check-in list. Turn on the auto-responder and each person gets a confirmation with the date, time, and venue the instant they hit submit.
Every template is free and fully editable in the drag-drop builder — swap fields, colors, and the button label before you publish.
No server, API route, or SDK — your Event Registration Form posts straight to one endpoint.
Every submission is emailed to you and saved to a searchable dashboard — spam filtered before it reaches you.
It's plain HTML you own — paste the Event Registration Form snippet, swap in your access key, and ship.
Copy and ship
HTML by default — the same field set also renders as React, Next.js, PHP, and cURL in your dashboard. Every variant posts to the same /api/submit endpoint. Replace YOUR_ACCESS_KEY with the key from your dashboard; that's the only edit.
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<input type="hidden" name="subject" value="New event registration">
<label for="name">Full name *</label>
<input id="name" type="text" name="name" placeholder="Priya Sharma" required>
<label for="email">Email *</label>
<input id="email" type="email" name="email" placeholder="[email protected]" required>
<label for="phone">Phone</label>
<input id="phone" type="tel" name="phone" placeholder="+1 555 0142">
<label for="ticket_type">Ticket type *</label>
<select id="ticket_type" name="ticket_type" required>
<option value="">Choose…</option>
<option>General admission</option>
<option>VIP</option>
<option>Student</option>
<option>Group (5+)</option>
</select>
<label for="attendees">Number of attendees *</label>
<input id="attendees" type="number" name="attendees" placeholder="1" required>
<label for="dietary">Dietary requirements</label>
<input id="dietary" type="text" name="dietary" placeholder="Vegetarian, allergies…">
<!-- honeypot — bots fill every field -->
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">
<button type="submit">Send</button>
</form><p class="splitforms-attribution" style="margin-top:12px;font-size:11px;color:#888;text-align:right">
Powered by <a href="https://splitforms.com" style="color:#888;text-decoration:none" target="_blank" rel="sponsored noopener">splitforms</a>
</p>
<!-- drop-off analytics + partial leads (the form works without it) -->
<script src="https://splitforms.com/embed.js" async></script>How to add it
To add a Event Registration Form to your site you need three things: a free splitforms access key, the HTML snippet above, and your key pasted into it. No backend, database, or CAPTCHA library — the form posts to one URL and every submission lands in your inbox and dashboard.
Name, email, ticket type, attendee count, dietary requirements. Every extra field costs registrations — skip company/title unless you'll actually use them.
Turn on the auto-responder with date, address, parking, and what to bring. That one email eliminates most 'quick question' replies.
The day before, export CSV and you have the door list — name, ticket type, headcount. For paid tickets, enable Stripe payments on the same form.
What's included
Eventbrite takes a fee per ticket and owns your attendee list. For free events, workshops, and community programs, that trade is backwards — you're paying to give away your own audience. A registration form on your own site captures the same details (ticket type, headcount, dietary needs), emails you each registration, and keeps the list exportable as CSV. Under a few hundred attendees, a form plus a spreadsheet genuinely is the whole system. Own your attendee list — no per-ticket fees on your own event.

Where submissions go
Reply-to is wired to the visitor's email, so one tap on Reply answers them directly — while the built-in honeypot and automatic spam scoring filter out bots before they reach you. Every submission is emailed to your inbox and can forward to a webhook or Slack the moment a visitor hits send.

How SplitForms works
splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

Point your form to your unique SplitForms endpoint. That's it.

We instantly capture and organize every submission in your inbox.

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

No credit card required. Set up in under 60 seconds.
Connect & automate
On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

Questions
Yes. Notification emails to you as the organizer are free on every plan, and the auto-responder (a paid feature) sends the registrant their own confirmation the moment they submit. Put the event date, time, and venue in it, and pair it with a custom sending domain (also paid) so it arrives from your address instead of a generic one.
Every registration shows up in the dashboard as its own entry, and you export the whole list to CSV. Sort or filter it by name, ticket type, or session to print the door list, and re-export any time right up to the event to pick up late signups.
Add a webhook (a paid feature) pointing at Slack, Discord, or WhatsApp and each new registration posts to your channel as signed JSON. That's how you watch the count climb toward your cap in real time and decide when to close signups or open a waitlist, without anyone refreshing the dashboard.
Free covers 500 submissions with no card and no time limit — enough for a single meetup, workshop, or small event. For a bigger crowd, a recurring series, or a full conference, Pro is $5/mo for 5,000 submissions a month.
RSVP is yes/no for invited guests (weddings, private dinners). Registration is open signup with ticket types and headcounts. If strangers can sign up, you want registration.
Soft-cap it: watch the count on the dashboard and pause the form (Settings → form pause) when you're full. Point latecomers at a waitlist form so a cancellation still fills the seat.
Yes — enable payments and set the amount; registrants pay through Stripe or Square checkout after submitting. For multiple price tiers, the ticket-type dropdown plus per-form pricing handles simple cases.
Simple pricing
Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.
For side projects and indie devs.
Every paid feature, for agencies and growing products.
Every Pro feature with triple the volume — $0.27 per 1,000 at full use.
No credit card required on Free • Cancel anytime • Full pricing and FAQ