Importing Past Orders from a CSV
Bring your order history into Spatiko from a CSV or Excel export — map columns and statuses, preview every row, and undo the whole import within 48 hours.
Last updated
If your old platform can export a spreadsheet, your order history can come with you. The order import reads a CSV or Excel export, walks you through matching its columns to Spatiko’s fields, shows you exactly what will land, and lets you undo the whole thing within 48 hours if it isn’t right.
It lives in Settings → Data Import, alongside the client import. Access needs business-settings permission, which owners and admins have by default.
Import your clients first. Orders link to clients by email, so doing it in that order keeps the history attached to the client records you already have instead of creating thin new ones.
What one row becomes
Each row in your file creates one order, and with it:
- The client link — matched by email, or created if that email is new to your account. A matched client only gets its blanks filled in; details you’ve already entered stay as they are.
- The property — street, unit, city, state, and postal code, either from separate columns or parsed out of a single full-address column, plus property size in your measurement system.
- A shoot session — if the row has a shoot date, Spatiko schedules a one-hour session at that time and assigns the photographer named in the row, matched against your team by name. Adjust the length afterwards if an hour isn’t right.
- A line item — one item carrying the order’s value, named from your services column (or simply “Imported services” if you don’t have one).
- A payment — recorded when the row shows money was paid, marked as an external payment so it’s clearly historical rather than something Spatiko charged.
- The dates you had — the order is backdated to its original order date, so revenue and client analytics read like your real history. Each imported order also carries an “Imported from CSV” note in its activity log.
Columns Spatiko can read
Only client email is required. Everything else is optional — map what you have and skip the rest:
- Order ID — your old order or invoice number. Optional, but see re-importing before you skip it.
- Client — email (required), name, phone, and company or brokerage.
- Property — a single full-address column, or street / line 2 / city / state / postal code separately, plus property size.
- Dates — order date and shoot date & time.
- Statuses — order status and payment status, both mapped to your own values in a later step.
- Money — order total, amount paid, travel fee, tip, and tax.
- Services — a text column describing what was sold.
- Team members — the photographer or crew for the shoot; several names separated by commas, semicolons, or slashes are fine.
- Notes — anything you want kept as internal notes on the order.
Step 1: Upload your file
Drag in a .csv, .tsv, .txt, or Excel .xlsx file — whatever your old platform exports. The file needs a header row and at least one data row, and a single file can hold up to 25,000 rows. Split anything bigger and import it in parts.
Step 2: Map your columns
Spatiko reads your headers and suggests a field for each column, using the naming your old platform probably used — “Job #”, “Agent Email”, “Invoice Total”, “Shoot Date”. Anything it isn’t confident about is flagged Verify so you check it rather than trusting it. Columns you don’t want are set to “Don’t import”, and each Spatiko field takes one column.
This step is also where you confirm the date format. Spatiko samples your date columns and picks month/day/year or day/month/year, but 03/04/2026 is genuinely ambiguous — if your export came from a non-US system, check this before continuing. Getting it wrong quietly shifts hundreds of shoot dates.
Step 3: Map your statuses
If you mapped a status column, Spatiko lists every distinct value it found in the file — with how many rows use each — and asks what it means in Spatiko. Its guesses are usually right (“Delivered” → Completed, “Booked” → Planning), but your own vocabulary is yours to confirm. Payment status works the same way, mapping onto paid, partially paid, or unpaid.
Every value has to be assigned before you can continue, so nothing lands in a status you didn’t choose. If you skip the status column entirely, orders with a future shoot date arrive in Planning and everything else arrives Completed.
Step 4: Review, then import
Before anything is written, you get a count of rows ready to import, a count of rows with problems, and a preview of the first orders as Spatiko will create them — property, client, shoot date, total, and status.
Rows with problems are listed with their row number and what’s wrong: a missing or invalid client email, a date that couldn’t be read, an amount that isn’t a number, a duplicate order ID inside the same file. They’re skipped, not fatal — the rest still imports, and you can download the problem list as a CSV, fix those rows in your spreadsheet, and import just them afterwards.
The import itself runs in the background with a progress bar, and only one import runs per business at a time. When it finishes you get a summary of what was imported, skipped, or failed, and the run is added to your import history.
How money is handled
Amounts are read the way spreadsheets actually contain them — $1,250.00, 1250, and 1,250.00 USD all work. Negative amounts are rejected as row problems rather than silently imported.
- The order total is what the client owed. Travel fee, tip, and tax are recorded on the order in their own fields; tax is treated as already included in the total, not added on top.
- Amount paid drives the payment. If your file has an amount, that’s what gets recorded — capped at the order’s value. If it only says “Paid”, Spatiko records the full amount. If it says partially paid without a number, the order is marked partially paid with no payment recorded, so you’re not inventing a figure.
- The line item carries the order’s value minus any travel fee, so the two don’t get counted twice.
For anything you’d rather record by hand afterwards, see recording manual payments.
Re-importing without duplicates
Map your old Order ID column if you have one. Spatiko keeps it, and any row whose ID has already been imported is skipped on the next run — so you can re-export from your old system, re-import, and only the new orders come through. That makes a final catch-up pass on cutover day safe.
Without that column, there’s nothing to recognize an order by, and importing the same file twice creates a second copy of everything. If your export has no ID column, add one in your spreadsheet before you import — even a simple sequence works.
Undoing an import
Every import can be undone within 48 hours, from the import history in Settings → Data Import.
Undo removes the orders that import created — but only the ones nothing has happened to since. If an imported order has picked up media, an invoice, an edit job, a property website, or a payment you recorded yourself, it’s kept rather than deleted, and you’ll be told how many were kept. Client records the import created are removed too, unless they’ve since gained orders or payments of their own.
That safety net makes the best first move a small one: import ten rows, look at what they became, and undo if the mapping wasn’t right. Then run the real file.
Tips for a clean file
- One row per order, not per line item — the import creates a single item carrying the total, so a row per service would multiply your orders.
- Include the client email on every row. It’s the only required column, and rows without a valid one are skipped.
- Add an Order ID column if your export doesn’t have one.
- Check the date format at the mapping step, especially for exports from outside the US.
- Use a services column — even rough text like “HDR Photos + Drone” makes imported orders readable a year later.
- Match photographer names to your team’s names in Spatiko before you import, so shoots land on the right person instead of unassigned.
- Keep your statuses tidy in the export: fewer distinct values means less to map and less to get wrong.
Coming from HD Photo Hub or Aryeo? Don’t build a spreadsheet — those platforms have a direct migration that brings across far more than a CSV can.
Go deeper
- Importing your existing clients — run this one first so every order lands on a real client record.
- Managing an order — edit, cancel, or archive an order once the import has created it.
- Managing shoots on your calendar — adjust the one-hour sessions the import schedules from your shoot dates.
- Recording cash, check and other manual payments — log anything your file couldn’t carry.
- Revenue and service performance reports — where your backdated history starts showing up in the numbers.
Frequently asked questions
How do I avoid duplicate orders if I import the same file twice?
Map your old Order ID column. Spatiko keeps it, and any row whose ID has already been imported is skipped on the next run, which is what makes a catch-up pass on cutover day safe. Without that column there's nothing to recognize an order by, so importing the same file twice creates a second copy of everything — add even a simple sequence column before you import.
My export came from a non-US system. Will the dates import correctly?
Check the date format at the mapping step before you continue. Spatiko samples your date columns and picks month/day/year or day/month/year, but a value like 03/04/2026 is genuinely ambiguous. Getting it wrong quietly shifts hundreds of shoot dates.
Do imported orders keep their original dates, or arrive dated today?
Each order is backdated to its original order date, so revenue and client analytics read like your real history instead of like everything happened on import day. Every imported order also carries an "Imported from CSV" note in its activity log.
What if a row says paid but has no amount?
If the row only says "Paid", Spatiko records the full amount. If it says partially paid without a number, the order is marked partially paid with no payment recorded, so you're not inventing a figure. Where the row does carry an amount, that's what gets recorded, capped at the order's value.