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

> How WeGive objects map to StudioEnterprise objects, and how the integration pushes and pulls each one

# DonorDirect Data Mapping Overview

This document describes how the WeGive donor platform maps to DonorDirect
StudioEnterprise (SE) objects and how each object is synchronized. The
mappings here reflect the integration as built and code-reviewed.

<Warning>
  This integration is not yet live for any organization — see [Integration
  Nuances](/external/onboarding/donordirect/integration-nuances) for current
  known limitations.
</Warning>

## Object Mapping Summary

| WeGive Object | StudioEnterprise Object | Pull (SE → WeGive) | Push (WeGive → SE) |
| - | - | - | - |
| Donor (individual) | Account (type `I`/`S`) | Yes | Yes (optional) |
| Donor (company) | Account (type `O`) | Yes | Yes (optional) |
| Household | Account (type `F`, family) | Yes | Not applicable |
| Transaction | Gift (`T01`/`T04`) | Yes | Yes (optional, settled gifts only) |
| Scheduled Donation | Recurring Plan (`T16`/`T17`) | Yes | Yes (optional) |
| Fund | Project (`Y01`) | Yes | Not yet supported |
| Campaign | Source Code (`P04`, folded from the full campaign hierarchy) | Yes | Not yet supported |

Detailed field-level mappings live on the per-object pages:

* [Donor & Household Mapping](./donor)
* [Transaction Mapping](./transaction)
* [Recurring Donation Mapping](./recurring-donation)
* [Fund Mapping](./fund)
* [Campaign Mapping](./campaign)

## Correlation Fields

WeGive tracks the corresponding StudioEnterprise record using a
`donor_direct_id` (or equivalent) column on each synced record:

| WeGive Record | Column | References |
| - | - | - |
| Donor / Household | `donor_direct_id` | The StudioEnterprise Account Number |
| Transaction | `donor_direct_id` | The StudioEnterprise gift/transaction ID |
| Scheduled Donation | `donor_direct_id` | The StudioEnterprise recurring plan's Header ID |
| Fund | `donor_direct_id` | The StudioEnterprise Project Code |
| Campaign | `donor_direct_id` | The StudioEnterprise Source Code |

## Sync Directions

* **Pull is on by default** for all five object types, using WeGive's
  custom read-only data endpoints (see [Integration
  Nuances](/external/onboarding/donordirect/integration-nuances) for why).
* **Push is off by default for every object type** and must be explicitly
  enabled per data type. Currently, push is only available for **Donors**,
  **Transactions**, and **Scheduled Donations** — Funds and Campaigns are
  pull-only at this time.
* **Transactions are effectively create-only on push.** Once a gift has a
  StudioEnterprise ID, WeGive does not attempt to update that record again
  — gifts are treated as settled once synced. Refunds are sent as their own
  follow-up sync.

### Related-Record Push Order

Pushing a transaction or recurring plan first pushes any related record
that doesn't yet have a StudioEnterprise ID — the donor (account), then the
gift or plan itself — so the gift can reference a real StudioEnterprise
account.

## Identity & Matching

**Accounts** are the identity backbone every other object links back to.
An Account's type code routes how it's imported into WeGive:

* `I` (Individual) or `S` → imported as an individual Donor
* `O` (Organization) → imported as a company Donor
* `F` (Family) → imported as a Household

**Transactions** link to their parent recurring plan (if any) via a
StudioEnterprise Header ID reference, which is how WeGive knows a given gift
was produced by a specific recurring plan.

**Funds and Campaigns** are reference data — small lookup catalogs — that
transactions and recurring plans point to. They're synced before gift/plan
data during a pull, so gifts can resolve to a real fund/campaign on import.

## Change Tracking

After the first full historical import, ongoing pulls use
StudioEnterprise's own audit/change-tracking data to identify which records
changed (including deletions), rather than rescanning the full database on
every sync cycle.

<Note>
  Deletion detection has a known limitation — see [Integration
  Nuances](/external/onboarding/donordirect/integration-nuances#known-current-limitations).
</Note>

## Amount & Format Handling

WeGive stores monetary amounts in **cents**; StudioEnterprise uses **decimal
dollar amounts**. All amounts are converted automatically in both
directions.

This overview reflects the integration as implemented so far. See the
per-object pages for exact field mappings.


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