Your data

Move your collection in and out of Glasshouse.

Updated 1 August 2026

Glasshouse reads and writes plain CSV files: the kind that open in Numbers, Sheets, or Excel. You can export everything you have recorded, bring in a spreadsheet you have kept for years, or move over from Orchid Album. This page walks through all of it.

Start on the web for big files. The import runs the same everywhere, but the web app at glasshouse.celerycity.app gives a large preview more room. The phone app's own import screen points here for big spreadsheets. Sign in with the same account you use on your phone and everything you import syncs to every device.

Exporting your collection

Open Settings and choose “Export collection”. In the app's words: “Everything you've recorded, as two plain CSV files — they open in Numbers, Sheets, or Excel, and Glasshouse can read its own export back in full.”

  • Plants: every plant in every state, one row each, covering the garden, wishlist, and graveyard, saved as glasshouse-plants-YYYY-MM-DD.csv.
  • Care history: every logged watering, feeding, repotting, treatment, and observation, saved as glasshouse-care-YYYY-MM-DD.csv.

Both files round-trip. Re-importing the plants file is recognized as a Glasshouse export and read back column for column; re-importing the care file adds only entries that are not already in your log. The files carry references to your photos, not the pictures themselves, so they stay small and your photo library stays where it is.

The Settings screen in the Glasshouse web app, with the Your data card offering the Export collection and Import a spreadsheet rows.
Settings is the doorway for both directions: Export collection and Import a spreadsheet live in the Your data card.

The template

Open Settings, choose “Import a spreadsheet”, and press “Download the template” (“Every supported column with two example rows, ready to fill in.”). The file arrives as glasshouse-import-template.csv and is, by construction, a file the importer accepts: fill it in, import it, done.

Only name is required. Every other column is optional, and a blank cell simply imports as nothing recorded. The same table lives inside the app under “Supported columns”. As the app notes there: “The alternate spellings apply when importing a spreadsheet that is not a Glasshouse export; a Glasshouse file is read by its exact column headers.”

The Import a spreadsheet screen with the Choose a file button, the Download the template card, and the Supported columns section.
The import screen: “Choose a file”, the template download, and the supported columns.
The Supported columns list expanded inside the app, showing each column name with its notes and alternate spellings.
The same column documentation, rendered inside the app.
Column Also recognized Required Notes
collection_no#, no, num, number, id, tag, accession, accession no, collection numberYour plant’s number. Positive; gaps and fractional splits like 20.1 are fine. Blank = the next free number is assigned. 0 is reserved for wanted plants.
nameplant, plant name, orchid, orchid name, species, variety, hybrid, cross, titleRequiredThe plant’s name, as you label it. The only required column.
tribegenus, alliance, group, type, familyGenus or alliance ("Cattleya", "Phalaenopsis"). Blank imports as "Other".
sizematurity, stageMaturity: BS, NBS, NB or SE. Anything else imports as blank.
statuscondition, stateOne of: blooming, budding, growing, dormant, recovering, sick.
colorcolour, flower, flower color, bloom colorFree text ("Pink / Purple, Yellow").
acquireddate, acquired date, date acquired, purchase date, purchased, bought, obtained, sinceDate acquired — "2024-03-16", or free text like "Summer 23".
last_repotrepot, repotted, repot date, last repotted, potted, pottingWhen last repotted — a date or free text.
sourcevendor, seller, nursery, supplier, from, origin, bought from, growerVendor or provenance ("Local orchid society sale").
pricecost, paid, value, $Number; "$" and "," are ignored ("24.99" or "$24.99").
reference_urlsurl, urls, link, links, reference, references, website, webLinks, separated by " | ".
descriptiondetails, more, info, aboutLong-form text about the plant.
notesnote, journal, log, history, comments, remarks, diaryOne note per line, "date: text" ("2026-04-02: Repotted into fresh bark").
zonegrowing area, location, placement, spotYour growing-space label ("Patio", "East window").
receives_rainrain, gets rain"true" if the plant is exposed to natural rain; otherwise leave blank.
fragrantfragrance, scent, scented"true", "false", or blank. Blank means never recorded — "false" is a recorded not-fragrant, and the two import differently.
fragrance_notefragrance notes, scent noteFree text riding a fragrant plant ("Light citrus in the morning").
parentage_podpod parent, pod, seed parent, motherPod (seed) parent of a cross.
parentage_pollenpollen parent, pollen, fatherPollen parent of a cross.
parentageparentsA combined cross ("Cym. ensifolium × Cym. Enid Haupt"), split into pod and pollen when the two sides are unambiguous. Read only from spreadsheets that are not Glasshouse exports, and only when parentage_pod and parentage_pollen are blank.
awardsaward, awardedAward citations as free text ("HCC/AOS").
last_watered_atlast watered, watered, last watering, last waterInstant of the latest watering, ISO ("2026-07-28T09:00:00.000Z").
last_fertilized_atlast fertilized, fertilized, last feed, fedInstant of the latest fertilizing, ISO.
lifecycleOne of: growing, gone, wanted. Blank falls back to "gone" when died has text, else "growing".
dieddied on, death, death date, dead, deceased, rip, lostWhen the plant died — a date or free text. Only read for gone plants.
death_notecause of death, causeCause or eulogy for a gone plant.
wishlist_added_atwishlist addedWhen a wanted plant was added — a date or free text ("October show").
wishlist_sourceWhere a wanted plant was seen.
photo_countWritten by export for readability; ignored on import — leave blank.
photos_jsonWritten by export to restore photo links on the same device; leave blank when authoring.

