Skip to main content

Import registrants from a CSV file

C
Written by Customer Success

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

id

No

Brella's ID of an existing registrant, from the export. Fill it only to update that registrant. Leave it empty for new people.

external_id

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 id is empty.

email

No

The registrant's email address. Without it Brella can't send the invitation. The address is trimmed and lowercased.

first_name

No

First name.

last_name

No

Last name.

company

No

Company.

title

No

Job title.

ticket_type_list_id

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.

custom_list_ids

No

Comma-separated IDs of custom lists of this event, for example 12,15. See "Optional columns".

allows_natural_search

No

true or false. See "Optional columns".

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_email or join_token, are ignored unless you map them in step 2.

Import the file

  1. Select New registrant(s) > Import CSV. The Import registrants dialog opens on Upload file.

  2. Drop the file in the upload area or select it. Then select Next step.

    Import registrants dialog on the Upload file step with the CSV template link and the id warning

  3. 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_ids and allows_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.

  4. The id field 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.

  5. Select Next step.

    Map columns step with the locked id field, the mapped fields and a Caution! marker on custom_list_ids

  6. 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.

  7. Select Import.

Preview step with the row count, the header checkbox and the preview table

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 id or a matching external_id update 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:

  1. id filled in: update the registrant with that Brella ID.

  2. external_id filled in and a registrant with that external ID exists: update that registrant.

  3. Otherwise: create a new registrant. An external_id in 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

  1. Open People > Settings and select Export registrants (.csv). Brella emails you the file.

  2. Open the file in a spreadsheet. Keep the id column. Change registered_email, registered_first_name, registered_last_name, registered_company, registered_job_title or ticket_type_list_id as needed. Delete the rows you don't want to touch.

  3. Import the file. On Map columns, unlock id and map it to the id column. Map email to registered_email, first_name to registered_first_name, and so on, including ticket_type_list_id.

    Warning: On an update, every field you leave unmapped is imported as empty. An unmapped email, first_name, last_name, company or title clears the registrant's current value. An unmapped ticket_type_list_id moves everyone in the file to the default ticket type list. Map every field you want to keep.

    Registrant column mapping with ID unlocked and registered email, first name and group ID mapped

  4. 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: true or false sets 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 id or external_id;

  • re-import a Brella export with id left 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_id must be unique within the event. A clash fails the row with "ID has already been taken".

  • email must 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.

Related articles

Did this answer your question?