> ## 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.

# Data Mapping Overview

> Overview of data mapping between WeGive and Blackbaud Raiser's Edge NXT

# Data Mapping Overview

This section documents how data flows between WeGive and Blackbaud Raiser's Edge NXT, object by object.

## Synchronization Model

**Authentication**

* OAuth2 with PKCE
* Automatic token refresh

**API Integration**

* Blackbaud Sky API REST endpoints
* Rate limiting and automatic retry on transient failures

**Data Flow**

* Pull runs on a fixed platform-wide schedule (every 15 minutes) — there's no webhook-based real-time pull
* Push happens in real time for most objects, with an opt-in daily batch mode for transactions

<Note>
  See [Configuration Options](/external/onboarding/blackbaud/configuration-options) for the full picture of what's configurable vs. fixed platform behavior.
</Note>

## Core Object Relationships

| WeGive Object | Blackbaud Object | Sync Direction | Notes |
| - | - | - | - |
| Donor | Constituent | Bidirectional | Matched by Raiser's Edge ID only |
| Donation | Gift | Bidirectional | |
| Company | Constituent (Organization) | Bidirectional | |
| Recurring Donation | Recurring Gift | Bidirectional | |
| Fund | Fund | Pull only | Push exists only as unused, unimplemented code |
| Campaign | Campaign | Pull only | Push exists only as unused, unimplemented code |

<Warning>
  Household constituents and communication lists/segments aren't part of this integration in either direction. See [Configuration Options](/external/onboarding/blackbaud/configuration-options) for details.
</Warning>

## Detailed Object Mappings

### [Constituent Mapping](/external/onboarding/blackbaud/data-mapping/constituent)

Field mappings for donor and company records — note that WeGive's multiple email/phone/address fields map down to a single selected value per constituent, not a parallel multi-field sync.

### [Gift Mapping](/external/onboarding/blackbaud/data-mapping/gift)

Transaction and payment mappings.

### [Fund Mapping](/external/onboarding/blackbaud/data-mapping/fund)

Fund mappings — pull only.

### [Campaign Mapping](/external/onboarding/blackbaud/data-mapping/campaign)

Campaign mappings — pull only.

### [Recurring Gift Mapping](/external/onboarding/blackbaud/data-mapping/recurring-gift)

Recurring donation mappings.

## Duplicate Prevention

Matching is strictly by Raiser's Edge ID — there's no email or name-based fuzzy matching. A record created directly in Raiser's Edge outside this integration has no shared identifier and won't be recognized on a later sync.

## Troubleshooting Common Issues

### Sync Failures

**Authentication Errors**

* Verify OAuth2 credentials
* Check token expiration and refresh

**Rate Limiting**

* The integration retries automatically on rate-limit responses, honoring Blackbaud's `Retry-After` header

### Data Quality Issues

**Records not matching between systems**

* Confirm the record's Raiser's Edge ID is actually set on the WeGive side — matching only works via that ID
* A record created outside the WeGive integration (directly in Raiser's Edge, or via manual import) won't have this ID and will sync as a new record

## Support Resources

* [Blackbaud Sky API Documentation](https://developer.blackbaud.com/skyapi/)
* [Raiser's Edge NXT User Guide](https://help.blackbaud.com/knowledgebase/articles/Article/155033)
* **WeGive Support**: [support@wegive.com](mailto:support@wegive.com)


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