# Import records from a spreadsheet or map file

Last updated: 2026-10-27

> Bring many records in at once from an Excel or CSV spreadsheet or a map file (Shapefile, GeoJSON, KML), match the columns, and create them.

Admins can create many records at once from an Excel or CSV spreadsheet or a map file. Import is turned on per record type: if a list has no **Import Spreadsheet** or **Import Geofile** button at the top, ask us to turn it on for that list.

![The top of a list: the Import Spreadsheet button beside the list's title, above the list's buttons](https://restorationscope.com/docs/figures/en/import-button.png)

## Before you start

- Only admins can import. Editors see the button, but it tells them **Only an administrator can do this.**
- Each spreadsheet row, or each shape in a map file, becomes a new record, except rows with nothing in the matched columns and rows your app's import rules leave out. Import adds records; it doesn't update the ones you already have.
- There is no built-in connection to KoboToolbox or ODK. Download your submissions from there as an Excel file and import that file. If you are comparing tools, see [KoboToolbox alternatives](https://restorationscope.com/blog/kobotoolbox-alternatives) and [ODK alternatives](https://restorationscope.com/blog/odk-alternatives).

The import window has three steps along the top: **Upload**, **Match** and **Review**.

## 1. Upload a spreadsheet

1. Open the list you want to add records to, for example **Sites**.
2. Click **Import Spreadsheet**.
3. Drop your file in the box, or click the box to choose it: an Excel file (.xlsx or .xls) or a .csv. The box lists only .xlsx and .xls, but a .csv works too. A .csv can garble accented letters such as á or ñ: if yours has them, open it in Excel or Google Sheets and save it as .xlsx first.
4. If the file has several sheets, choose one under **Sheet**.
5. Under **Header rows**, set the row (or rows) that hold the column names. **Headers preview** shows the names it found.
6. Click **Process Spreadsheet**.

## 1. Upload a map file

1. Open the list you want to add records to.
2. Click **Import Geofile**.
3. Drop your file in the box, or click the box to choose it: .zip, .shp, .geojson, .json, .kml or .kmz. For a Shapefile, use its .zip, or add the .shp together with its .dbf, .shx and .prj files.
4. Click **Upload files**. The shapes appear on a map in the window, so you can check them.
5. Click **Continue**.

## 2. Match the columns

The app matches the columns it recognises to its own fields. They show under **Matched Records**, each field with the column it takes its value from.

- Columns it didn't match sit under **Unmatched Columns**. Drag one onto a field that has no column yet.
- To undo a match, click the column's name next to the field.
- Point at a column or a field to see its first values under **Preview:**.

Click **Done Matching** when every field you need has its column.

## 3. Review and create

The last step says how many records will be created and shows them in a table. Compare the count with your file, and check a few rows.

Under **Import mode**:

- **Append** adds the new records to the ones you already have. Use this one in most cases.
- **Replace** deletes every existing record of this type in your app, including any your filters hide, then adds the file's records. Some apps don't allow it.

Click **Create**. Then check that the new records appear in the list. If they don't, message us.
