> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trytalkvalue.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload attendees from a CSV

> Fill an event you created in TalkValue from a CSV file: map its columns, match attendees by a unique ID, and re-upload to update them.

An event you create in TalkValue gets its attendees from a CSV file. The **Import attendees** wizard reads your file, maps its columns to attendee fields, and runs the import in the background. Events imported from Eventbrite or Luma get their attendees from the provider instead; see [Import attendees](/badge/events/import-attendees).

<Note>
  **Before you start**

  * An event created with **Create Event**. See [Add an event](/badge/events/create#create-an-event-in-talkvalue).
  * A `.csv` file of 10 MB or less, saved as UTF-8, with column names in the first row.
  * An email address and a unique ID for every attendee, such as a ticket or registration number.
</Note>

## Upload and import

<Steps>
  <Step title="Open Import CSV">
    Open the event and click **Import CSV** in the page header or in the event's side panel. Creating an event opens this wizard for you. It has three steps: **Upload**, **Configure**, and **Review**.
  </Step>

  <Step title="Upload the file">
    Drag the CSV onto the upload area, or click **Select file**. For a starting point, click **Download sample template**. Its columns are `Registration ID`, `First Name`, `Last Name`, `Email`, `Company`, `Job Title`, `Ticket Type`, and `Dietary Restrictions`. TalkValue analyzes the file and shows its row and column counts. Click **Continue**.
  </Step>

  <Step title="Map columns">
    The **Map columns** table lists every column with sample values. In **Import as**, pick the attendee field each column fills: **Email**, **Full Name**, **First Name**, **Last Name**, **Company**, **Job Title**, **Phone Number**, **Ticket Type**, or **Barcode**. Each field takes one column, and **Email** is required.

    A column left as **Custom field** is saved with each attendee under its column name, ready to print on the badge. **Ticket Type** values become the event's ticket types, which [template variants](/badge/concepts/events-attendees-templates#templates) attach to. Leave **Barcode** unmapped and TalkValue generates a code for each attendee to encode in the badge QR.
  </Step>

  <Step title="Choose the Unique ID column">
    Under **Match attendees**, pick the **Unique ID column**. Rows with the same value become one attendee, in this file and in later uploads. If one person can hold several tickets, pick a ticket or registration ID rather than Email. Click **Continue**.
  </Step>

  <Step title="Review and start">
    **Data Preview** shows the first five rows as they will import. When the event already has attendees, pick how rows that match one are handled:

    * **Update existing** (default). The row overwrites that attendee's details. Check-ins are kept.
    * **Skip duplicates**. The row is skipped, and only new attendees are added.

    Click **Start Import**.
  </Step>

  <Step title="Follow the import">
    The import page counts rows as they process. You can leave it: the import keeps running, and the event page lists it in the **CSV imports** card above the **Attendees** table. When it finishes, the page shows what happened to each row: **Added**, **Updated**, **Duplicates** (rows that repeat a Unique ID from earlier in the same file), **Skipped**, and **Failed**. Click **View attendees** to open the event.
  </Step>
</Steps>

## Update attendees with a new upload

Upload a newer version of your file to the same event to add late registrations or correct details. Keep the same **Unique ID column**. The wizard fills in your previous mapping, and warns you if you pick a different column, because a new column adds every row as a new attendee instead of updating the ones you already have.

With **Update existing**, a matching row replaces the attendee's details with the values in the new file, so upload the full file rather than only the changed columns. If you leave **Barcode** unmapped, every existing attendee keeps their barcode, so badges you already printed still scan. Check-ins and VIP flags stay as they are.

## Fix failed rows

When rows fail, the import ends as **Partial Success**, and the **Failed rows** card lists each row with the column and the reason. Click **Download failed rows** to get those rows from your original file, fix them, then upload the fixed file with the same Unique ID column.

| Reason | Fix |
| - | - |
| `Unique ID is empty` | Fill in the Unique ID column for the row. |
| `Email is empty` | Add the attendee's email. |
| `Barcode is already used by another attendee` | Give the row a barcode no other attendee has, or leave **Barcode** unmapped. |
| `Longer than 255 characters` | Shorten the value in the named column. |

## Troubleshooting

### "An import is still running"

Another upload for this event hasn't finished, and starting a second one now can make one of them fail. Click **View progress** and wait for it to finish, then upload the next file.

### "The import stopped before it finished"

The import ended as **Failed**. Upload the file again with the same Unique ID column to finish it.

### The file is rejected

The wizard accepts one `.csv` file of up to 10 MB. Export your spreadsheet as CSV (UTF-8), or split a larger file into several uploads that share the same Unique ID column.

## Related

* [Add an event](/badge/events/create). Create the event that the CSV fills.
* [Events, attendees, templates](/badge/concepts/events-attendees-templates). How ticket types and custom fields reach the printed badge.
* [Add elements](/badge/templates/add-elements). Place custom fields and the barcode QR on a template.
* [Export your data](/administration/export-your-data#badge-event-exports). Download the attendee list as CSV.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.