Import from CSV
One guided wizard imports people, companies, households, or tasks from a spreadsheet in four steps. Matched, tagged, and deduplicated.
5 min read
Prepare the file
Use a CSV with a header row. Column names like “First name”, “Email”, “Phone”, “Company”, or “Tags” are preselected automatically on the mapping step. For people: a Company column links each person to a company, creating the company if no existing one matches its name. Addresses do the same for households. A Tags column applies its comma-separated tags to just that person. A file can be up to 50 MB, and each import has a per-file row limit that depends on your workspace’s plan — the wizard’s upload step shows your own limit before you start mapping. A bigger list still imports fine: split it into files under the limit and run them one at a time. An over-limit file is refused before anything is written: small files at the upload step, large ones as a failed import in history that names the actual row count and your limit. For companies and tasks the wizard needs a mapped name column. Rows without one are skipped. For households, rows matching an address you already have (or repeated in the file) are skipped, and new addresses are queued for geocoding — see Geocoding, boundary matching, and what each costs for when that finishes. A households file that already names each row’s district, ward or precinct can bring those in too, with no lookup and no cost. See Import district, ward and precinct columns. Both UTF-8 and Excel-exported CSVs work as-is.
The four steps
Upload Drop the file or browse to it — up to 50 MB, and up to your workspace’s per-file row limit, which this step states. Most files show their full row and column counts right away. A large file (over about 2 MB) shows a preview of its first rows instead, enough to set up the mapping; the exact totals are counted while the import runs. Map columns Each column gets a best-guess field match. Review and correct it. Anything left unmapped shows a “Skipped” chip and is left out. Review For people, duplicates are matched by email, the same identity rule used everywhere in pplCRM. One choice covers every row that matches an existing person: merge (fills blank fields, never overwrites), skip, or import as new anyway. Most files list the matches right here; a large file is too big to scan in the browser, so the wizard says so and simply applies your choice while the import runs, reporting the results in the completion summary. Rows with a broken email address import without the email — a row with nothing else in it is skipped and counted. Add a comma-separated tag list and/or a list here too (tags also apply to household imports). Other types show a plain recap: how many rows will import and how many will be skipped, and why. Import Confirm the recap and click Import N people (or companies, households, tasks). The wizard uploads your file and the server does the rest — parsing, matching, and writing — in the background, so you can navigate away while it works. It lands in import history and the Activity log either way. If you stay, the done screen offers View imported records, Import another file, or Back to import history.
After the import
Spot-check a few records against the source file. If you chose "import as new anyway" for any matched duplicates, run the Duplicates finder to reconcile them when convenient. The import history row shows what type each import was and keeps the original file downloadable for 90 days — by the person who ran the import and by admins and owners; every import type records a reason for each skipped row, and a download link for those reasons appears whenever an import has skipped rows or rows lost to a chunk error. Deleting an import can optionally delete the people it created. The dialog lists what else those people carry (gifts, receipts, event registrations, subscriptions), and the delete is refused while any of them holds an issued tax receipt — cancel those receipts first.
Email check-up
[email protected], which we flag but never change for you) and role addresses (info@, admin@ — kept, never suppressed, since shared inboxes are legitimate contacts). Addresses we couldn’t verify (a slow or flaky DNS lookup) are always kept.
Try this on sample data.
Every feature in the docs is live in the free demo workspace — no card, nothing to lose.
Start free