Import donors from CSV
Not on a CRM? Bring your existing supporter list into Together by uploading a CSV. You map the file's columns to Together's fields, preview exactly what will change, and commit. Re-running the same file updates donors rather than duplicating them.
If your supporter data lives in a spreadsheet rather than NationBuilder or Raisely, a CSV import is the fastest way to get started. Imported donors land in the same place as everything else - your donor list, duplicate detection, and (with the Compliance module) cap and disclosure tracking.
The same screen imports two things: donors (your supporter list) and donations (giving history). Most of this page is about donors; the Import donations section at the end covers the differences.
Before you start
You need:
- ADMIN role on your org.
- A
.csvfile with a header row naming the columns. - One column that identifies each person - an email or your own external ID (a reference number from your old system). Together uses this to match rows on a re-run, so the same file never creates duplicates.
Up to 1,000 rows per import. If your list is larger, split it into a few files, or use the API for bulk loads.
Steps
-
Go to Settings -> Integrations and open the Import from CSV card.
-
Choose Donors, then drop your
.csvfile (or click to choose it). -
Map your columns. Together matches your headers to its fields automatically where it can - check them and fix any that are wrong. A few sample values show under each column so you can map a cryptic header by its data. Make sure a column is mapped to Email or External ID.
-
Click Preview. You'll see a breakdown of what will happen:
- New - people who will be created.
- Updating - existing donors who are missing details your file fills in.
- Unchanged - existing donors your file adds nothing to.
- Look-alike - rows that repeat an email or ID already in the file (folded into one so you don't double-count).
- Errored - rows that can't be imported (with the reason).
-
Click Import. When it finishes you'll see a summary. If any rows errored, download the errors CSV, fix those rows, and import again.
How matching works
Together matches each row to an existing donor by external ID first, then email. On a match it only fills in blank fields - it never overwrites a detail you already have. So a re-import is safe: it tops up missing data and leaves everything else alone. (To correct an existing value, edit the donor directly; import-to-correct is coming later.)
Because Together matches on identity, running the same file twice imports it once. That makes a CSV import a safe way to keep a spreadsheet and Together in step.
Import donations (giving history)
A donations import brings in your giving history - one row per gift. Choose Donations on the first step instead of Donors.
Each donation row needs three things:
- Donor email - links the gift to a donor. If no donor with that email exists yet, Together creates a basic donor record (email only) so the gift has an owner. The preview tells you how many donor records will be created.
- Amount - the gift amount, in your organisation's currency. A currency column is optional; if you include one, every value must match your org currency (mixed currencies are rejected a row at a time, because a cap can only be counted in one currency).
- Donation date - Together shows a date format control (Day/Month/Year,
Month/Day/Year, or Year-Month-Day). It guesses from your data, but confirm it:
03/04/2026is 3 April under Day/Month/Year and 4 March under Month/Day/Year, and the wrong choice files a gift in the wrong compliance period. The preview shows a few of your dates written out in full (e.g. "3 Apr 2026") so you can check.
Optionally map a revenue code column. The code is what tells Together which jurisdiction a gift belongs to (federal, Victoria, ...), so map it if you want imported giving to feed caps and disclosures - rows with no revenue code are still imported, but carry no jurisdiction and won't appear in compliance figures.
Every imported gift is recorded as confirmed, so exclude any refunded or failed rows from your file (importing those, and correcting a gift after the fact, come later). If you have a stable transaction/receipt ID, map it as the Donation ID - that lets a later re-import correct a gift's amount or date instead of adding a second copy. Two rows with no ID and identical details are kept as two gifts (so a genuine repeat gift is never dropped).
After you commit, if any donors crossed a disclosure threshold you'll see a summary: crossings in an open reporting period are flagged as needing action (with their deadlines), and crossings in periods that have already closed are listed as historical backfill.
Your file is handled carefully
Your uploaded file holds personal data, so Together stores it privately, uses it only to run the import, and deletes it as soon as the import finishes. An abandoned upload is cleared automatically within 48 hours.
If some rows don't import
Common reasons a row errors:
- No email or external ID. Every row needs one so it can be matched. Map one of those columns, or add the data to the row.
- A malformed email. Fix the address (or clear it and rely on an external ID).
- An unrecognised donor type. Use
individual,organisation,trust, orunknown.
Download the errors CSV from the result screen (or from the Past imports list lower on the page), fix those rows in your spreadsheet, and re-import - the good rows you already imported won't be touched again.
What to do next
- Set up revenue codes so imported giving is classified for compliance later: Set up revenue codes.
- Merge any duplicates the importer flags: Merge duplicate donors.