Import Relations Between Objects via CSV
Overview¶
This guide walks you through importing relations between objects—for example, linking People to Companies, or Opportunities to People.
Note
What can be imported: Only one-to-many relations pointing to a single object type. Relations pointing to multiple object types (like Notes linking to People AND Companies) are not yet supported for import.
Understanding Relations¶
What is a "One-to-Many" Relation?¶
In a one-to-many relation:
- One Company has many People (employees)
- One Company has many Opportunities
- One Person has many Tasks
The "one" side is the parent. The "many" side is the child.
Common Relations in Grovana¶
| Relation | "One" Side (Parent) | "Many" Side (Child) |
|---|---|---|
| Companies → People | Company | People |
| Companies → Opportunities | Company | Opportunities |
| People → Tasks | Person | Tasks |
| People → Notes | Person | Notes |
Step 1: Identify the "One" and "Many" Sides¶
Before importing, determine which object is the parent and which is the child.
Ask yourself: "Does ONE [Object A] have MANY [Object B]?"
- One Company → Many People ✓ (Company is parent)
- One Person → Many Companies ✗ (This is wrong—a person belongs to one company)
Step 2: Import the Parent Records First¶
The parent ("one" side) must exist in Grovana before you can reference it.
Import order:
- Companies first (no dependencies)
- People second (link to Companies)
- Opportunities third (link to Companies and/or People)
- Tasks/Notes (link to any of the above)
Warning
If the parent record doesn't exist, the import will fail.
Always verify that Companies are imported before importing People with company references.
Step 3: Note the Parent's Unique Identifier¶
You need to reference the parent record using a unique identifier. Available options:
| Parent Object | Available Unique Identifiers |
|---|---|
| Companies | id (UUID), domain (recommended), or any custom unique field |
| People | id (UUID), email, or any custom unique field |
| Workspace Members | id (UUID), email (not name) |
| Custom Objects | id (UUID), or any field marked as unique |
Note
Recommended: Use domain for Companies and email for People. These are human-readable and easy to verify in your spreadsheet.
Finding the Identifier¶
If you need the id:
- Export the parent records from Grovana
- The export includes the
idcolumn - Use these IDs in your child records file
Step 4: Verify the Relation Field Exists¶
Before importing, ensure the relation field exists between your objects.
To check or create:
- Go to Settings → Data Model
- Select your child object (e.g., People)
- Look for a relation field pointing to the parent (e.g., Company)
- If it doesn't exist, create it:
- Click + Add field
- Select Relation type
- Choose the parent object
Step 5: Prepare Your CSV File¶
Add a column to your child CSV that references the parent using its unique identifier.
Example: People Linking to Companies¶
Your People CSV:
firstName,lastName,email,jobTitle,companyDomain
John,Smith,[email protected],CEO,https://acme.com
Jane,Doe,[email protected],CTO,https://widgets.co
Bob,Johnson,[email protected],Developer,https://techstart.io
The companyDomain column references the Company's domain.
Format Requirements¶
| Identifier | Format | Example |
|---|---|---|
| Domain | URL format | https://acme.com |
| Standard email | [email protected] |
|
| ID | UUID | c776ee49-f608-4a77-8cc8-6fe96ae1e43f |
Warning
Domain format matters!
Use https://domain.com (not just domain.com). This matches how Grovana stores Company domains and prevents matching errors.
Important Rules¶
- Exact match required — the value must exactly match the parent record
- Map only ONE unique identifier — don't include both
companyIdANDcompanyDomain - Case sensitive —
Acme.com≠acme.com
Step 6: Upload and Map the Relation¶
- Navigate to the child object (e.g., People)
- Click ⋮ → Import records
- Upload your CSV file
- In the field mapping step:
- Find your relation column (e.g.,
companyDomain) - Map it to the Company relation field
- Find your relation column (e.g.,
- Complete the remaining mapping
- Review errors and confirm
Grovana will automatically link each child record to the matching parent.
Step 7: Verify the Import¶
After importing:
- Open a few child records (e.g., People)
- Verify the relation field shows the correct parent (e.g., Company)
- Open a parent record and check the related records section
Common Mistakes to Avoid¶
| Mistake | Problem | Solution |
|---|---|---|
| Wrong import order | Importing People before Companies | Always import parents first, then children |
| Wrong domain format | Using acme.com instead of https://acme.com |
Use full URL format with https:// |
| Multiple unique fields | Mapping both companyId AND companyDomain |
Map only ONE unique identifier |
| Missing relation field | The relation field doesn't exist in the data model | Create it in Settings → Data Model before importing |
| Non-existent records | The parent record doesn't exist in Grovana | Import parent records first, or check for typos |
| Case mismatch | Acme.com in file but acme.com in Grovana |
Ensure exact case matching |
Linking to Workspace Members¶
When linking to Workspace Members (your team):
- Use their email address, not their name
- Example:
[email protected], not "John Smith"
taskName,assignedTo
Follow up with client,[email protected]
Review proposal,[email protected]
FAQ¶
What if my parent record doesn't have a domain or email?
You have two options:
- Use the Grovana
id(export parent records to get their IDs) - Create a custom unique field in your data model to store an external ID from your previous system
Can I update relations on existing records?
Yes! Include the child record's unique identifier (e.g., email for People) and the new relation value. The import will update the relation.
Can I import Many-to-Many relationships?
Many-to-Many relations are not yet supported for import. This is planned for H1 2026.
Can I link to multiple object types (like Notes to People AND Companies)?
Relations pointing to multiple object types are not yet supported for import/export. This is on our roadmap.
What happens if a parent record doesn't exist?
The import will show an error for that row. You can either:
- Import the parent record first, then re-import
- Fix the reference value
- Remove the row from import
Why is my relation not linking correctly?
Common causes:
- Wrong format (use
https://domain.comfor domains) - Case mismatch (check exact spelling)
- Parent doesn't exist (import parents first)
- Mapping multiple identifiers (use only one)
Warning
Remember: Soft-deleted records count toward uniqueness.
If you're getting "not found" errors but the record seems to exist, check Command Menu → See deleted records. The parent may have been soft-deleted.
Troubleshooting¶
Having issues? Check: