Import People
The bulk importer is the easiest way to import a large number of contacts into your database quickly. You can also manually add contacts one at a time.
To start, open People and click Import, then New import. The Import button needs the Import People permission.
Importing From A File
We've made it easy to import your contacts into Solidarity Tech from a spreadsheet or different CRM. The first step is to convert your contact data into a CSV file.
Before You Start
Solidarity Tech pricing is based on the number of contacts and the plan tier. If your import brings your total contact count above the limit of your plan tier, you'll be warned before the import.
Formatting Your File
Ensure that your CSV file meets the following requirements:
- The first row of your CSV file must contain the column headers
- A new contact needs a phone number or an email address, unless you turn off Require Phone or Email
Tip: You can also update existing records by including a "Solidarity Tech User ID" column or by using a custom property as a primary key. You set the key on the Details step, under Show Advanced Options. Both options let you update records even if phone/email has changed.
Mapping Fields
After uploading your data, you will need to assign each column in the CSV to a field in Solidarity Tech.

Before you can continue, every column must either be assigned to a matching field or skipped.
Per-Field Options
For each column you map, you'll see options depending on the field type:
Don't Overwrite - When checked, the import will only fill in blank fields and won't replace existing values. Useful when you want to add new data without overwriting what's already there.
Allow new options can appear for custom properties with dropdown/radio/checkbox options. When checked, if an imported value doesn't match any existing option, a new option will be automatically created. Matching ignores case, spaces, and punctuation.
Add to existing values - Appears for custom properties of type Multiple Checkboxes. When checked, imported values are merged with existing selections instead of replacing them. When unchecked, existing values are replaced entirely. Useful when you want to add new checkbox selections without clearing what's already set.
Standard Fields
The importer auto-detects common column names like "First Name", "Last Name", "Alternate Name", "Email", "Phone Number", "Zip Code", "Date of Birth", etc.
Date of Birth
Accepted formats include YYYY-MM-DD and MM/DD/YYYY. Age is computed automatically from the imported date.
Other Emails
Map a column to "Other Emails" to import secondary email addresses that are stored separately from the contact's primary email. Multiple emails can be included in a single cell, separated by semicolons (e.g., [email protected]; [email protected]). The import skips an address that is not valid. This field does not affect the primary email address or email permissions.
Tip: You can map Other Emails to one column only. To import several addresses, put them in one cell.
Custom User Properties
Custom User Properties can be imported using either the option value or the label. For properties with multiple options (like checkboxes), separate values with commas:
"Former Driver, Community Supporter"
For single checkbox fields, these values are accepted:
- True:
true,yes,y,1,-1, orx, in any letter case - False:
false,no,n, or0 - Unchanged: leave blank
Tags
Import tags as a comma-separated list. New tags will be created automatically if they don't exist.
Chapter Assignment
On the Upload step, pick a chapter under Chapter Assignment. New people get that chapter, and existing people keep their primary chapter.
Per-Row Primary Chapter Override
Map a column to the "Primary Chapter" field to set each contact's primary chapter by name, one per row. Matching is case-insensitive and ignores surrounding whitespace. Blank cells fall back to the default chapter you select for the import. If a value does not match any chapter in your organization, the default chapter is used for that row and a warning is logged.
Secondary Chapters (Standard Plan or Higher)
If your organization has the Standard plan or higher, you can also import secondary chapter memberships. Map a column containing comma-separated chapter names (e.g., "LA, NYC") to the "Secondary Chapters" field.
Advanced Import: Donations
You can import donation history alongside contact data. When donation-related columns are detected, the importer will show donation mapping options.
| Field | Description | Required |
|---|---|---|
| Donation Amount | The donation amount (e.g., "50" or "$50.00") | Yes |
| Donation Date | When the donation was made | Yes |
| Donation Source | Platform or method (e.g., "ActBlue", "Cash") | No |
| External Donation ID | Receipt or transaction ID from external system | No |
| Donation Processing Fee | Fee charged by payment processor | No |
| Donation Note | A note saved on the donation record and shown in the person's activity feed | No |
If you map donation fields, the Details step requires a Donation Source name, such as EveryAction or ActBlue. A Donation Source column can override it for each row with a value.
Note: The import skips a duplicate donation. For example, a duplicate has the same External Donation ID and date as an existing donation, or the same person and amount within one hour.
Advanced Import: Relationships
You can import relationships between people in your database. The field menu shows the Relationships fields only when a column header has relation or relationship followed by phone, mobile, cell, email, or type.
| Field | Description |
|---|---|
| Relationship Type | The relationship (e.g., "Parent", "Spouse", "Influences") |
| Relation Phone Number | Phone number of the related person |
| Relation Email | Email of the related person, used when no person matches the phone number |
The related person must already exist in your database.
Advanced Import: Referrals
Track who referred each contact by mapping referral fields:
| Field | Description |
|---|---|
| Referrer Phone Number | Phone number of the person who referred this contact |
| Referrer Email | Email of the referrer (if no phone) |
The referrer must already exist in your database.
Advanced Import: Full Address
If your data has addresses in a single column (e.g., "123 Main St, Los Angeles, CA 90001"), map it to "Full Address". The importer will automatically geocode the location, and it parses an address that Solidarity Tech has not geocoded before into separate address components.
Details Step
On the final screen before starting the import, you'll configure these settings:
Default Preferred Language
If the preferred language field is not mapped, this language will be assigned to imported contacts with no preferred language.
Require Phone or Email
Enabled by default. It counts only the primary phone number and the primary email. Disable to import contacts without a phone number or email address.
Add Import Chapter as Secondary for Existing Contacts (Standard, Professional, and Enterprise plans)
When importing to a chapter and a contact already exists with a different primary chapter, enabling this also adds the import chapter as a secondary membership. Their primary chapter stays the same whether this setting is on or off.
The next four settings are under Show Advanced Options.
Update Existing Contacts
Enabled by default. When a matching phone or email is found, the existing contact is updated. Disable to skip records that already exist.
Use Custom Property as Primary Key
If you have a custom property mapped (such as a member ID, external system ID, or employee number), you can use it as the primary lookup key for matching contacts during import. When enabled, the import will search for existing contacts by that custom property value before checking phone number or email.
This is useful when:
- You are importing data from another system that has its own unique identifier
- People may have changed phone numbers or email addresses, but their external ID stays the same
- You need to reliably update specific records without relying on contact info
How it works: The import lookup priority becomes:
- Custom property value (if enabled)
- Solidarity Tech User ID (if mapped)
- Phone number
- Email address
Only custom properties of type Single-line Text or Number are available for selection. The selected property must contain unique values for each contact. If multiple contacts share the same value, the import will overwrite data from one contact onto another, and this cannot be undone.
Warning: Only use this for fields that are guaranteed to be unique per person, such as external system IDs or employee numbers.
This option only appears when at least one eligible custom property is included in your field mapping (step 2).
Allow Landline Phones
Enabled by default. Disable to exclude phone numbers that can't receive text messages.
Assign Tag To All
Add specific tags to all successfully imported contacts.
Tip: To filter by this import later, use the "Included in Data Import" filter instead of adding a tag.
Permissions an Import Turns On
An import gives SMS Blast and SMS P2P permission to a new person whose number can get texts, unless the person opted out.
Preserving Opt-Outs During Import
If you're migrating from another CRM and have people who opted out of communications, you can preserve those preferences directly during import.
Option 1: Map Opt-Out Columns (Recommended)
If your CSV has columns indicating opt-out status (e.g., "SMS Opted Out", "Email Unsubscribed"), you can map them directly:
- Chapter Opt-Out - Revokes permissions for the chapter you're importing to
- Global Opt-Out - Revokes organization-wide permissions (master switch)
After selecting either opt-out option, choose which permission types to revoke:
- ☐ SMS Blast
- ☐ SMS P2P
- ☐ Call
If the column value is true, yes, 1, or y, the selected permissions will be set to OFF.

Tip: Use Chapter Opt-Out if people only unsubscribed from a specific location/chapter. Use Global Opt-Out if they unsubscribed from your entire organization.
For more details on how permissions work, see Communication Permissions.
Option 2: Bulk Update After Import
Alternatively, you can opt people out after importing:
- Import everyone (with default opt-in status)
- Create a separate CSV of just the people who should be opted out (with their email or phone)
- Import that opt-out CSV
- Create a filter with Included in Data Import set to your opt-out import.
- Bulk Update → "Opt Out of Communications" → check Opt out of Calls, Opt out of Texts, or Opt out of Emails as needed.
This approach is useful if your opt-out data is in a separate file or requires complex logic.
After Import
No summary screen opens. The Imports page lists each import with the counts Created, Updated, Failed, and All.
Failed does not count rows that the import skipped because Update Existing Contacts is off.
If any rows failed, you can download an error CSV showing which rows had issues and why.
Updated 8 days ago
