Before Sync
- Validate all email addresses
- Standardize name formatting
- Clean duplicate records
- Review address information
This document provides comprehensive field mapping details for donor profiles between WeGive and DonorPerfect. The integration supports both individual donors and organizational donors with automatic type detection.
Primary Table: dp (Donor Profile)
WeGive Model: DonorProfile
Sync Direction: Bidirectional (WeGive ↔ DonorPerfect)
| WeGive Field | DonorPerfect Field | Type | Notes |
|---|---|---|---|
dp_id | @donor_id | Integer | Auto-generated DonorPerfect ID |
email_1 | @email | String | Primary matching field for imports |
id | user_id | String | Always set to “WeGive” for tracking |
For donors with donor_type = 'individual':
| WeGive Field | DonorPerfect Field | Type | Max Length | Required |
|---|---|---|---|---|
first_name | @first_name | String | 50 | Yes |
last_name | @last_name | String | 50 | Yes |
middle_name | Not mapped | String | - | No |
DonorPerfect Type: Set to 'IN' (Individual)
For donors with donor_type = 'organization':
| WeGive Field | DonorPerfect Field | Type | Max Length | Required |
|---|---|---|---|---|
organization_name | @last_name | String | 50 | Yes |
first_name | @first_name | String | 50 | No |
DonorPerfect Type: Set to 'CO' (Company/Organization)
| WeGive Field | DonorPerfect Field | Type | Format | Notes |
|---|---|---|---|---|
mobile_phone | @mobile_phone | String | Digits only | Primary mobile number |
home_phone | @home_phone | String | Digits only | Residential phone |
office_phone | @business_phone | String | Digits only | Work/business phone |
fax | @fax_phone | String | Digits only | Fax number |
Automatic Formatting:
| WeGive Field | DonorPerfect Field | Type | Validation | Notes |
|---|---|---|---|---|
email_1 | @email | String | Email format | Primary email, required for sync |
email_2 | Not mapped | String | - | Secondary emails not synced |
The integration maps the primary mailing address from WeGive to DonorPerfect:
| WeGive Field | DonorPerfect Field | Type | Max Length | Notes |
|---|---|---|---|---|
mailingAddress.address_1 | @address | String | 50 | Primary address line |
mailingAddress.address_2 | @address2 | String | 50 | Secondary address line |
mailingAddress.city | @city | String | 30 | City name |
mailingAddress.state | @state | String | 2 | State/province code |
mailingAddress.zip | @zip | String | 20 | Postal/ZIP code |
mailingAddress.country | @country | String | 3 | Always set to “US” |
Automatic Handling:
Partial Address Sync:
Action: dp_savedonor
Required Parameters:
@donor_id (for updates, empty for new)@first_name and @last_name (individuals)@last_name (organizations)@email (required)@donor_type (‘IN’ or ‘CO’)@user_id (set to “WeGive”)SQL Query Example:
SELECT donor_id, first_name, last_name, email, address, city, state, zip, mobile_phone, home_phoneFROM dpWHERE email IS NOT NULL AND email != '' AND created_date >= 'YYYY-MM-DD'ORDER BY donor_id| Error Type | Cause | Resolution |
|---|---|---|
| Missing Email | Donor has no email address | Skip record, log warning |
| Invalid Email | Email format validation fails | Correct format and retry |
| Duplicate Email | Email already exists in DonorPerfect | Update existing record |
| Field Too Long | Text exceeds DonorPerfect limits | Truncate and sync |
| API Timeout | Large batch processing | Reduce batch size, retry |
Before Sync
Ongoing Maintenance
Before Sync Checks:
Automatic Corrections:
| WeGive Field | Purpose | Values |
|---|---|---|
dp_id | DonorPerfect donor ID | Integer or null |
synced_at | Last sync timestamp | DateTime or null |
sync_status | Current sync state | ’pending’, ‘synced’, ‘error’ |
The WeGive Dashboard provides real-time sync status:
Configure which donor data synchronizes:
Possible Causes:
Solutions:
Possible Causes:
Solutions:
Possible Causes:
Solutions:
For additional help with donor data mapping, contact our support team at support@wegive.com.