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 and Customers — 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?

Harvestr has four imports. Use this one 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 simple CSV imports are faster:

If you're importing

Use

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

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

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

Get the template

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

  • Keep it as Excel — no CSV, no other format

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

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

Limits per import

Discoveries

1,000

Customers

30,000

Feedback

10,000

Attributes (labels, segments…)

1,500 attributes, unlimited values

Need more? Get in touch and we'll sort it out.

How the file is structured

Three sheets

One sheet each for Feedback, Discoveries and Customers. 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 behaviour 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?