> ## Documentation index
> Fetch the complete documentation index at: https://docs.rxresu.me/llms.txt
> Ask it with GET https://docs.rxresu.me/ask?q=<keywords or question>. Short keywords rank best.
> Use these to discover all available pages before exploring further.

# Importing applications from CSV

> Move job applications from a spreadsheet into Reactive Resume with CSV import, check how columns are matched, and export your applications back to CSV.

CSV import/export is available in the web app. Open Reactive Resume in your browser to use it; the mobile app does not offer CSV import/export.

If you've been tracking your job search in a spreadsheet, you can bring it into **Applications** in one go. Save the sheet as CSV, paste or upload it, check how the columns were matched, and import. You can also export your applications to CSV at any time.

## Import applications

<Steps>
  <Step title="Open Import from CSV">
    In **Applications**, select the import/export button (the two arrows next to **Save job**), then **Import from
    CSV…**. If you have no applications yet, select **Import from CSV** on the empty page.
  </Step>
  <Step title="Add your rows">
    Select **Upload .csv** to choose a file, or paste rows into **CSV data**. The first row must be the column headings.
    Select **Use sample** to see an example.
  </Step>
  <Step title="Check the column matches">
    Under **Columns**, each heading from your file points to the field it goes into. Reactive Resume matches common
    headings automatically. Change any match with its menu, or choose **Leave out** to skip a column.
  </Step>
  <Step title="Review the summary">
    The summary says how many applications are ready to import, and how many rows or contacts will be skipped. Invalid
    stage, stage-date or posting-source values are listed by row; correct them or choose Leave out for that column
    before importing.
  </Step>
  <Step title="Import">Select **Import *n* applications**. They're added to your Applications right away.</Step>
</Steps>

<Frame caption="Columns matched automatically, with an unknown column left out">
  <img
    src="/images/guides/importing-applications-from-csv/import-from-csv-column-matching.webp"
    alt="Import from CSV sheet with pasted rows, and a Columns list matching Company to Company, Position to Role, Status to Stage, Applied Date to Stage date, Location, Source, Tags, Contact Name and Contact Email to their fields, and Referrer to Leave out"
  />
</Frame>

<Frame caption="The summary before importing">
  <img
    src="/images/guides/importing-applications-from-csv/import-from-csv-ready-summary.webp"
    alt="Summary reading 2 applications ready to import and 1 row has no company or role and will be skipped, with a Download them link and an Import 2 applications button"
  />
</Frame>

<Frame caption="Invalid stages and dates are named by row. Correct the values or deliberately leave out the columns before importing.">
  <img
    src="/images/guides/career/import-validation.png"
    alt="Import from CSV with Row 2 Stage appllied and Stage date 2026-02-30 marked invalid, and Import disabled"
  />
</Frame>

## Prepare your spreadsheet

Each row becomes one application. Only **Company** and **Role** are required; rows missing either are skipped. Select **Download them** in the summary to get the skipped rows as a CSV file, fix them, and import them again.

