DonorPerfect Integration Configuration
Configure your DonorPerfect integration settings to control how data synchronizes between WeGive and DonorPerfect.Access Configuration Settings
- Log into your WeGive Dashboard
- Navigate to Settings > Integrations
- Select DonorPerfect Integration
- Configure your API credentials (the only settings that currently have real effect, along with Enabled)
Basic Configuration
API Credentials
api_key · string · required
Your DonorPerfect API key for authentication
instance_url · string
Custom DonorPerfect server URL (optional — defaults to production endpoint)
Integration Status
enabled · boolean · default: false
Master switch to enable or disable the entire integration. This is the only setting that actually gates sync activity — there’s no way to sync some object types but not others.
What Actually Syncs (unconditional once enabled)
Non-Functional Settings (see warning above)
These fields exist in the dashboard, are saved, and are audit-logged — but currently have no effect on sync behavior:crm_synctwo_way_synctrack_donationstrack_donorstrack_recurring_donationstrack_campaigns(doubly so — there’s no Campaign sync to gate even if this were wired up)
Field Mapping
There is no customer-configurable field-mapping mechanism for this integration — fields sync via a fixed, hardcoded correspondence built directly intoexportDonor()/syncGift()/syncScheduledDonation(). There’s no “Mapping Rules” UI (the legacy dashboard’s tab for this is commented out in source) and no custom-field support. See Data Mapping for the exact field list.
Sync Timing
- Push: Donor, transaction, fund, and scheduled-donation pushes happen as each WeGive record is created or updated — this part genuinely is real-time
- Pull: Donors and gifts are pulled once daily via a two-pass incremental query (
created_datethenmodified_date) - There’s no way to force an immediate pull or manually trigger a full resync from the dashboard
Error Handling and Monitoring
- Retry Logic: There is none — every DonorPerfect API call is a single unretried request. A failed call is not automatically retried.
- Error Logging: Failures are reported to Sentry; there’s no customer-facing error surface on the dashboard
- Status Monitoring: There’s no real-time sync-status indicator in the dashboard for this integration
Data Validation Rules
Donor Requirements
- A pulled DonorPerfect donor row without a present, non-empty,
filter_var-valid email address is skipped entirely — not partially imported - On push, a blank first/last name is not itself a hard requirement — DonorPerfect’s API records what’s sent
Transaction Validation
- A zero-amount gift is skipped on import
- Fund resolution depends on a fund already having a
dp_id(from a priorsyncFund()call) — GL codes must exist and be linked before a transaction can carry fund attribution
Testing and Validation
Configuration Testing
Before enabling the integration:- Verify API Credentials: Confirm the API key is valid via DonorPerfect’s own testing tools
- Test with a small dataset: There’s no WeGive-side sandbox/test-sync mode — any push while enabled is a real push to DonorPerfect
- Confirm GL code setup: Fund GL codes should exist in DonorPerfect before enabling, since fund push failures aren’t customer-visible
Troubleshooting Common Issues
API Connection Problems
- Invalid API Key: Verify the key is correct and active
- Permission Issues: Ensure the API key has permissions for donor, gift, and code (GL code) management
Data Sync Issues
- Missing Donors: Check the donor’s email address in DonorPerfect — an invalid/missing email silently skips that donor on pull
- Fund/GL Code Errors: Verify the GL code exists and is linked before pushing a gift referencing that fund
- Sync toggles not working as expected: See the warning at the top of this page — this is expected, not a misconfiguration, until a known issue ships a fix
Next Steps
Data Mapping Guide
Learn how data is mapped between WeGive and DonorPerfect
Integration Nuances
Understand platform-specific behaviors and limitations