After an event ends, import up to 5,000 attendees from a CSV on the Registrations tab. Download the event-scoped template, validate the file, then confirm the import. Requires the same permission as Add registration.
Use Bulk upload when you already have an attendee list outside Bevy — for example a partner spreadsheet or an external registration export — and the event has ended. The import adds or updates people on that event’s Registrations list. It does not create chapter memberships, process payments, or manage the Waitlist tab.
- When it is available — published events that have ended. The button is disabled on draft, canceled, and not-yet-ended events.
- Who can use it — anyone with permission to manually add attendees (the same chapter permission as Add registration). Event cohosts may also import when cohosting is enabled for your community.
- What each row becomes — an attendee record matched on event, email, first name, and last name. Bevy creates or links a user account for the email when needed; it does not join the person to the chapter.
Note: Bulk upload is a post-event workflow. For live events, add people one at a time with Add registration, or manage sold-out tickets from the Waitlist tab.
Open Bulk upload
- In the Chapter Dashboard, open the completed event.
- Select the Registrations tab.
- Select Bulk upload. The control sits with Download and Add registration.
If the button is disabled, hover for the reason. Typical messages: bulk upload is only available after the event has ended, or it is not available on draft or canceled events.
Download the CSV template
- In the Bulk upload attendees modal, select Download CSV template.
- Open the file named
attendee_import_template_event_<event_id>.csv. - Replace or delete the example rows (for example Jane Doe). Keep the header row.
Tip: Always download a fresh template for the event you are importing into. The template is scoped to that event (including ticket titles, venues, and any active pre-order survey columns). Downloading it also confirms you have permission to import there.
Fill in the CSV
Save the file as CSV (UTF-8). You can upload up to 5,000 data rows and up to 10 MB per file. Split larger lists into multiple files.
| Column | Required? | Notes |
|---|---|---|
email |
Yes | Valid email. Used to match or create the user. Do not include an event_id column — the event comes from the page URL. |
first_name |
Recommended | Optional for validation, but include it when you can. Match key uses first and last name with email. |
last_name |
Recommended | Optional for validation, but include it when you can. |
checked_in |
No |
TRUE or FALSE. Blank defaults to not checked in. |
job_title |
No | Free text (job title on the attendee profile). |
company |
No | Free text. |
ticket_title |
See notes | Must match an existing ticket title on the event (case-insensitive). Alias headers such as ticket_type also work. Provide ticket_title, ticket_venue, or both when the event has tickets the importer can resolve. |
ticket_venue |
See notes | Use when you need to pick a venue, or when venue alone uniquely identifies the ticket. Accepted values: In-person, Virtual, or Hybrid. |
| Pre-order survey columns | No | Only when the event has an active pre-order survey. See below. |
Copy each ticket name from the event’s Tickets or RSVPs settings into ticket_title. Spelling must match. If two tickets have the same name, also fill in ticket_venue (In-person, Virtual, or Hybrid) so Bevy can tell which ticket you mean.
Pre-order survey columns
If the event has an active pre-order (registration) survey, the downloaded template adds one extra column per question. Headers look like survey:dietary_preference — the word survey:, then a short ID for that question (the slug). The slug is generated from the question label; it is not the full question text. Do not invent or rename these headers. Use the exact columns from the template for this event.
Example cells in the template show the question label and the expected format. Fill answers like this:
- Short text / long text — type the answer as plain text.
- Single choice — use one choice value that matches the survey (copy from the template hint when present).
-
Multi-select — separate choices with a pipe, for example
choice_a|choice_b. -
Checkbox (yes/no) —
trueorfalse. -
Date —
YYYY-MM-DD. -
Date and time —
YYYY-MM-DDTHH:MM:SSZ.
Leave every survey cell blank on a row to import the attendee without survey answers. If you fill in any survey cell on that row, Bevy validates the whole survey for that row — including required questions — so complete the required fields or clear the survey cells and try again.
Validate and confirm
- In the modal, choose your CSV file.
- Select Validate file. Nothing is imported yet.
- Review the preview: total rows, rows ready to import, rows with errors (first problem rows shown), and whether rows will create new attendees or overwrite existing ones.
- If any rows fail, fix the CSV, re-upload, and validate again until the error count is zero (or you accept leaving failed rows out).
- Select Confirm import. The import runs as a background job. When it finishes, the modal shows how many rows were created, updated, and failed, and the attendee table refreshes.
You can close the modal after you confirm — the job keeps running. The in-modal progress view is the easiest way to watch a large file.
Important: There is no bulk undo. If you import the wrong list, delete incorrect rows from the attendee list one at a time, or contact Bevy support for help with a large cleanup. Soft-deleted attendees can be restored by a later re-upload of the same match key.
Re-uploads and duplicates
- If a row’s email, first name, and last name match an existing attendee on the event, that attendee is updated — not duplicated. Non-blank CSV fields overwrite existing values.
- If the match belongs to a soft-deleted attendee, the deletion is undone and the person reappears on the list.
- Duplicate rows for the same match key inside one file: the first row creates (or updates); later duplicates update the same attendee.
- An overwrite does not replace an existing ticket order that may already be paid for.
Paid events and free tickets
| Ticket kind | What the import does |
|---|---|
| Free / RSVP ticket | Creates a registration-style ticket order so the attendee shows the ticket title and venue on the list. That order does not consume ticket inventory the way a public checkout does. |
| Paid ticket | You may name the ticket in the CSV (same as validating which ticket you mean). The import does not create a paid order, capture payment, or reduce ticket inventory. Bulk-imported paid attendees do not appear in ticket sales or revenue reports. Behavior matches manually adding an attendee on a paid event. |
Waitlist
Bulk upload does not add people to a waitlist and does not release waitlist spots. Use the event’s Waitlist tab for that workflow. See Waitlist Registration.
Common upload errors
| Error | Fix |
|---|---|
| Invalid email / missing email | Correct the email column. Header must be recognized as email (for example email or email_address). |
ticket_title or ticket_venue is required |
When the event has resolvable tickets, fill at least one of those columns. |
| No ticket matching … exists on this event | Copy the exact ticket title from the event’s ticket list. Add ticket_venue if titles are ambiguous. |
| Venue is not recognized | Use In-person, Virtual, or Hybrid. |
| Unknown survey question / no active pre-order survey | Re-download the template so headers match this event’s questions, or clear all survey: cells if you do not need survey answers (or if the survey was turned off). |
| File too large / too many rows | Stay under 10 MB and 5,000 data rows. Split the file and import in batches. |
Troubleshoot bulk upload
| Issue | Solution |
|---|---|
| The button is disabled | Confirm the event is published, not canceled, and has ended. Bulk upload is only available after the event has ended. |
| I do not see Bulk upload | Ask your HQ admin whether your role includes permission to add attendees. Cohosts need cohosting enabled for the community. |
| Validation says the ticket was not found | Copy the title from Tickets on the event. Use ticket_venue when two tickets share a name. |
| Emails look valid but still fail | Confirm the header is an email alias and the file is CSV UTF-8. Re-download the template if headers were renamed. |
| Progress looks stuck | Large files take longer in the background. Close the modal, refresh Registrations, and check whether rows appear. Contact Bevy support if the job never finishes. |