Team admins can bring existing contacts, buyers, and in-flight or historical deals into TED from a spreadsheet — no re-keying required. Every import walks you through the same steps: upload a file, map its columns to TED fields, review exactly what will happen, then import. Every import is saved as a job with its own history, and you can undo one if something looks wrong.
Starting an import
Go to Settings > Import and select Import contacts or Import deals. You can also start a contacts import from the Import button on the Contact Hub header, or a deals import from the Import button on the Whiteboard header. Both buttons are admin-only.
Before you upload anything, each card on Settings > Import shows Download sample sheet — a CSV with every field the mapper accepts already in the header row, plus a couple of example rows — and What you can map, an expandable list of those same fields with which ones are required. Use the sample sheet as a starting template, or check your own file's columns against the list before uploading.
Uploading and mapping your file
Drop a CSV or Excel file (up to 5,000 rows), or select Choose File. On the next step, each column from your file is matched to a TED field automatically where possible — review the matches and adjust any that guessed wrong. Fields marked Required must be mapped before you can continue.
If a column holds values TED doesn't already recognize (for example, a "Type" column with values that don't match any of your team's contact types, a Deal Type value that isn't one of the standard four and doesn't match one of your team's own custom deal type names, or a Property Type like "Single Family" or "Duplex"), a values need mapping panel appears — assign each distinct value to the right TED option, or choose Skip this value to leave it blank. Property Type can only be one of TED's ten property types (Single Family, Multi Family, Townhouse, Condo, Mobile Home, Land, Commercial, Industrial, Mixed Use, Other) or left blank, so buyer and lender matching can use it.
If you've imported before, Reuse last mapping on the upload step applies your last file's column mapping and options automatically.
Importing contacts and buyers
Map First Name (or a single Full Name column, which is split automatically), plus whichever of Email, Phone, Company, buy-box fields (min/max price, property types, strategies, target states), and Notes your file has. On the Options step, choose a default contact type applied to any row whose type wasn't set some other way.
Importing matches each row to an existing contact by email or phone first — if one matches, only that contact's blank fields are filled in; nothing you already have is overwritten. No match creates a new contact.
Importing deals
Map Address and Deal Type (both required), plus whichever of City, State, Zip, County, Market, Deal Owner Email, Seller/Buyer name, email, and phone, Contract Date, Closing Date, Actual Closing Date, Contract Price, EMD Amount, EMD Due Date, EMD Received Date, EMD Held By, Lead Source, Property Type, Purchase Type, and Notes your file has. There's no Assignment Fee column to map — TED calculates it from the deal's buyer and seller contracts, so leave that column unmapped.
Closing Date is the planned close — it becomes the deal's Original Closing Date. Map Actual Closing Date only for deals that have already closed (a column named "Actual Close" or "Closed On" is picked up automatically); without it, the deal's Actual Closing Date stays blank.
The earnest money columns are picked up from headers like "Earnest Money" or "EMD" (the amount), "EMD Due" (the due date), "Deposit Date" or "EMD Received" (the day it arrived), and "EMD Held By". A deal imported with a Contract Date but no EMD Due Date gets its due date filled in from your team's EMD due default, the same as a deal you create by hand.
A Market value needs to match one of TED's markets by its name (like "Austin, TX") or its short code (like "tx-austin") — capitals and extra spaces don't matter. A value that doesn't match any market doesn't stop the row: the deal imports with Market left blank, and the Preview step lists those rows so you can fix the spelling first or set the market on the deal afterwards.
On the Options step, choose a Default owner — applied to any row whose owner email didn't match a team member. It defaults to you, the admin running the import.
Seller and buyer columns always create a new contact or match an existing one by email or phone — the same matching rule as a contacts import.
Choosing a pipeline status for each deal
After reviewing your rows, a Set Stages step lists every deal that's ready to import with a status picker grouped by your team's pipeline stages — including stages your team has marked as closed or archived, so historical deals can land wherever they actually are. Every row starts at your pipeline's first stage and status; change a row's status directly, or select rows and use Apply to selected / Apply to all to set several at once. Every row needs a status chosen before you can continue.
Deals import silently at the status you choose — no automators run, and no tasks or notifications are triggered. Your team's activity feed shows "Imported at" the status name instead of the usual entry so it's clear how the deal got there.
Reviewing and fixing problem rows
The Preview step shows how many rows will import cleanly and how many have a problem. A problem row shows its error message with the source column highlighted — edit the value inline and select Recheck row. A row left unfixed is simply skipped; it's never imported.
For deals, the Preview step also lists any row whose Market wasn't recognised — "Market not recognised, left blank". Those rows still import; only the market is left empty.
After the import
Once importing finishes, the Results step shows how many rows were created, updated, and failed. Any failed row can be fixed inline and retried individually, or select Retry failed rows to resubmit every still-failing row at once.
Undoing an import
From the Results step, or from the import history table on Settings > Import, select Undo import. This removes only what that import created:
- Contacts: newly created contacts (and any buy boxes created for them) are removed. Contacts the import matched and updated are left as-is — only their filled-in blanks stay.
- Deals: newly created deals are removed, along with any seller/buyer contacts that import created for them.
Undo can't be reversed, and it's only available once an import has finished.
Common issues
- A required field stays unmapped — the Map Columns step won't let you continue until every required field (First Name for contacts; Address and Deal Type for deals) has a column assigned, directly or via a split field like Full Name.
- "Values need mapping" won't go away — every distinct raw value for that column needs either a TED option chosen or Skip this value selected before you can continue.
- A deal row won't import — no deal owner could be resolved — the row's owner email didn't match a team member, and no Default owner was set on the Options step. Set a default owner and retry the row.
- Set Stages won't let me continue — every row needs a status chosen; use Apply to all to fill in any rows you haven't set individually.
- "Market not recognised, left blank" — the row's Market value didn't match any market's name or short code. Check the spelling against the market list on a deal's Property Facts, or set the market on the deal after it imports. If the market you need isn't on the list at all, request it from that same picker.