Migrating Your Historical Data
Last updated: March 30, 2026
If you have existing data in Virtuous that you want to bring into WeGive, we recommend importing it manually using WeGive's Import Tool rather than relying on the integration's initial sync function. This article explains why and walks you through the process.
Why Manual Import Instead of Sync
The Virtuous integration includes a "Begin Sync from Virtuous" option that pulls your historical data over automatically. However, Virtuous's API has rate limits that cause frequent timeouts on larger datasets. When a sync times out, you have to restart it and hope it gets further before hitting the limit again. For organizations with thousands of contacts or transactions, this process can be unreliable and time-consuming.
Importing your data manually through WeGive's Import Tool gives you more control. You can work in manageable batches, verify each import step before moving on, and avoid the back-and-forth of dealing with API timeouts. It's also easier to catch and fix data issues when you're reviewing a CSV file than when you're watching a sync log.
If your Virtuous database is very small (a few hundred contacts and transactions), the sync function may work fine. For everyone else, manual import is the more reliable path.
Before You Start
Make sure you've completed everything in Prerequisites & Before You Begin, especially:
The
wg_idcustom field has been created in VirtuousDuplicate emails have been cleaned up
Unsupported recurring frequencies have been removed from your checkouts
Also, before importing any data, navigate to Engagement > Triggers in WeGive and pause all triggered messages. This prevents automated emails from firing as records are created during import.
Export Your Data from Virtuous
You'll need to export your data from Virtuous as CSV files. Use Virtuous's reporting and export tools to pull the following datasets:
Contacts (both individuals and organizations)
Projects (these map to Funds in WeGive)
Segments (these map to Campaigns in WeGive)
Gifts/Transactions
Recurring Gifts
Export each data type into its own CSV file. Make sure your exports include Virtuous IDs for each record, as these will help WeGive match records correctly once the integration is running.
For specific instructions on exporting from Virtuous, refer to Virtuous's help documentation or contact their support team.
Prepare Your CSV Files
Before importing into WeGive, review your CSV files to make sure they meet WeGive's requirements.
File format: CSV (.csv) only. Maximum 50,000 records per file. If you have more, split into multiple files.
Date formatting: Dates must use YYYY-MM-DD format (e.g., 2024-09-12). DateTimes must use YYYY-MM-DDTHH:MM:SSZ format (e.g., 2024-09-12T15:30:00Z). Note the "T" between the date and time, not a space.
Required fields by data type:
Data Type | Required Fields | Notes |
Individual Supporters | First Name, Last Name | Include Virtuous ID if available |
Company Supporters | Name | Include Virtuous ID if available |
Donations/Payments | Amount, Created At (UTC), Donor Email or Donor WeGive ID | Donor must already exist in WeGive |
Recurring Plans | Amount, Frequency, Start Date, Donor Email or Donor WeGive ID | Donor must already exist in WeGive |
Campaigns | Name | |
Funds/Designations | Name |
Recurring plan frequencies must be exactly one of: Daily, Weekly, Every 2 Weeks, 1st & 15th, Monthly, Quarterly, Annually
Boolean fields use 1 for true and 0 for false.
Import Order
Import your data in this order. Each step depends on the one before it, so don't skip ahead.
Step 1: Contacts/Supporters. Import individual supporters first, then company supporters. These need to exist in WeGive before you can attach transactions or recurring plans to them.
Step 2: Funds/Designations. Import your Virtuous projects as funds in WeGive. Transactions reference funds, so these need to be in place first.
Step 3: Campaigns. Import your Virtuous segments as campaigns in WeGive.
Step 4: Transactions/Donations. Import your historical gifts. Each transaction must reference a donor that already exists in WeGive (by email or WeGive ID).
Step 5: Recurring Plans. Import active recurring donation plans last. Each plan must reference an existing donor.
How to Import
For each data type, follow these steps:
In WeGive, navigate to Data > Imports
Click the "+" icon to start a new import
Select Create as the import action
Select the data type you're importing (e.g., Individual Supporters)
Upload your CSV file
Map your CSV columns to the corresponding WeGive fields
Review the preview to make sure everything looks correct
Confirm and run the import
After each import completes, check the results on the Data > Imports page. Download the error report if any records failed and fix the issues before moving on to the next data type.
Tip: Import 1-2 test records first for each data type to make sure your field mapping and formatting are correct before running the full file.
Verify Your Data
After all imports are complete, take time to verify that everything came over correctly:
Spot-check a handful of supporter records to make sure names, emails, addresses, and phone numbers imported accurately
Verify that transactions are attached to the correct donors with the right amounts and dates
Confirm that recurring plans show the correct frequency and amounts
Check that funds and campaigns imported with the right names
Once you're satisfied the data looks good, you can enable the Virtuous integration (see Connecting WeGive to Virtuous) and it will keep everything in sync going forward. Don't forget to re-enable your triggered messages in Engagement > Triggers after the migration is complete.