Home › Guides › From a spreadsheet + Google Earth
A spreadsheet of your trees and pins in Google Earth gets you a long way. Here's where it falls down. And here's how OrchardHQ picks up from that exact spot, using the data you already have.
The real competition isn't a rival app. It's a spreadsheet plus Google Earth. And it's a grand setup. It's free. It's familiar. It bends to whatever you want. Plenty of good orchards run on nothing else, so this guide won't pretend it's useless. It'll show you the seams. The places where two separate files start costing you time, and where one live record starts earning its keep. Then it'll walk you through bringing your CSV and your Google Earth pins straight in. You don't re-type a thing.
Let's be fair before we're persuasive. The old setup genuinely beats a purpose-built app on three counts:
Those are real. If your orchard is a dozen trees you know by heart, stop here. You don't need us. The case for switching starts when the two files stop keeping up with the orchard.
Every row below is something the spreadsheet-and-Earth pair can technically do. It holds up until the orchard is real, in the field, and shared with someone else.
| Spreadsheet + Google Earth | OrchardHQ | |
|---|---|---|
| Where your data lives | Two files. The names and varieties in the sheet; the positions in Earth. Nothing links a row to a pin except your memory. | One live record per tree. Position, variety, history and photos, all in the same place. |
| In the field | Your phone shows a static export, if it opens at all. Edits wait until you're back at the laptop. | Offline-first mobile capture. Add a tree, a note, a photo or a voice memo with no signal. It syncs when you're back. |
| Finding a tree on the ground | "Row 4, seventh along… I think." You match pins to trees by eye. | Your GPS dot moves on the satellite map and the nearest trees light up. The Android app even names the tree you're pointing at. |
| Per-tree history & photos | A cell can hold a date. A photo lives in your camera roll, unlinked. Last year's note overwrote this year's. | A dated timeline per tree. Observations, actions, harvest weights, photos. Nothing overwritten. |
| Disease / pest diagnosis | You Google the symptom and guess. | Photograph the leaf. You get a probable diagnosis, the differentials, and follow-up tasks scheduled to the right month. |
| Tasks & reminders | A separate to-do list, or none. Nothing ties "prune" to a specific tree. | Tasks scoped to a tree or a block, tickable when done. Follow-ups from a diagnosis appear on their own. |
| Pollination & planning | You reason about variety spacing in your head or on paper. | The planner lays out variety mix, grid and pollination. A satellite overlay scores each tree's pollination partners. |
| Analytics & reporting | You build a pivot table by hand, if you build one at all. Counts, variety mix and averages are a fresh job every time you need them. | Analytics built in. Variety mix, tree ages, yields and observation trends for the whole orchard or a single block, and never a formula to write. |
| More than one person | Email the file around. Now there are three versions and you're not sure which is current. | One shared orchard, multiple users, last-write-wins. Everyone sees the same live record. |
| Data integrity | A mistyped coordinate is silent. "Final_v3_REAL.xlsx". Which file is current? | One source of truth, client-generated stable IDs per tree, edits merged rather than clobbered. |
| Handover | "Here are the files, good luck." The tacit knowledge stays in your head. | Hand over an account. The map, history and tasks are self-explanatory to the next person. |
| Getting your data back out | It's already yours. That's the one thing this setup nails. | Also yours, always. Export every tree to CSV, GeoJSON or KML any time. No lock-in. That's a promise, not a setting. |
Notice the last row: we don't beat the spreadsheet on data ownership, we match it. Anything you put into OrchardHQ, you can take straight back out in the same open formats. That's the deal.
Good. That's the whole point. You don't start from scratch. OrchardHQ imports the two files you already keep. Your spreadsheet as CSV, and your Google Earth pins as KML. Below are both, step by step. Whichever you start with, you can fill the rest in inside the app afterwards.
Where the Import button lives. Open your orchard's Trees view. In the left nav rail, choose Import (it's alongside Export; on a phone it's under the overflow “⋯” menu). The dialog reads: “Import trees from a GeoJSON, KML, or CSV file.” Hit Choose file…, pick your file, and OrchardHQ tells you how many trees it created or updated.
Google Earth stores each pin as a placemark. That's a
named point at a latitude and longitude. It's exactly what OrchardHQ
needs to drop a tree. The bridge is a .kml or
.kmz file.
.kml). OrchardHQ reads both,
so either is grand. Then save..kml.KML or KMZ, both work. Google Earth saves
.kmz by default. A KMZ is just a zipped .kml,
and OrchardHQ imports it directly now. Nothing to rename, nothing to
unzip. Import the .kmz straight from Google Earth, or a
plain .kml if that's what you saved. Both land the same
trees.
From Google Earth you get position and name, plus any description as notes. What it can't know is variety, rootstock, planted year and fruit type. Google Earth never stored those. You add them per tree in the app afterwards, or bring them in through the CSV route below and let the two meet up.
A spreadsheet becomes a .csv file. OrchardHQ reads a set of
column headers. Case doesn't matter, order doesn't matter, and extra
columns are ignored. The two that actually place a tree on the map are
lat and lng.
A row with no coordinates is skipped on import, since there's nowhere to
put it.
lat, lng: decimal latitude and longitude. Required to create a tree.label: the tree's name or tag, e.g. A-07.fruit_type: e.g. apple, pear, plum.variety: e.g. Dabinett.rootstock: e.g. MM106.planted: planting date or year.status: defaults to planted if blank.notes: free text.id: leave blank for new trees. If it's present and matches an existing tree's ID, that row updates the tree instead of creating a new one. That's how a round-trip edit works.
Save your sheet as CSV (in Excel or Google Sheets:
File → Download / Save As → CSV), making sure the header row
uses those exact names. Then Import → Choose file… → pick the
.csv. A minimal file is just three columns:
label,lat,lng
A-01,53.0623,-8.8156
A-02,53.0624,-8.8157
A-03,53.0625,-8.8158
And a fuller one, using every column OrchardHQ reads:
id,label,fruit_type,variety,rootstock,planted,status,lat,lng,notes
,A-01,apple,Dabinett,MM106,2021,planted,53.0623,-8.8156,corner tree
,A-02,apple,Michelin,MM106,2021,planted,53.0624,-8.8157,
,P-01,pear,Conference,Quince A,2022,planted,53.0625,-8.8158,near the gate
That header row is exactly what OrchardHQ's own CSV export
produces. So the tidiest workflow of all goes like this. Import your
trees once, however you like. Then Export CSV, edit the
whole orchard in a spreadsheet you already know, and re-import. The
id column matches each row back to its tree, so nothing is
duplicated.
Most growers have the split we started with. The positions live in Google Earth. The variety, rootstock and planted year live in the spreadsheet. Here's how to end up with one tree that carries both, and no duplicates.
label column that matches
those names. Add your variety, rootstock and
planted columns. You do not need coordinates in the
spreadsheet.
The label match is case-insensitive and ignores spare spaces, so
A-07 and a-07 are the same tree. If a label is
missing, or two trees share the same label, that row cannot be matched
safely. It is created as a new tree when it has coordinates, or skipped
when it does not.
When your labels are messy or repeated, use the round trip instead. Import
the KML, export CSV straight back out, and every tree
comes back with its OrchardHQ id and its
lat/lng filled in. Paste your columns alongside,
leave the id column as it is, and re-import. The
id match is exact, so nothing doubles up.
Between the two files you'll usually have the lot. Positions come from
Google Earth, or from the lat/lng columns.
Variety, rootstock and planted year come from the spreadsheet. Where a
field is missing, and Google Earth never stores variety, it comes in
blank and you edit it per tree in the app. Nothing is required except a
position.
And your data is never held hostage. At any point you can Export the whole orchard back to CSV, GeoJSON or KML. You came in from open files. You can leave the same way. That's the anti-lock-in promise, and it's the one row in the table above where the old setup and OrchardHQ are dead level.
Stuck on an import, or your file's in a shape we didn't cover? hello@orchardhq.app. Send us the file and we'll help.
Bring your trees in and see them on the map.
Try the demo → Request access →