> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wegive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration Options

> Learn how to configure sync settings and preferences for your DonorPerfect integration.

# DonorPerfect Integration Configuration

Configure your DonorPerfect integration settings to control how data synchronizes between WeGive and DonorPerfect.

<Warning>
  **Most of the "sync preference" toggles below are currently non-functional.** `crm_sync`, `two_way_sync`, `track_donations`, `track_donors`, `track_recurring_donations`, and `track_campaigns` are all saved and audit-logged when you change them, but none of them are read anywhere in the integration's actual sync code — the only setting that controls whether sync happens at all is **Enabled**. This is a known product defect and known issue. Don't rely on any toggle below except Enabled to actually change sync behavior.
</Warning>

## Access Configuration Settings

1. **Log into** your WeGive Dashboard
2. **Navigate to** Settings > Integrations
3. **Select** DonorPerfect Integration
4. **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)

| Object | Direction | Notes |
| - | - | - |
| Donors | Both | Push on create/update; pull runs once daily |
| Transactions (gifts) | Both | Same as donors |
| Recurring Donations | Push only | Synced as DonorPerfect pledges (`dp_savepledge`); no pull-back |
| Funds | Push only | GL codes only; no pull |
| Campaigns | **Not synced at all** | No campaign sync logic exists in this integration, despite the "Sync Campaigns" toggle existing in the UI |

## 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_sync`
* `two_way_sync`
* `track_donations`
* `track_donors`
* `track_recurring_donations`
* `track_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 into `exportDonor()`/`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](/external/onboarding/donorperfect/data-mapping/overview) 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_date` then `modified_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 prior `syncFund()` call) — GL codes must exist and be linked before a transaction can carry fund attribution

## Testing and Validation

### Configuration Testing

Before enabling the integration:

1. **Verify API Credentials**: Confirm the API key is valid via DonorPerfect's own testing tools
2. **Test with a small dataset**: There's no WeGive-side sandbox/test-sync mode — any push while enabled is a real push to DonorPerfect
3. **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

<CardGroup>
  <Card title="Data Mapping Guide" href="/external/onboarding/donorperfect/data-mapping/overview">
    Learn how data is mapped between WeGive and DonorPerfect
  </Card>

  <Card title="Integration Nuances" href="/external/onboarding/donorperfect/integration-nuances">
    Understand platform-specific behaviors and limitations
  </Card>
</CardGroup>

## Support

Need help with configuration? Contact our support team at [support@wegive.com](mailto:support@wegive.com) for assistance with setup and troubleshooting.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.