Every solar company arrives with a tracker — a spreadsheet with a few years of jobs in it, columns nobody remembers naming, and formatting only its author loves. The import wizard is built for exactly that file. You upload it as-is, match its columns to TexPTO fields, see precisely what will happen, and nothing is created until you say so.
What it accepts
A .xlsx or .csv file up to 10MB and 2,000 data rows, in any column layout. Blank rows are skipped, Excel dates and formula results are read correctly, and if your file is bigger than the caps, the wizard says so with the exact numbers instead of importing half of it silently.
Four columns are required for each job: a name, a street address, a city, and a two-letter state. Everything else — ZIP, customer type, system size, installation type, HOA, notes, and any custom fields your organization has defined — imports when you map a column to it.
Step by step
- Upload. Go to Jobs, then Import (org owners and admins), and choose your file. If you're brand new, the same button is on your first-run dashboard.
- Match columns. The wizard pre-matches everything it recognizes — "Street Address", "address_line_1", and "Address" all land in the right place. For columns it can't place, map them by hand from a dropdown, mark them "Don't import", or click Suggest matches to let TexPTO's AI propose targets. The suggestions are free — they never touch your automation credits — and always yours to override.
- Check the rows. The dry run validates every row and shows the findings before anything exists: rows missing required values, unparseable cells, rows that duplicate each other inside the file, and rows that already exist in TexPTO (same name and address). Nothing has been created yet.
- Import. Commit, and each valid row is created through the same path as the New Job form — so geocoding, checklist seeding, and every safeguard apply to imported jobs exactly as they do to hand-created ones. Duplicates are skipped, never doubled.
- Keep the receipt. The report lists every row's outcome — created, already existed, or failed with a plain-English reason — and downloads as a CSV.
Re-running the same file after an interruption is safe: rows that already imported are recognized and skipped, so a retry only fills in what's missing.
The welcome gift
On Starter, new jobs meter against a monthly limit. Your first import doesn't: commit your first batch within 30 days of creating your organization and those jobs don't count against the monthly allowance or trigger overage charges, however many rows the file has. It's a one-time welcome — later imports and hand-created jobs meter normally.
FAQ
Will importing mess up the jobs I already created? No. Existing jobs are never modified by an import. A row matching an existing job's name and address is skipped and reported as already existing.
My tracker has columns TexPTO doesn't have. Do I lose them? Map them to custom fields (Pro and up) and the values ride along into every job, the grid, and your exports. Columns you don't map are simply left behind — the wizard tells you which.
What about my file after the import? The uploaded file itself isn't stored — it's read, validated, and discarded. What persists is the import record: which columns mapped where, what was created, and the row-level findings.
Can I import in stages? Yes. Split large trackers into files under 2,000 rows and import them in any order — duplicate protection means overlap between files resolves safely.
Sources
Bring the spreadsheet. Leave the re-typing.