Add or update many registrants at once by importing a CSV file under People > Registrants. Each new row becomes a registrant with a personal join code.
Before you start
You need to be an event admin or an organization admin.
The event must be invite-only (People > Settings > Event access > Invite only). Public events have no Import CSV option.
If invitations are Published, every new registrant with an email address gets the invitation email as soon as the import finishes. Unpublish first to hold the emails back.
Save the file as UTF-8 CSV. In Excel choose CSV UTF-8 (Comma delimited), not CSV (MS-DOS).
Find the ticket type list IDs you need: open People > Lists > Ticket type, select a list, and copy the number after
/ticket-types/in the address bar. Custom lists under Custom show their ID after/custom-lists/.
Where to find it
People > Registrants > New registrant(s) > Import CSV in the admin panel.
Prepare the file
Download the CSV template from the first step of the import, or build a file with these columns. The order doesn't matter. Column names are matched case-insensitively.
Column | Required | Content |
| No | Brella's ID of an existing registrant, from the export. Fill it only to update that registrant. Leave it empty for new people. |
| No | Your own ID for the person, for example from your registration system. Unique within the event. Brella uses it to find an existing registrant when |
| No | The registrant's email address. Without it Brella can't send the invitation. The address is trimmed and lowercased. |
| No | First name. |
| No | Last name. |
| No | Company. |
| No | Job title. |
| No | The ID of a ticket type list of this event. Empty or unknown for a new registrant: the registrant goes to the event's default list. |
| No | Comma-separated IDs of custom lists of this event, for example |
| No |
|
Rules for the file:
Keep one header row. Every column you want to import must have a header.
Each row is one registrant with one seat. There is no seats column.
Rows where every cell is empty are skipped.
Commas inside a value are fine when the value is in double quotes, which is how spreadsheets save CSV. The delimiter is detected, so semicolon-separated files import as well.
Other columns, such as the export's
registered_emailorjoin_token, are ignored unless you map them in step 2.
Import the file
Select New registrant(s) > Import CSV. The Import registrants dialog opens on Upload file.
Drop the file in the upload area or select it. Then select Next step.
On Map columns, check that each Brella field points to the right column of your file. The mapping is filled in automatically when your header row contains every column of the template except
custom_list_idsandallows_natural_search(id,external_id,email,first_name,last_name,company,title,ticket_type_list_id). Otherwise choose the column for each field, or leave a field empty.The
idfield is locked. Select the lock icon to unlock it only when you update existing registrants with Brella's IDs. Fields marked Caution! have a tooltip explaining their effect.Select Next step.
On Preview, check the rows. The text reads "N invites will be imported". Keep Exclude CSV header row from imported data selected so the header isn't imported as a registrant.
Select Import.
The dialog closes and the admin panel shows "N registrants are being uploaded in the background. Refresh page when finished."
What happens next
The import runs in the background. Follow it with the cloud button in the top bar as EventInvitesImport; progress updates every 100 rows. See Track imports and bulk actions with Cloud sync.
New rows become registrants with status "Not joined yet" and a personal join code. Rows with an
idor a matchingexternal_idupdate the existing registrant.If invitations are Published, new registrants with an email address are emailed. Updated registrants aren't emailed by the import.
Brella links new and updated registrants to sponsor booths whose automatic representative linking matches them.
If some rows fail, Brella emails you a report with the subject "Invite import for [event name]". The rows that worked are saved.
How rows are matched
For each row Brella checks, in this order:
idfilled in: update the registrant with that Brella ID.external_idfilled in and a registrant with that external ID exists: update that registrant.Otherwise: create a new registrant. An
external_idin the row is saved on the new registrant.
Only registrants who haven't joined can be matched. A row whose id or external_id points to a registrant who already joined fails with "Event invite not found with: id … or external_id: …". A row with the same id or external_id as an earlier row in the same file fails as a duplicate.
Update existing registrants
Open People > Settings and select Export registrants (.csv). Brella emails you the file.
Open the file in a spreadsheet. Keep the
idcolumn. Changeregistered_email,registered_first_name,registered_last_name,registered_company,registered_job_titleorticket_type_list_idas needed. Delete the rows you don't want to touch.Import the file. On Map columns, unlock
idand map it to theidcolumn. Mapemailtoregistered_email,first_nametoregistered_first_name, and so on, includingticket_type_list_id.Warning: On an update, every field you leave unmapped is imported as empty. An unmapped
email,first_name,last_name,companyortitleclears the registrant's current value. An unmappedticket_type_list_idmoves everyone in the file to the default ticket type list. Map every field you want to keep.Select Next step, check the preview and select Import.
An empty ticket_type_list_id cell on an update moves the registrant to the default ticket type list; an unknown ID fails the row. A mapped field with an empty cell clears that value, except external_id, which keeps its current value. Updating never changes a registrant's join code.
To update by your own IDs instead, keep id locked and fill external_id.
Optional columns
custom_list_ids and allows_natural_search are left out of the import when you don't map them, so existing values stay as they are.
custom_list_ids: replaces the registrant's manually added custom list memberships with the listed lists. An empty cell leaves the memberships unchanged. Memberships created by list automations are not affected. Unknown IDs fail the row with "Invalid custom list IDs: …".allows_natural_search:trueorfalsesets Include in natural language search for the registrant. An empty cell keeps the current value. Any other text fails the row with "Invalid allows_natural_search: must be true or false".
Avoid duplicates
Brella creates a new registrant for every row it can't match. Duplicates happen when you:
import the full list again without mapping
idorexternal_id;re-import a Brella export with
idleft locked;import a file from your registration system that uses different IDs than before.
To fix duplicates, filter People > Registrants by Not joined and delete the extra registrants.
Limits
Every imported registrant gets exactly one seat. Shared codes need a registration link.
external_idmust be unique within the event. A clash fails the row with "ID has already been taken".emailmust be a valid email address or empty.Rows for registrants who have joined can't be updated by CSV. Edit them under People > Registrants > View > Registration details.
The import doesn't set custom field values, identities or interests. Use the Integration API or the registrant panel for those.
Troubleshooting
"Couldn't upload the CSV file. Please, check that is formatted correctly."
The browser couldn't parse the file. Save it again as CSV from your spreadsheet and check that every row has the same number of columns.
The mapping step shows every field as empty
Your header row doesn't contain all template columns, so nothing was mapped automatically. Choose the column for each field by hand.
"Malformed CSV" in the job report
A row has unbalanced quotes or a different delimiter than the rest. Open the file in a spreadsheet, save it again as CSV and import again.
"Event invite not found with: id X or external_id: Y"
The ID doesn't exist in this event, or the registrant has already joined. Remove the row or clear its id and external_id to create a new registrant.
Everyone got an invitation email after the import
Invitations were Published. Unpublish before importing to hold the emails back. See Add registrants one at a time and send invitations.
Names with accents show as wrong characters
The file wasn't UTF-8. Save it as CSV UTF-8 and import the affected rows again with their id mapped.