The column notes above are the app's own, word for word.

Importing your own spreadsheet

As the import screen puts it: “Bring in a CSV file — Glasshouse and English-language Orchid Album exports are recognized automatically, and other spreadsheets are matched by their column names.” You never pick a format; the file's header row decides.

  1. Open Settings and choose “Import a spreadsheet”.
  2. Press “Choose a file” and pick your CSV. Tab-separated files and CSVs saved as plain text work too.
  3. Review the preview. A Glasshouse export is read by its exact column headers; any other spreadsheet is matched by the alternate spellings in the table above, and the preview shows every match as a line like ““Vendor” → Source” with a sample value from your first row. Headed columns that match nothing are listed under “Won't be imported”.
  4. Check the possible duplicates, if any. The preview explains: “These names already appear in your garden or elsewhere in this file: … Matching names can be separate specimens.” They are left out by default; press “Include possible duplicates” if they really are second specimens.
  5. Press “Import” (it reads “Import new only” when possible duplicates are being held back). A progress line counts the rows as they save, and the summary that follows accounts for every row, including any that were skipped and why.
The import preview showing how each spreadsheet column was matched to a Glasshouse field, with sample values from the file.
The preview: every matched column, a sample value, and what will not be imported.
The import finished summary, counting the plants added.
“Import finished”: the summary counts what was added, and anything held back is counted with it.
The garden in the Glasshouse web app after an import, showing the imported plants in the table layout with collection numbers.
An imported collection in the garden, numbered and ready. (A different run than the summary above, so the counts differ.)

Updating what's already there

By default an import only adds new plants; rows that match something you already have are left untouched. To bring changes from a spreadsheet onto existing plants, turn on “Update matching plants” on the preview screen. Its own description is the whole contract:

“Matches by collection number first, then by name (ignoring case, punctuation, spacing, and × versus x); Orchid Album files match their own rows. Blank cells never overwrite saved details. Off leaves matching rows untouched.”

With the toggle on, the app briefly shows “Checking your care log…” while it confirms which care entries already exist, then previews exactly four outcomes before anything is written:

  • “N new plants will be added.”
  • “N plants will be updated.” Each one gets a card naming its basis and its changes, like “Matched by collection number · Color, Price”.
  • “N rows already match what is saved and will not change.”
  • “N rows will be skipped.” Every skipped row is listed with its reason.

Some things an update never does: it never touches a matched plant's photos, never moves a plant between the garden, wishlist, and graveyard, and never rewrites a matched plant's collection number. Blank cells in your file never erase saved details.

If two of your plants share a name, the row is skipped rather than guessed at, with a line like: “Row 5 · Dendrobium kingianum: two plants share this name; add a collection number to the row to say which one.” Give the row that plant's collection number and run the file again.

The Update matching plants toggle on the import preview, with per-plant cards naming what matched and which fields will change.
Update on match: each card names how the plant matched and what will change.
The import summary after an update run: plants added, plants updated, rows already up to date, and rows skipped.
The honest summary: “1 plant added. 2 plants updated. 2 rows were already up to date. 1 row was skipped.”

