Event registration command center for Cognito Forms
See ticket sales against capacity, revenue and who still owes money across every event form, then check guests in at the door without exporting a spreadsheet.
Build me a command center app for the event registration forms I run in Cognito Forms, so I stop exporting entries to a spreadsheet every time someone asks how ticket sales are going. It has three main views that share one form picker at the top: an Overview, a Roster, and a day of event Check In screen. Two kinds of people use it. I run the event and live in the Overview and Roster, and my door staff only need the Check In screen.
Start with form setup, because everything else depends on it. There is no operation to list my forms, so let me add event forms myself: I type a label like "Spring Gala 2026" plus the form's internal name or numeric Id, and the app validates it by calling Cognito Forms Get Form Schema. Save the list of configured forms in app storage so I can switch between events from a dropdown without rebuilding anything. When a form is added, read its schema and auto detect the fields that matter: the ticket tier field, the quantity field, the payment or order fields, the attendee name and email fields, and any dietary or accessibility questions. Auto detection will not always be right, so show the detected mapping in a settings panel and let me correct each one from a dropdown of that form's real fields. Never hardcode field names, since every event form is shaped differently. Store the mapping per form alongside the form itself.
The Overview page shows the health of the selected event at a glance. Read every registration with Cognito Forms List Entries, paginating with skip and top until a page comes back with fewer rows than requested, and use the mapped fields to compute: registrations sold against capacity broken down by ticket tier, shown as a progress bar per tier with the count sold, capacity, and seats remaining; total revenue collected; and a payment split of paid, unpaid and refunded. Payment state lives on the entry in Cognito Forms, so derive the split from the entry's order and payment fields rather than asking me to tag anything. Capacity per tier is an editable number I set in the app and save to app storage, because a form's internal ticket limit is not always exposed as a readable field. Let me edit capacity inline and raise it mid sale. Across the top of the Overview, roll dietary needs and accessibility requests into summary count chips, for example "6 vegetarian, 2 gluten free, 3 step free access", grouped by the answer given so the caterer and venue get real numbers instead of me reading a list.
The Roster tab lists every attendee for the selected form with their answers, ticket tier, payment status, and any special requests, in a searchable and sortable table with filters for tier, payment status, and checked in state. Give it two buttons. Export sends the roster to a Google Sheets tab using Google Sheets Append Values, writing a header row and one row per attendee, and let me choose the spreadsheet, the tab name, and which columns to include, since the caterer and the venue want different things. Chase unpaid emails only the registrants whose payment status is still unpaid, one message each through Gmail Send a Message, using an editable subject and body template with the attendee name, event name, ticket tier, and amount owed merged in. Before sending, show me the exact list of recipients with a count and make me confirm, and never include anyone already paid or refunded. After sending, show a per recipient success or failure result.
The Check In view is built for staff standing at the door on a phone or tablet. It is a big search box that filters attendees by name as you type, with each result showing the ticket tier, payment status, and a large Mark arrived button. Marking someone arrived writes a check in flag and an arrival timestamp onto that registration with Cognito Forms Update Entry, using the check in fields I mapped during setup. This has to be safe to repeat. Read the entry first with Get Entry, and if it already has a check in timestamp, show "Already checked in at 7:14pm" instead of writing again, so nobody gets double counted when two staff tap the same name. Preserve every other answer on the entry when updating, only touching the check in fields. Show a running counter of arrived against total registered, and let staff undo an accidental check in by clearing the flag and timestamp. If the selected form has no suitable check in fields mapped, say so clearly on this screen and point me to setup rather than failing silently.
A few things to get right throughout. Cognito Forms bills against a monthly request allowance, so do not poll continuously: load registrations when a view opens, cache them in app state, and give me an explicit Refresh button plus a visible "last updated" timestamp. The Check In screen should refresh more eagerly than the Overview since it is used live. Handle a form with hundreds of entries without freezing the table. Show clear empty states for a form with no registrations yet, and surface permission or missing field errors as readable messages that say which form and which field is the problem.
What does this prompt do?
- Pick any event form and see registrations against the capacity you set for each ticket tier, plus revenue collected and a clear split of paid, unpaid and refunded registrations.
- Browse a live roster of every attendee with their answers and special requests, with dietary needs and accessibility requests rolled into counts at the top.
- Push the roster to a Google Sheets tab for your caterer and venue in one click, and email a payment reminder to only the registrants who still owe money.
- On event day, search a guest by name and mark them arrived. The arrival is saved back onto their registration, so the roster stays current while the doors are open.
What do I need to use this?
- A Cognito Forms account on a paid plan, with at least one event registration form that collects ticket choices and payment
- A Google account for the spreadsheet you want the roster copied into
- A Gmail account to send payment reminders from
- A place on your form to record arrivals, such as a checkbox and a date field, so check ins can be saved back to each registration
How can I customize it?
- Set your own capacity per ticket tier and change it whenever you release more seats
- Add as many event forms as you want and switch between them from a dropdown, with no rebuilding
- Reword the payment reminder email and choose which columns get exported to the spreadsheet
FAQs
Do I need a paid Cognito Forms plan?
Will this work with any of my event forms, or just one?
Does checking someone in change my form or my data?
Can two staff members check people in at the same time?
Why do I type in capacity instead of it being read from the form?
How current are the numbers?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
A calibration board that lines up every candidate's answer to the same question, hides names until your panel has scored, and writes the agreed rating back.
Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.
Stop exporting ticket sales to a spreadsheet
Open one screen to see registrations, revenue and unpaid guests, and check attendees in as they arrive.