These are the fields you can match columns to, with the headings that match automatically (capitals and extra spaces don't matter):

| Field                                                                                       | Headings matched automatically                                         | Notes                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Company**                                                                                 | Company, Employer, Organization                                        | Required.                                                                                                                                                                                                           |
| **Role**                                                                                    | Role, Title, Position, Job Title                                       | Required.                                                                                                                                                                                                           |
| **Stage**                                                                                   | Stage, Status                                                          | One of `saved`, `applied`, `screening`, `interview`, `offer` or `closed`. `rejected` is read as `closed`. Other nonempty values block import until corrected or left out. Rows without a stage import as **Saved**. |
| **Stage date**                                                                              | Applied Date, Stage Date, Stage Entered At                             | The date the application entered its stage, as `YYYY-MM-DD`. Invalid nonempty dates block import. With no stage date, today's date is used.                                                                         |
| **Location**                                                                                | Location                                                               |                                                                                                                                                                                                                     |
| **Salary**                                                                                  | Salary, Salary Range, Compensation                                     |                                                                                                                                                                                                                     |
| **Source**                                                                                  | Source                                                                 | Shows in the Insights sources chart.                                                                                                                                                                                |
| **Link**                                                                                    | URL, Link, Job URL, Job Posting                                        | The job posting's address.                                                                                                                                                                                          |
| **Notes**                                                                                   | Notes, Note                                                            |                                                                                                                                                                                                                     |
| **Tags**                                                                                    | Tags                                                                   | Separate tags with commas, semicolons or vertical bars, such as `remote;unity`.                                                                                                                                     |
| **Contact name**, **Contact role**, **Contact label**, **Contact email**, **Contact phone** | Contact Name, Contact Role, Contact Type, Contact Email, Contact Phone | One contact per row.                                                                                                                                                                                                |
| **Archived (closes it)**                                                                    | Archived                                                               | For files exported from older versions: `true` imports the application as closed.                                                                                                                                   |

A contact needs a name, and its email must be a valid address. If not, the summary counts it as skipped and the application imports without it.

Here's a small example:

```csv
Company,Role,Stage,Stage Date,Location,Source,Tags,Contact Name,Contact Email
Orchard Lane Games,Gameplay Programmer,applied,2026-09-02,Remote,LinkedIn,remote;unity,Nadia Brooks,nadia@orchardlane.example
Silverpine Interactive,AI Programmer,screening,2026-08-28,Stockholm,Referral,ai,,
```

## Import large files

Up to 500 applications import at a time. If your file has more, the summary says how many were left out. Split the file and import the rest separately.

<Tip>
  After importing, use the List view's checkboxes to tag, move or close many applications at once. See [Tracking job
  applications](/guides/tracking-job-applications#acting-on-several-applications-at-once).
</Tip>

## Export applications to CSV

<Steps>
  <Step title="Open Export to CSV">Select the import/export button, then **Export to CSV…**.</Step>
  <Step title="Choose what to export">
    Under **Applications to export**, choose **Current filters** (the applications matching your current search, closed
    ones included) or **All applications (including closed)**.
  </Step>
  <Step title="Limit by date, if you like">
    Set **Application date from** and **Application date to** to export only applications from that period. Leave them
    empty to include every date.
  </Step>
  <Step title="Download">Check the count of applications to export, then select **Download CSV**.</Step>
</Steps>

<Frame caption="Export options">
  <img
    src="/images/guides/importing-applications-from-csv/export-applications-sheet.webp"
    alt="Export applications sheet with Applications to export set to Current filters, empty Application date from and Application date to fields, and 11 applications to export"
  />
</Frame>

The file is named `applications-YYYY-MM-DD.csv` and opens in any spreadsheet app. It has these columns: Company, Role, Stage, Lane, Lane Category, Lane Closed Reason, Stage Date, Application Date, Location, Salary, Source, URL, Tags, Contacts, Notes, Closed Reason, Stage History, Timeline, Created At and Updated At.

**Stage** is always one of the standard stages, so other spreadsheets and older versions can read it. **Lane** is the name of your own stage, **Lane Category** what it counts as, and **Lane Closed Reason** its preset outcome, if any.

You can import an exported file again; most columns match automatically. When a file names stages (a **Lane** column), the **Stages** list asks where each one goes: one of your stages that counts the same, or **Add “_name_” as a new stage**. Matching names are suggested, but nothing imports until every stage has a choice, so no application quietly lands in the wrong stage. A stage that contradicts the row's **Stage** value is listed as invalid. On a server without custom stages, the names aren't kept and rows import with their standard stage. To download everything in your account, including documents, see [Exporting your data](/guides/exporting-your-data).

## Troubleshooting

<AccordionGroup>
  <Accordion title="Some rows were skipped">
    Every row needs a company and a role. Check that those columns are matched under **Columns**, then fill in the
    missing values. **Download them** gives you the skipped rows.
  </Accordion>
  <Accordion title="A column wasn't recognized">
    Pick the right field from the column's menu under **Columns**, or rename the heading in your file to one from the
    table above.
  </Accordion>
  <Accordion title="A stage or date didn't import">
    Use one of the stage values listed above, and write valid dates as `YYYY-MM-DD`, for example `2026-09-02`. The error
    names the row to correct. You can choose **Leave out** for a column when you intentionally want its default instead.
  </Accordion>
  <Accordion title="Tags didn't split correctly">
    Separate tags with commas, semicolons or vertical bars. If you use commas, put the whole cell in double quotes, such
    as `"remote,unity"`, so the commas aren't read as new columns.
  </Accordion>
</AccordionGroup>

MCP clients can import applications too. See [Managing applications with MCP](/guides/managing-applications-with-mcp).
