---
title: "Bulk Spreadsheet Import"
source: /gc-surge/setup-deployment/bulk-spreadsheet-import
locale: en
updated: 2026-09-23
---
> This page covers the full spreadsheet import flow. For an overview of all four ways to add a device, including guided setup and manual options, see [Add a device](/new-admin-quick-start/add-a-device).

The **Import from spreadsheet** feature enables enterprise-scale site onboarding through file-based batch processing. Instead of manually adding hundreds of sites one by one, you upload a prepared spreadsheet and the platform processes all entries in a single operation. Covers: What Bulk Spreadsheet Import Does, The Import Workspace, Bulk Device Configuration, The Template, Before You Upload, Import Process, Common Failure Reasons, After Import.

## What Bulk Spreadsheet Import Does

Access it from the left sidebar: click **Configuration**, then click **Add sites & devices** and select **Import from spreadsheet**. The **Add multiple sites and devices** dialog opens.

The flow runs in three steps: **Upload** — choose your file with the **Upload site sheet** button (or drop a file directly into the drop zone); **Preview** — the uploaded rows appear in an **Imported Sites** table (labelled “Previewing locally. Continue to upload to the server.”) with a count badge (for example **15 sites**) and the columns **Site name**, **Device name**, **IP address**, **HTTP Port**, **RTSP Port**, **Username**, **Password**, and **Device brand**; review the row count and values before committing; **Upload to server** — click **Upload to server** to commit. The platform processes the file server-side and shows a processing state before the final results appear and the import tracker updates with final counts.

**Step 1 — Open the upload dialog.** Click **Add sites & devices** then **Import from spreadsheet**. The **Add multiple sites and devices** dialog opens. Drop your completed file into the upload zone or click **Upload site sheet** (.xlsx or .xls). Use the **Download file** link (“Need a starter template?”) to get the official template. Enable **Auto-send site key to owners after import** if you want site keys delivered automatically to each site owner when the import finishes.

![Screenshot 2026-07-05 095013.png](/api/media/file/Screenshot-2026-07-05-095013.png)

**Step 2 — Review the local preview.** Once your file loads, the **Imported Sites** section appears showing a local preview of all your rows — nothing has been sent to the server yet. A badge shows the total row count (for example **4 sites**). Verify the values in each column: **Site name**, **Device name**, **IP address**, **HTTP Port**, **RTSP Port**, **Username**, **Password**, and **Device brand**. If anything looks wrong, click **Upload site sheet** to replace the file. When everything looks correct, click **Upload to server**.

![Screenshot 2026-07-05 102539.png](/api/media/file/Screenshot-2026-07-05-102539.png)

**Step 3 — Import complete.** When processing finishes, the **Import Status** tab shows a confirmation banner (*Import completed. Confirm your devices in the list below.*) and the **Overall onboarding progress** bar reflects the final results. Review the **Total**, **Deployment**, **Devices**, and **Progress** cards for a full breakdown. Any rows that failed validation are listed under the **Failed** tab — download the pre-filtered file using **Download spreadsheet to fix and re-upload**, correct only the failed rows, and re-import without re-submitting rows that already succeeded.

![Screenshot 2026-07-05 102430.png](/api/media/file/Screenshot-2026-07-05-102430.png)

**When to Use It**

Bulk import is the right path when the rollout is site-heavy, when devices are being handed over in batches, or when you want one validation workspace for the whole deployment instead of a sequence of single-site forms.

## The Import Workspace

After you upload a file, the **Import Status** tab shows the results of the import. When processing finishes, a confirmation banner appears (“Import completed. Confirm your devices in the list below.”) and an **Overall onboarding progress** bar shows the percentage of devices successfully onboarded (for example, 100% — 4/4 cameras).

Below the progress bar, four summary card groups break down the import. Each card can be switched between a count and a percentage view:

- **TOTAL** — total count of submitted rows by outcome: **Valid**, **Invalid**, **Failed**, and **Created**.
- **Deployment** — how the created sites connect: **Public**, **Private**, and **Edge**.
- **DEVICES** — device connectivity: **Online**, **Offline**, and **Alarm**.
- **Progress** — onboarding state: **Done**, **Left**, **Online**, and **Active**.

**Status Tags**

Once the import completes, each row in the Imported Sites table shows two status tags: the creation state and the connection path.

- **Created** — the site and device record was created successfully and is pending activation.
- **Public IP** — the device is using the Public IP connection path (cloud-direct).
- **Local Agent** — the device is using the Private/VPN path and requires the Local Agent on-site.
- **GC Edge** — the device is using the Edge Deployment path.
- **Alarm Ready** — the device is fully connected and actively sending alarms to the platform.

If any rows need correcting, use the **Download spreadsheet to fix and re-upload** link beneath the cards to export a pre-filtered file ready for correction and re-upload — you do not have to extract the failed rows manually from the original file.

The lower part of the view lists the imported **Sites** (with **Site**, **Site Contact**, **Type**, **Connected**, and **Status** columns), plus a site-name search and a type filter. Selecting a site opens its device panel on the right, which has two tabs — **All Devices** and **Failed** — along with a device search box and a **Send Site Key** action. Open the **Failed** tab to see each failed device and the specific validation issue that needs fixing before re-upload.

**Known issue:** The status filter in the Failed tab may show an incorrect count until the page is refreshed. If the Failed tab appears empty but the counters still show a non-zero Failed count, refresh the page before concluding the import is clean.

## Bulk Device Configuration

After the import completes, the **Bulk device configuration** panel appears below the progress bar. It pushes port, SMTP, and motion email settings to all private network devices in the import batch — so you do not need to configure each device individually.

