---
title: "Employee File"
description: "Use a spreadsheet as your source of employees: download the sample file, fill the columns, upload it, and re-upload to update. The way to run Pyn without an HRIS."
sidebar:
  label: Overview
  order: 0
area: integrations
feature: employee-file
appPath: /settings/integrations/available
lastVerified: 2026-10-22
version: "2026-10-16"
audience: admin
related:
  - integrations
  - directory/employees
  - integrations/sync-and-matching
  - integrations/sample-data
intercom:
  - id: "16755797"
    title: How to Upload Employee Data Manually (Pyn 2)
    url: https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2
    note: replaces
  - id: "16755703"
    title: Connect  to your HRIS (Pyn 2)
    url: https://intercom.help/pyn/en/articles/16755703-connect-to-your-hris-pyn-2
    note: draws on
  - id: "6024080"
    title: How to upload employee data manually (Pyn 1)
    url: https://intercom.help/pyn/en/articles/6024080-how-to-upload-employee-data-manually-pyn-1
    note: "Pyn 1 article, kept for reference"
---

Employee File turns a spreadsheet into your employee directory. Each row is one employee, each column a Pyn property, and every upload is an upsert by employee id: new rows are added, changed rows are updated. Pyn validates the file before anything is saved and tells you which rows and columns it could not read.

## Before you start

- You are an admin or owner.
- Prepare a CSV, XLS or XLSX whose column headers are the property names below. **Download Sample File** gives you a CSV with every column and five example rows.
- Every row needs `employeeId` and `primaryEmail`. For employees in the US, Canada or Australia, give a `timeZone` or a `postalCode` with the `country`, or Pyn cannot place them in a zone.

![The Employee File integration under Installed, with the upload panel open.](https://support.pynhq.com/media/integrations/employee-file/integrations-employee-file-tile.png)

## Connect

1. In Pyn, open **Settings** in the left navigation, then **Available** under **Integrations**.

2. Select the **Employee File** tile; its cover reads **File Upload**. Pyn creates the integration and opens its panel: "Upload a spreadsheet of your employees to get started. Use the sample file to see the expected columns."

3. Select **Download Sample File** and build your file on it, keeping the header row.

4. Select **Upload** and choose your file. The panel shows **Uploading...** while it validates and saves.

5. On success it reads "Success! Uploaded n records. Head over to the Directory to see employees after processing completes. This can take a minute or two."

If rows fail, the panel lists them under "There were n errors found in the uploaded file:" with the row and the problem, for example `Unknown country: "Engalnd"`, `Could not determine timezone from country "United States". Add a postal code or choose a time zone.` or `Invalid birthday format. Expected MM-dd, dd/MM, yyyy-MM-dd or ISO8601 datetime.` Fix those rows and upload again; the valid rows were saved.

## What syncs

| Column | Required | Notes |
| --- | --- | --- |
| `employeeId` | Yes | Your stable id for the person; uploads match on it |
| `primaryEmail` | Yes | Work email, also used to match Slack and Google accounts |
| `displayName`, `legalName`, `preferredName`, `jobTitle` | | |
| `personalEmail`, `secondaryEmail`, `avatarUri` | | Personal email is used for pre-boarding |
| `status` | | `active`, `inactive` or `leave` |
| `startDate`, `terminationDate`, `tenureDate` | | `yyyy-MM-dd` |
| `birthday` | | `MM-dd`, `dd/MM`, `yyyy-MM-dd` or an ISO date-time |
| `country`, `postalCode`, `timeZone` | | Country as a name or ISO code; time zone as an IANA name such as `Europe/London` |
| `businessUnit`, `department`, `division`, `location`, `team` | | Become demographics and groups |
| `managerId`, `buddyId`, `hrbpId`, `mentorId` | | The `employeeId` of the related person |

There is no scheduled refresh; the file is read when you upload it. The **Advanced** tab lists **Fields in Employee File** with a count per column. You can also add one person at a time with **Add employee** in [Employees](https://support.pynhq.com/directory/employees/), which asks for **Full name**, **Preferred name**, **Work email**, **Personal email**, **Start date**, **Country**, **Time zone** and **Manager**, and adds them as an upcoming joiner.

## Test it

Open [Employees](https://support.pynhq.com/directory/employees/) a minute or two after the upload. Active rows appear under **Active**, future start dates under **Upcoming**, and `status` of `inactive` under **Inactive**. Open a person to check their manager link.

## Reconnect or disconnect

There are no credentials. Upload a new file to change data; rows absent from a later file are left as they were. **Deactivate** keeps the data but ignores uploads; **Activate** re-enables them.

## Troubleshooting

| What you see | What it means |
| --- | --- |
| "The uploaded file was empty" | No data rows below the header, or the header row is missing. |
| A row error naming `country` or `postalCode` | The country name was not recognised, or the postal code did not resolve to a zone. Add `timeZone`. |
| A manager is not linked | `managerId` does not match any row's `employeeId`. |
| Someone shows twice | Their `employeeId` changed between uploads. Keep ids stable. |

## Related

- [Integrations](https://support.pynhq.com/integrations/) for the HRIS alternatives.
- [Employees](https://support.pynhq.com/directory/employees/) to check the uploaded records and add one person.
- [Sync cadence and matching](https://support.pynhq.com/integrations/sync-and-matching/) for how ids and emails match.
- [Sample Data](https://support.pynhq.com/integrations/sample-data/) to try Pyn with a fictional roster instead.

## Related Intercom articles

- [How to Upload Employee Data Manually (Pyn 2)](https://intercom.help/pyn/en/articles/16755797-how-to-upload-employee-data-manually-pyn-2) — replaces
- [Connect  to your HRIS (Pyn 2)](https://intercom.help/pyn/en/articles/16755703-connect-to-your-hris-pyn-2) — draws on
- [How to upload employee data manually (Pyn 1)](https://intercom.help/pyn/en/articles/6024080-how-to-upload-employee-data-manually-pyn-1) — Pyn 1 article, kept for reference