Coming from Orchid Album

Export a CSV from Orchid Album using its English-language export, then import it like any other file. Glasshouse recognizes the format automatically and says so: “Found 3 plants in orchid-album-export.csv — recognized as an Orchid Album export.”

What comes across:

  • Your plants, with their names, genus, source, acquisition date, purchase price, awards, parentage, fragrance notes, and notes.
  • Dated log entries become real care history: “2 dated log entries will come across as care history.”
  • Watering schedules stay readable: “1 watering schedule found — their details will stay with the plants that use them.”

One thing cannot come across, and the app says it plainly: “Orchid Album CSV files do not contain photos. The plants and their written history will still be imported.”

Re-importing the same Orchid Album file is safe: its rows match their own earlier imports, so running the file twice never creates copies.

The import preview for an Orchid Album export: plants recognized, dated log entries coming across as care history, and a note that Orchid Album CSV files do not contain photos.
An Orchid Album export, recognized and explained before anything is written.

Troubleshooting

A plain import reports what was held back as counts in its summary. With “Update matching plants” on, the preview and the summary go further and name each skipped row with its reason, in the app's own words. Here is what each reason means and how to fix it; some appear only in specific modes, noted with each.

“its collection number already belongs to another plant”
Two plants cannot share a number. Change the number in the row, or blank it to have the next free number assigned. With “Update matching plants” on, a matching number is how a row finds its plant instead.
“an earlier row in this file already claims this plant”
Two rows in the same file resolve to the same plant. Keep the row you want and delete the other.
“this exact row was imported before”
This is re-run safety working as intended: the row was recognized from a previous import. Only Orchid Album rows carry the identity that makes this possible, so this reason appears for Orchid Album files. If you have since edited the row and want the changes applied, turn on “Update matching plants”.
“its name matches a plant already in your garden, so it was left out”
Held back so an import cannot quietly double your collection. If it really is a second specimen of the same plant, press “Include possible duplicates” on the preview.
“the row could not be read”
Usually a row with no name. Only name is required, but it is genuinely required.
“two plants share this name; add a collection number to the row to say which one”
An update by name found more than one plant whose name matches once case, punctuation, spacing, and × versus x are ignored, so “Cattleya Kat Green” and “cattleya kat-green” count as the same name. Add the intended plant's collection number to the row and run the import again. This reason only appears with “Update matching plants” on; a plain import treats matching names as possible duplicates instead.

The preview says there is nothing to change

That is update-on-match confirming everything in the file is already saved: “Nothing to write. Everything in this file already matches your garden.” A re-import that changes nothing reports exactly that, rather than pretending to update.

My file is seen but nothing imports

Check the preview's column mapping: the one column that must be matched is the plant's name. If your name column is called something the table above does not list, rename the header (any of the alternate spellings works) or paste your data into the template.

A column of mine went to the wrong place, or nowhere

The preview shows exactly how every header was matched, and what will not be imported. Headers are matched case-insensitively, and spaces, hyphens, and underscores are treated alike. If a match is wrong, cancel, rename the header to the column name or an alternate spelling from the table, and choose the file again. The template's headers always match.

Questions growers ask

What happens to my collection numbers?

Numbers in your file are kept. Rows without one get the next free number assigned automatically. Gaps and fractional splits like 20.1 are fine, and an update never rewrites the number of a plant it matched.

Is it safe to run the same import twice?

Yes. A plain re-import holds back rows whose collection number is already taken and flags matching names as possible duplicates, so nothing is created twice by accident. Orchid Album files go further: their rows carry their own identity, so a repeat of the same file is recognized outright. And with “Update matching plants” on, changes land on the same plants rather than creating copies.

Do photos travel in these files?

No. CSVs carry references to photos, never the pictures themselves. Your photos stay in your photo library, and Orchid Album files do not contain photos at all.

Can an import move a plant to the graveyard or wishlist?

An update never moves an existing plant between the garden, wishlist, and graveyard. New rows land in the state their lifecycle column names, so an old export restores wanted and gone plants where they belong.

What about rows marked wanted?

A row whose lifecycle is wanted lands on the wishlist. Wanted plants hold no collection number until you mark them acquired.

Where does the imported data live?

In your account, like everything else you record: import on the web and the plants are on your phone when you open it. The privacy policy describes exactly what is stored.