Click **Configure Devices** to start. The panel checks whether the Local Agent is running and reachable on the same local network as the imported devices.

**Local Agent Not Connected**

If the Local Agent is not running or not reachable, the panel shows a **Local Agent Not Connected** warning. To resolve it:

1. **Download the Local Agent** — click **Windows Installer** to download the agent for the on-site PC.
2. Install and run the agent on a device that is connected to the same local network as the devices.
3. Once the agent is running, click **Retry Connection**. Bulk configuration starts automatically as soon as the agent is reachable.

Bulk device configuration only applies to Private network devices in the current import. Public IP and GC Edge devices do not require this step.

## The Template

Always use the official NXGEN spreadsheet template. For a column-by-column guide, see [How to Fill the Bulk Import Template](/setup-deployment/how-to-fill-the-bulk-import-template). Download it directly from the platform using the **Download file** link (“Need a starter template? Download file”) in the **Add multiple sites and devices** panel — do not use a custom format or a file from a previous import.

![Screenshot 2026-07-02 155348.png](/api/media/file/Screenshot-2026-07-02-155348.png)

Each row represents one device. These are the template columns, in order — match the downloaded template exactly and do not rename or reorder them:

- **Site Name** — the site name.
- **Camera Name** — device name or label.
- **IP Address** — device IP address.
- **HTTP Port** — device HTTP port.
- **RTSP Port** — device RTSP streaming port; leave blank if not used.
- **User Name** — device username.
- **Password** — device password.
- **Camera Brand** — device brand (for example Hikvision, AXIS, or Dahua).
- **Site Owner Email** — the email address of the on-site contact who will receive the Site Key and run the Local Agent for field activation. Required for Private/VPN and GC Edge sites; optional for Public IP.
- **Contact Phone** — onsite contact phone number, including country code (for example +15550101).
- **Contact Name** — onsite contact name.
- **HTTPS?** — whether to use HTTPS: TRUE or FALSE.

**Column hygiene rules:**

- One device per row.
- Plain text values only — no Excel formulas or special formatting.
- Do not move columns out of the official order.
- Do not leave required fields empty.
- Save the file as **.xlsx** or **.xls** (not .csv).

## Before You Upload

The most common cause of bulk import failures is data quality issues in the source file. Validate before uploading:

- All required columns are present and in the correct order.
- Every row has values in the required fields for its connection type. Required for all sites: site name, device IP, HTTP Port, device brand, HTTPS?, username, and password. Required for Private/VPN and Edge sites only: contact name, contact phone (**Site Owner Email** is also required for Site Key delivery). Contact fields are optional for Public IP sites.
- Site names are unique within the file and do not conflict with existing sites in the platform.
- Contact phone numbers include country codes — for example `+962797XXXXXX`, not `0797XXXXXX`.
- No rows have data in the wrong column.

## Import Process

**Phase 1 – Validation batch**

1. Select 5 to 10 representative rows from your full dataset.
2. Upload this test batch first.
3. Verify all rows appear in the **All Devices** tab with no failures.
4. If failures occur, identify the pattern, fix the source data, and retest before proceeding to the full file.

**Phase 2 – Full import**

1. Upload the complete file. Under **Send options**, an **Auto-send site key to owners after import** toggle is available — enable it to have the platform automatically send each site's activation key to the assigned contact. When this option is enabled, select your delivery channel(s) — **WhatsApp**, **Email**, or both. If you prefer to distribute keys manually, leave this off and use the Site Key panel in Configuration after import. Turn auto-send on only when every row already has a correct, verified contact; leave it off when staging sites in advance, when contacts aren’t verified, or when you want to vet the import for errors before any keys go out.
2. After processing completes, note the total count in the **All Devices** tab.
3. Compare against your expected total — any discrepancy requires investigation before continuing.
4. Switch to the **Failed** tab.

**Phase 3 – Failed row triage**

1. Read the failure reason for each failed row.
2. Locate the corresponding row in your source file and correct the specific issue.
3. Add the corrected row to a separate **retry file** — do not re-upload rows that already imported successfully.

**Phase 4 – Re-import corrected rows**

1. Upload the retry file containing only the corrected rows.
2. Verify the corrected rows appear in the **All Devices** tab with no failures.
3. Repeat until the Failed tab is empty.

## Common Failure Reasons

- **Duplicate site name** — Site name already exists in the platform or in the same file. Rename the site in the source file.
- **Missing required field** — A required column is empty in that row. Populate the missing value.
- **Invalid phone format** — Phone number missing country code or contains non-numeric characters. Reformat as `+[country code][number]`.
- **Site not found** — Device row references a site that does not exist. Create the site first, then re-import the device.
- **Column order mismatch** — Data is in the wrong columns. Match the exact column order of the NXGEN template.
- **Unsupported brand** — the brand string isn’t recognised for auto-configuration. Use a supported auto-configuration brand spelled exactly as in the template (for example Hikvision, AXIS, Dahua).
- **Malformed IP address** — the value isn’t a valid IPv4, IPv6, or DNS hostname (and must have no trailing slash).
- **Port out of range** — the port must be between 1 and 65535.

## After Import: Final Validation

After completing all import phases with zero failures:

1. Open [**Configuration**](/admin/configuration) and verify the total site count matches your expected roster.
2. Navigate to the [Home Dashboard](/admin/home-dashboard-overview) and confirm newly imported sites appear in the site cards section.
3. In [**Video Search**](/admin/video-search), verify event flow for each newly created site. Allow a few minutes after activation for the first events to arrive.
4. Check [**Analytics** ](/admin/analytics-dashboard-overview)for the new sites — they should start accumulating alarm volume data once devices are activated.