Bulk Import (CSV)
Several parts of the app let you load many records from a spreadsheet instead of typing them one at a time — suppliers, rates, and tour templates. They all work the same way, so once you have done one you have done them all.
Sample → Export → Import
Wherever bulk import lives, you get the same three buttons:
- Sample CSV — downloads a sheet with the right column headers and one filled-in example row, so you never have to guess the shape.
- Export — downloads what is already in the app, in the same shape. Edit it and re-import to make changes in bulk.
- Import — reads a filled-in sheet back in.
Screenshot: The Sample / Export / Import buttons in the Tour Manager
Import upserts by code
Each row is matched on its stable code — a supplier’s SUP-#### code, a template code, a rate’s key. If the code already exists the row updates it; if it is new the row creates it. Running the same file twice is safe. Everything imports into your own organization’s data and nowhere else.
EXAMPLE- code, and import quietly skips those. So you can download a sample, import it unchanged to prove the round-trip, and nothing is created.What a sheet does and does not carry
A flat sheet carries the flat facts — names, types, durations, contact details, prices. It does not carry the nested things a spreadsheet cannot hold: a tour’s day-by-day itinerary, its hotels, or its variations. Importing tour rows creates the shells; you build each itinerary in the editor afterwards. Crucially, import writes only the columns in the sheet, so re-importing a template never wipes an itinerary you have already built.
Rates and the supplier code
Rate sheets carry a supplier code column so each rate re-attaches to the right supplier. If a rate names a code that does not exist in your organization, that row is reported and skipped rather than guessed — import the supplier first (or fix the code), then re-run. This is what lets a set of rates move cleanly between installs; the full story is in Suppliers.