Import and export
An import reads a CSV file into your contacts. An export writes the records a view shows to a CSV file. Deals export only; there is no deal import.
Prepare a CSV file#
Save your spreadsheet as a .csv file. The first row must hold the column headers. Brick reads comma, semicolon, and tab separators on its own, and drops blank rows.
One file can hold up to 5,000 rows and 10 MB. Brick refuses a larger file under Couldn't use this file, with the reason: This file has more than 5,000 rows. Split it into smaller files. or This file is too large (max 10 MB). Brick also refuses a file with a header row and no data rows.
Put email addresses and phone numbers in their own columns. They are how Brick recognises a person you already have, so a file without them creates a contact for every row.
Birth dates cannot be imported. A spreadsheet date such as 3/5/1985 can mean two different days, so Brick does not guess. Type them on the contact after the import.
Start an import#
Open Contacts from the sidebar, click Import / Export, then Import contacts. The wizard opens in three steps: Upload file, Map columns, Review import.
Drag your file onto the page, or click Choose file. Brick uploads it and shows the file name with its row and column counts. The trash icon (Remove file) discards it so you can pick another. Click Continue.
You can also start from a list: on the list's page, Import / Export offers Import. Brick then adds every contact the import creates or updates to that list.
Ask Brick can start one too. Click the + in its message box (Import contacts from a CSV) or drop the file on it, and the wizard opens with your file. See Ask Brick.
Map columns#
Each row on the left is one column of your file. The picker beside it names the contact field it fills: Full name, First name, Last name, Email, Phone, Budget, Mailing address, then each attribute you created in Settings → Records, under its own name. Pick Don't import to leave a column out.
Brick fills the pickers for you from your headers. A header containing "email" maps to Email. One containing "phone", "mobile", or "cell" maps to Phone. "First name", "Last name", "Name", "Budget", and "Price" map to the matching field. "Address" maps to Mailing address only when it is the whole header, such as Address or Home address; a header such as Property address stays unmapped. A header that matches one of your attributes by name maps to that attribute. Check every guess, and hover a row to see its first ten rows in the Data preview pane.
Email and Phone accept several columns, and each one adds an address or number to the contact. Every other field takes one column. Picking a field that another column already holds moves it to the column you are on.
Brick splits a Full name column into a first and last name. If the file also has First name or Last name columns, those win.
Below the list Brick says how many columns will not be imported, and whether it is Matching on email or phone. Without one of those, Continue opens This import may create duplicates. Tick I understand this import may create duplicates and click Continue import to go on, or Go back and map one.
How values are read#
- Email: stored in lower case. Brick drops an address that is not valid.
- Phone: stored as a number Brick can dial and shown as
(416) 555-1234. Brick drops a value that is not a phone number. - Budget: digits only. Brick removes
$, commas, and spaces;500kbecomes blank. - Mailing address: one line, as typed.
- Checkbox attributes:
yes,y,true,1,x, orcheckedtick it;no,n,false,0, oruncheckedclear it. - Select attributes: the cell must match an option's name (case does not matter). Brick drops an unknown name; the import never creates options.
- Multi-select attributes: several option names in one cell, separated by
;or,. Brick keeps the names that match and drops the rest. - Date attributes:
YYYY-MM-DDonly. Timestamp attributes: an ISO value such as2026-03-05T14:00:00Z. - Number attributes: Brick removes
$and commas.
A blank cell writes nothing and never clears a value.
Review the rows before you import#
Brick checks every row against the contacts you already have. Brick marks a row whose email or phone belongs to an existing contact as an update, and the table shows the merged result: your file's values replace the contact's, blank cells keep what the contact has, and Brick adds addresses and numbers without removing any. Brick combines two rows in the file that share an address or number into one.
The counts above the table say how many rows Brick will create, update, and skip. Brick skips a row when it has no name, email, or phone, or when its contact points belong to two different contacts. Hover the row's status icon to read the reason.
Edit a cell in place with the same editors as the Contacts table. Untick a row's checkbox to skip it. You cannot tick a row Brick skipped. Add column adds a field your file did not carry, such as Budget or one of your attributes, so you can type values before the run.
Run the import#
Click Start import. The confirmation names how many contacts Brick will create and update. Click Start import again.
The run is all or nothing. If anything fails, no contact is changed. When two rows share an email or phone, Brick says Two rows share the same email or phone. Go back and resolve the duplicate, then import again. and Back to review returns you to your edits. Any other failure marks the import Failed; Start over deletes the draft so you can upload the file again. When it finishes, Import complete shows the counts, and View contacts opens the Contacts table filtered to this import. A list import offers View list instead.
Each contact the run creates records Import as its Creation Source and the file name as its Creation Source Detail, so you can filter on the file name later. There is no undo, which is why the Review step exists.
Resume or delete a draft#
The X in the wizard's top right closes it and keeps your draft, including the uploaded file and your column mapping. Open Settings from the bottom of the sidebar, then Import history, and click the draft to carry on.
The page lists every import you started, newest first, with the file name, when it ran, the column and row counts, the list it went into, and a status: Draft, Done, or Failed. Type in Search imports to find one by file name.
A draft's ⋯ menu offers Delete draft, which removes the uploaded file too. A finished import is a read-only record. You cannot run it again, download it, or reverse it.
Export a view to a CSV file#
On Contacts or Deals, click Import / Export, then Export to CSV. The file downloads through your browser as contacts-2026-09-11.csv or deals-2026-09-11.csv, with the day's date. A list's page exports the same way, named after the list.
The file holds every record the view shows, after its filters, its sort, and anything typed in the search box. Rows that have scrolled off the screen are included too. Above 100,000 rows Brick asks you to narrow the list with a filter first.
The columns are the view's columns, in the order you see them. Name and Record ID always come first, so the file identifies each record even if the view hides them. A column you renamed in the view exports under that name.
The file holds each value as Brick stores it, not as the page shows it. A budget exports as digits, a date as YYYY-MM-DD, a select attribute as its option name. A contact's addresses and numbers spread across numbered columns such as Email addresses 1 and Email addresses 2 when any exported contact has more than one; otherwise the column is plain Email addresses. An Associated Deals column lists the names of every linked deal, separated by ;. A deal's Deductions column lists each row in order, such as Referral: 25% of gross | Brokerage: 10% of remaining.
Because the values are raw, you can edit a contacts export in a spreadsheet and import it again: the Name, Email, Phone, Budget, and Mailing address columns map straight back. Record ID and Birth date do not.
A cell that begins with =, +, -, or @ gets a leading apostrophe, so a spreadsheet shows it as text instead of running it as a formula. A phone number begins with +, so it exports as '+14165551234; it imports back without trouble.