Importing Existing Supporters
Last updated: April 10, 2026
If you already have a list of supporters in a spreadsheet, another CRM, or a donor management system, you can bring them into WeGive using the Import Wizard. This guide walks you through every step of the process — from preparing your file to reviewing the results.
Before You Start
A few things to keep in mind before you begin:
File format: WeGive accepts CSV (.csv) files only. Most spreadsheet tools (Excel, Google Sheets, Numbers) can export to CSV.
File size: We recommend importing no more than 50,000 records at a time for optimal performance. If you have a larger list, split it into multiple files.
Encoding: Save your file in UTF-8 encoding. WeGive will attempt to convert other encodings automatically, but UTF-8 is the safest option.
Understanding Import Actions
When you start an import, you'll first choose an action. There are three options, and picking the right one matters:
Create — Adds brand-new supporter records to WeGive. Use this when you're bringing in supporters for the first time. If WeGive finds a supporter that already exists with a matching identifier (like the same email address), that row will return a "Donor already exists" error rather than creating a duplicate. The Create action is intentionally strict to protect your data.
Update — Modifies existing supporter records with new or corrected information. WeGive matches each row to an existing record using the identifier field you choose (such as email or WeGive ID). Only non-empty values in your CSV will overwrite what's already in WeGive — blank cells are ignored, so you won't accidentally erase existing data.
Tag — Links existing supporters to the import without changing any of their data. This is useful when you want to apply a tag to a specific group of supporters you've identified in a spreadsheet. Like Update, it requires an identifier field for matching.
Choosing a Supporter Type
After selecting your action, you'll choose the type of supporter you're importing:
Individual Supporters — People (donors, volunteers, contacts, etc.)
Company Supporters — Organizations, businesses, or foundations
Preparing Your CSV
Required Fields
The fields you need depend on your action and supporter type.
Creating Individual Supporters requires two fields:
Field | Label in WeGive |
| First Name |
| Last Name |
Creating Company Supporters requires one field:
Field | Label in WeGive |
| Name |
Updating or Tagging (either type) requires at least one identifier field so WeGive can match each row to the correct existing record:
Field | Label in WeGive |
| WeGive ID |
| |
| Salesforce ID |
| Virtuous ID |
| Neon ID |
| PlanningCenter ID |
You only need one of these — not all of them. Email is typically the most reliable and widely available option for matching.
All Available Fields
You can include any combination of the following columns in your CSV. You don't need to include all of them — only map what you have.
Contact Information: email_1 (Email), email_2 (Email 2), email_3 (Email 3), mobile_phone (Mobile Phone Number), office_phone (Office Phone Number), home_phone (Home Phone Number), other_phone (Other Phone Number), fax (Fax Number)
Mailing Address: mailingAddress.address_1 (Address), mailingAddress.address_2 (Address 2), mailingAddress.city (City), mailingAddress.state (State), mailingAddress.zip (Zip), mailingAddress.country (Country)
Billing Address: billingAddress.address_1 (Billing Address), billingAddress.address_2 (Billing Address 2), billingAddress.city (Billing City), billingAddress.state (Billing State), billingAddress.zip (Billing Zip), billingAddress.country (Billing Country)
Communication Preferences: do_not_contact (Do Not Contact), do_not_email (Do Not Email), do_not_sms (Do Not Text), do_not_mail (Do Not Mail). These accept 0 (allow) or 1 (opt out). When creating new supporters, all default to 0 if not provided.
Notification Settings: include_name (Include Name), include_profile_picture (Include Profile Picture), desktop_notifications (Desktop Notifications), mobile_notifications (Mobile Notifications), email_notifications (Email Notifications), sms_notifications (SMS Notifications). These accept 0 or 1 and default to 1 (enabled) for new records.
Communication Channels: general_communication (General Communication), marketing_communication (Marketing Communication), donation_updates_receipts (Donation Update Receipts), impact_stories_use_of_funds (Impact Stories Use of Funds). These accept 0 or 1 and default to 1 (enabled) for new records.
Other: birthdate (Birthdate), notes (Notes), is_marketing (Marketing Contact — defaults to 0), custom_import_reference (Custom ID — your own external identifier for future reference)
Formatting Tips
Boolean fields (anything that takes 0 or 1) also accept
TRUE/FALSE,true/false, orYes/No.Phone numbers should be plain text without special formatting.
Dates should follow
YYYY-MM-DDformat.Email fields are validated — rows with malformed email addresses will fail.
The Import Wizard
The import process uses a four-step wizard. Here's what happens at each step.
Step 1: Type
Navigate to Data > Imports and click the + button to start a new import. On this first screen you'll select your action (Create, Update, or Tag) and your supporter type (Individual or Company). Both must be selected before you can continue.
Step 2: Upload
Upload your CSV file. WeGive reads the first portion of your file and extracts the column headers. You'll also see the list of required and available fields for your chosen action and supporter type, so you can confirm your file has what's needed before moving on.
Behind the scenes, WeGive parses the first 500 KB of your file to generate a preview. It pulls the column names from your header row and samples up to five rows of data so you can verify the file looks correct.
Step 3: Map
This is where you tell WeGive which columns in your CSV correspond to which supporter fields. The mapping screen shows a table with three columns:
Column Header From File — The actual header name from your CSV
Preview Information — A sample of data from that column (up to two values) so you can confirm it's the right data
WeGive Property — A dropdown where you select the matching WeGive field
WeGive attempts to auto-match your columns based on common naming patterns. For example, a column called "firstname" or "first name" will automatically map to First Name, and "phone" or "phone_number" will map to Mobile Phone Number. You can adjust any of these or leave columns unmapped if you don't want to import that data.
For Update or Tag imports, you'll also need to select a Primary Identifier — the field WeGive should prioritize when matching rows to existing supporters. This must be one of the fields you've already mapped.
The wizard validates your mappings before letting you proceed. It checks that all required fields are mapped (for example, both first_name and last_name for individual Create imports) and that a primary identifier is selected when needed.
Note: When using the Create action, the WeGive ID field is not available as a mapping option since new records don't have a WeGive ID yet.
Step 4: Details
Review your configuration and click to execute the import. WeGive uploads your CSV to secure storage and queues it for background processing, so you don't need to keep the page open.
After execution starts, you're automatically redirected to the Import Detail view where you can track progress.
Tracking Progress
The Import Detail view shows your import's status in real time. You'll see:
Status — Whether the import is pending, processing, or complete
Total Lines — The total number of rows in your file
Imported Lines — How many rows were successfully processed
Failed Lines — How many rows encountered errors
Progress — A percentage showing how far along the import is
Progress updates approximately every 100 rows processed.
Downloading Results
Once your import is complete, three download options become available:
Download Original File — Your uploaded CSV, exactly as you provided it.
Download Results — Every row from your file with two additional columns appended: Success (Yes or No) and Error (the specific error message for any failed row). This gives you a complete picture of what happened.
Download Errors — Only the rows that failed, including the error message for each. This is the most useful file for fixing issues — you can correct the problems, save it as a new CSV, and re-import just those rows.
How Duplicate Detection Works
WeGive uses identifier fields to check for existing records during import. The behavior differs by action:
Create action: WeGive searches for an existing supporter matching any of the identifier fields in your row. If a match is found, the row fails with a "Donor already exists" error. There's one exception — if the matching record was created by the same import (for example, if your file has two rows with the same email), the second row will return the existing record rather than erroring. The Create action will never silently overwrite an existing supporter's data.
Update and Tag actions: WeGive looks for a matching record using the identifiers in your row, prioritized by the primary identifier you selected. If exactly one match is found, the operation proceeds. If no match is found, the row fails with an error. If multiple matches are found, the row also fails with a "Multiple donors found" error to prevent ambiguous updates.
Tagging After Import
After any import completes successfully, you can apply tags to all the supporters that were part of that import. Go to Data > Imports, find your completed import, and use the Actions menu to tag the imported records. This is a common workflow: import your supporters first, then organize them with tags for use in communication lists, journeys, or reporting.
What Happens Behind the Scenes
When you execute an import, several things happen in the background:
Your CSV file is uploaded to secure cloud storage.
A background job is queued to process the file.
Each row is processed individually — if one row fails, the rest continue normally.
As rows are processed, separate result and error files are generated.
The progress counter updates every 100 rows.
When complete, the final status, success count, and error count are recorded.
CRM syncs are not triggered during import. If you have a Salesforce, Neon, Virtuous, Planning Center, or other integration connected, imported records are saved without firing outbound sync events. This is intentional — bulk imports would otherwise overwhelm your CRM with sync requests. You can sync records separately after the import finishes.
Common Errors and How to Fix Them
"Donor already exists" — You're using the Create action but a supporter with the same identifier already exists in WeGive. If you want to update existing records, use the Update action instead.
"Donor does not exist" — You're using the Update or Tag action but no matching supporter was found. Check that your identifier field is correct and that the data matches what's in WeGive.
"Multiple donors found" — More than one supporter in WeGive matches the identifier you provided. This typically happens with shared email addresses. Try using a more unique identifier like WeGive ID or a CRM-specific ID.
"Required fields are missing" — Your CSV is missing a required field mapping. For individual supporters being created, make sure both First Name and Last Name are mapped. For company supporters, make sure Name is mapped.
"Select a primary identifier" — You're running an Update or Tag import but haven't selected which identifier field to use for matching. Choose one from the dropdown in the mapping step.
Email validation errors — An email address in your CSV is malformed. Check for typos, extra spaces, or missing "@" symbols.
Best Practices
Always include email addresses when possible. Email is the most universally available and reliable identifier for matching supporters.
Store your external IDs. If your supporters have IDs from another system (your old CRM, a spreadsheet row number, etc.), include them in the
custom_import_referencecolumn. This gives you a reliable way to run Update imports later.Test with a small batch first. Import 5–10 records to make sure your mappings are correct and the data looks right in WeGive before running a large import.
Review the error file, then re-import. After a large import, download the Errors file, fix the issues in that file, and re-import just the failed rows. No need to re-run the entire file.
Check communication preferences. New supporters default to allowing all contact methods. If your existing data includes opt-out preferences, include those columns so they carry over.
Split large files. Keep each import to 50,000 records or fewer. Larger files can be split and imported in batches.
Use Update for deduplication. If you're not sure whether some supporters already exist in WeGive, the Update action is safer than Create. It will match and update existing records rather than erroring on duplicates.