What you will learn
By the end of this tutorial, you should understand how to:
- prepare a constituent import without rushing risky data changes
- choose the right import mode for your situation
- review duplicates and ambiguous matches before import
- confirm that imported records look trustworthy afterward
- begin building reusable audience groups from clean data
Scenario
A nonprofit is moving records from a previous system and wants to import a constituent CSV without accidentally overwriting the wrong people, loosening suppression history, or creating a messy duplicate problem.
The team wants to start carefully, confirm how the import behaves, and end up with supporter records they can trust for future campaigns and operational work.
Before you begin
Before starting, make sure:
- your CSV includes email addresses for each row
- staff understand whether this import is adding new people, updating existing records, or both
- you have reviewed whether external identifiers are reliable enough to use
- your team is prepared to inspect duplicates and conflicts instead of importing blindly
A careful first import almost always produces a healthier database than a fast one.
Step 1 — Understand what the constituent import does
Altrinum’s constituent CSV import is intentionally conservative.
That is important because constituent data usually becomes a long-term operational foundation for fundraising, events, and communications. A rushed import can create cleanup work that is much harder to reverse later.
Important implementation notes
- The import is profile-only.
- It does not clear unsubscribes.
- It does not re-subscribe constituents.
- It does not rewrite topic preference history.
- Email is required on each imported row.
What this means in practice
Use the import to create or update constituent profile data.
Do not use it as a way to force people back into marketing eligibility or to reset communication history.
Why this matters
Many teams assume that a fresh import from a legacy system can “fix” communication status. In Altrinum, profile updates and communication permission logic are intentionally kept separate so staff do not accidentally bypass important suppression or preference safeguards.
Step 2 — Review existing constituents first
Before importing anything, open Constituents and review the records already in the workspace.
Common fields visible in constituent records may include:
- name
- phone and location
- lifetime giving
- registrations
- email activity
- marketing status
Why this matters
This quick review helps you answer practical questions before you import:
- Are you mostly adding net-new supporters?
- Are you updating an existing active database?
- Do current records already contain better names, addresses, or phone values than the incoming file?
- Are there patterns you want to standardize before import?
A few minutes of review here can change how aggressive or cautious your import settings should be.
Step 3 — Download the template and prepare the CSV
- Open
Constituents > Import. - Use
Download Template. - Prepare your file with columns such as:
emailfirst_namelast_namephonedisplay_nameaddress_line1address_line2cityregionpostalcountryexternal_systemexternal_idprofile_source
Decision guidance
Include external_system and external_id only when you trust the source system and want stronger matching.
Leave external identifiers blank if the source data is unreliable, inconsistent, or known to have been merged badly upstream.
What could go wrong
- Invalid or missing email addresses will prevent rows from becoming ready.
- If the same email appears more than once in the upload, only the first row is kept and later duplicates are skipped.
- If staff assume external IDs are trustworthy when they are not, review work becomes harder instead of easier.
Tip
If the CSV came from multiple exports or spreadsheets, clean obvious duplicates and formatting issues before upload. Dry runs are useful, but they work best when the file is already reasonably organized.
Step 4 — Choose the right import settings
Before running the dry run, choose:
Fill blanks only (recommended)- or
Overwrite allowed fields
Also decide whether to keep Prefer external_system + external_id matching when present enabled.
Decision guidance
Use Fill blanks only when:
- this is a first migration
- you are being cautious
- your existing constituent records are generally more trustworthy
- the file is incomplete or uneven in quality
Use Overwrite allowed fields when:
- the incoming profile data is clearly better
- your team understands the impact
- you are intentionally standardizing profile fields
Keep Prefer external ID on when:
- your source system is authoritative
- legacy identifiers are clean and stable
What could go wrong
- Overwrite mode can update supported profile fields more aggressively than staff expect.
- Poor external ID data can create ambiguous conflicts or bad assumptions.
- Teams sometimes pick settings based on speed rather than data confidence, which usually creates cleanup work later.
Step 5 — Run the dry run first
- Upload the CSV.
- Click
Run Dry Run. - Review the batch summary and row statuses before importing anything.
Common row outcomes
ReadyErrorPossible duplicateSkipped
What the dry run is doing
The dry run helps staff review how the system is interpreting the file. It may include checks such as:
- validating email presence and format
- de-duping repeated emails inside the upload
- matching by external ID when enabled
- matching by email inside the current tenant
- suggesting likely matches
Why this step matters
The dry run is not just a technical validation. It is the review step where your team decides whether the import will strengthen or weaken the database.
Treat it like a staging area, not a button you click on the way to the real work.
Step 6 — Resolve problem rows carefully
Use the row actions before importing:
Editto correct bad email or profile fields and revalidateNot a duplicatewhen staff have confirmed the record should proceed as a separate constituentMerge into...when the row should update an existing constituent
Important implementation note
Merge into... imports the row into an existing constituent profile.
It does not automatically merge historical donations, registrations, transactions, or audience memberships across two separate people.
Example scenario
If Jane Smith appears in the CSV and Altrinum flags a possible duplicate because the workspace already has Jane Smith with the same email or similar profile details, staff should stop and review rather than guessing.
The right decision may be to merge into the existing record.
But if the match is only superficial and the records represent different people, staff may need to keep them separate.
What could go wrong
- Marking a real duplicate as
Not a duplicatecan split one supporter’s relationship history across multiple records. - Importing into the wrong existing constituent can make profile data less trustworthy.
- Assuming that
Merge into...will combine all historical activity could lead staff to overestimate how much cleanup the system has actually performed.
Step 7 — Understand external ID conflicts
If external_system plus external_id already belongs to another constituent in the same workspace, Altrinum may mark the row as ambiguous.
When that happens:
- review the conflict message
- use
Merge into...if the existing record is the correct target - edit or remove the external ID in the row if the source data is wrong
Decision guidance
External IDs are most useful when your source system is authoritative and stable.
If legacy data quality is mixed, email-based matching plus careful review may be the safer long-term strategy.
Step 8 — Import ready rows
Once the batch looks clean:
- Confirm the remaining problem rows are resolved or intentionally excluded.
- Click
Import. - Review the success message and imported count.
Best practice
Do not rush past the dry run on a large migration.
For a first migration, a smaller test batch usually gives your team a much better feel for:
- duplicate patterns
- source data quality
- overwrite risk
- how much review effort a full migration will require
Step 9 — Review constituent profiles after import
Open several imported constituents and confirm:
- names and contact details look correct
- addresses landed as expected
- existing histories still make sense
- marketing status has not been loosened unexpectedly
If your workspace uses prospect scoring or prospect workflows, review those profiles later after the relevant processes have run.
Why this matters
A successful import count is not the same thing as a trustworthy result.
The goal is not just to finish the import. The goal is to end up with constituent profiles that staff can safely use in future segmentation, campaigns, and stewardship work.
Step 10 — Build audience groups only after the data is trustworthy
Once the constituent base is clean:
- Open
Audience Groups. - Create a group.
- Choose
StaticorDynamic. - Add rules that reflect the use case.
- Save.
Decision guidance
Use Static for one-time staff-curated lists.
Use Dynamic for rules such as:
- donors in a date range
- registrants for a certain event
- supporters above a giving threshold
- engaged audiences that need to stay current over time
Why this matters
Good segmentation depends on good profiles.
If the import created confusion, duplicates, or conflicting profile values, those problems will show up later in audience groups and campaign prep.
Recommended first import workflow
For a first migration:
- start with one smaller CSV segment
- use
Fill blanks only - keep external ID matching on only if the source is reliable
- run the dry run
- resolve duplicates and conflicts carefully
- import
- inspect real constituent profiles before moving to the next batch
That slower first pass usually creates a much better long-term database than a large blind import.
What to do next
After your first successful import:
- review several constituent profiles in detail
- create one or two simple dynamic audience groups
- confirm that marketing status and preferences still behave as expected
- document an internal import process for future staff so later imports follow the same standards