Skip to main content

Import data into Harvestr with Excel/CSV

How to import Discoveries, Feedback, and Customers with associations

Written by Marina Salmon

Import Discoveries, Feedback, users and companies, and the associations between them, from a single Excel file. This is how you bring an existing backlog into Harvestr without losing who said what.

Which import do you need?

Settings > Import data offers four imports. Use Everything at once (this Excel import) only if at least one of these applies:

  • you're importing two or more object types with associations: feedback linked to Discoveries, feedback linked to customers

  • you're importing Discoveries with tags and/or custom fields

  • you're importing customers with segments and/or attributes

Otherwise, the CSV imports are faster:

If you're importing

Use

Limit per file

Feedback with title, content and user emails/names, no companies, no labels

500 messages

Discoveries with components, titles, descriptions and states, no tags, no custom fields

2,000 discoveries

Customers with company names or user emails/names, no segments, no attributes

3,000 rows

Importing data is reserved for Editors and Owners.

Get the template

You must use this Excel template. The import reads it by position, so an edited structure fails.

  • Keep it as Excel (.xlsx, up to 5 MB): no CSV, no other format

  • Don't touch row 1, and don't rename sheets or headers. Fill from row 2, column A, on each sheet, and overwrite the sample data

  • Never leave an attribute value empty (ARR: ). The whole import fails

Limits per import

File size

5 MB

Discoveries

5,000

Users and companies

100,000

Feedback

10,000

Tags, labels, segments, fields and attributes

1,500 in total, unlimited values

A file over a limit is stopped at upload, with the counts that exceed it. Split it into smaller files, or get in touch and we'll sort it out.

Run the import

Go to Settings > Import data and click Import on Everything at once. The import has three steps:

  1. Upload: drop your .xlsx file or browse to it.

  2. Check the file: Harvestr reads the three sheets and lists what it found.

    • Errors name the sheet and the row. The import cannot start until you fix them in the file and click Upload another file.

    • Warnings don't block the import: the row is imported and only the value in question is skipped. Click Show to read them.

    • A preview shows the first rows of each sheet. Click Next when it looks right.

  3. Import: review how many Discoveries, tags, fields, users and companies, segments, attributes, feedback and labels the import will create or update, then click Import.

If the file contains segments, an Import settings dialog asks how to treat the segments of users and companies that already exist:

  • Overwrite existing segments (default): their segments are replaced by the ones in the file

  • Merge new segments with existing: the segments in the file are added to the ones they already have

Nothing is written until you click Import. Records then appear as they are created, and you get an email when the import is done.

How the file is structured

Three sheets

One sheet each for Feedback, Discoveries and Customers (shown as Users and companies in Harvestr). One row = one record, one column = one property.

Fill one sheet, two, or all three: whatever your import needs.

IDs

Every sheet has an ID column that must be filled for each row. Use an incrementing number or a random unique string.

These IDs exist only for the import: they're how rows reference each other, and they're never stored in Harvestr.

They must be unique within a sheet, but not across sheets.

Associations

Associations are declared on the Feedback sheet only:

  • Column D: the Discovery ID(s) this feedback belongs to

  • Column E: the Customer ID who gave it

Importing customers

Users, companies, or users with their companies.

Users

Required: id · user name or email (or both) · type = user

The unique identifier for a user is the email: it must be unique in the file. The id column is import-only and is never used to identify the user in Harvestr.

Optional:

  • company name: links the user to that company

  • phone

  • description

  • segments: comma-separated (enterprise, Europe). Segments that don't exist yet are created

  • attributes: format [name]: [value], comma-separated (MRR: 499, Plan: Enterprise). Types: boolean (true/false, yes/no, 0/1), text, number. Attributes that don't exist yet are created

Importing a user whose email already exists updates that user's fields.

Companies

Required: id · company name · type = company

The unique identifier for a company is its name: it must be unique in the file. As with users, the id column is import-only.

Optional:

  • domains: comma-separated. Used to auto-assign users to this company by email domain

  • description

  • segments and attributes: same format and behavior as for users

Importing a company whose name already exists updates that company's fields.

Users with their company's attributes

Attributes belong to whichever record carries them, so you need two rows on the same sheet:

  • the user row: id, user name, company name, email, type: user

  • the company row: id, company name, attributes, type: company

The shared company name is what ties them together.

Importing Discoveries

Required:

  • id

  • title

  • component: slash-separated for hierarchy (Master component / Sub-component 1 / Sub-component 2). Components that don't exist are created

Optional:

  • tags: comma-separated

  • description: accepts HTML

  • status: the Discovery state. Falls back to your default state if empty

  • assignee email: the Harvestr teammate to set as owner. Ignored if it matches no teammate

  • create date: ISO-8601

  • fields: comma-separated key: value for custom field values and scores (ease: 3, impact: 4)

    • The fields must already exist in your project. The import never creates a new Discovery field

    • Values must match the field's type in Harvestr: numeric, string, or boolean (true/false, yes/no, 0/1)

    • Empty values fail the import

Dates must be ISO-8601:

2022-05-08 (day) · 2022-05-08T15:10 (minute) · 2022-05-08T15:10:10 (second) · 2015-06-10T10:40:38.974 (millisecond)

With the Z modifier: 2022-05-08T15:10Z · 2022-05-08T15:10:10Z · 2015-06-10T10:40:38.974Z

Any other format silently falls back to the default value.

Worked example

A Discovery "PayPal login" under Payment systems / PayPal, state In progress, tags payment, PayPal, impact 5.

Which lands in Harvestr as:

And creates the component tree if it didn't exist:

Imports create, they don't update. Importing a Discovery whose title already exists creates a duplicate rather than updating the original. Run a test import on a handful of rows before committing the full file.

Importing feedback

Required:

  • id

  • content: the body. HTML and markdown both accepted

Optional:

  • title

  • count as: a whole number (0 or more) setting how much this item weighs in the Discovery's feedback count. Use it when one imported row stands for several real requests

  • discovery id: comma-separated IDs from the Discoveries sheet

  • customer id: the ID from the Customers sheet; this is the requester

  • labels: comma-separated (high priority, financial)

  • assignee email: ignored if it matches no teammate

  • create date: ISO-8601 (see the format box above)

  • source url: where the feedback originally came from

Linking feedback as you import it

Below, one feedback item is attached to customer 2 (John Doe) and categorized into two Discoveries, 1 ("PayPal login") and 2 ("Generate bitcoin wallets").

As with Discoveries, feedback is never updated by an import: a matching title or content produces a duplicate.

Related

Did this answer your question?