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

# Deal (Donation)

> Field mapping between WeGive transactions and HubSpot Deals in the Donations pipeline

One-time transactions push as Deals in the Donations pipeline that WeGive provisions during setup. **Financial fields (amount, status/stage, dates) are push-only** — WeGive is the system of record for those and they're never overwritten on pull. Several linkage/context fields, however, are genuinely read on pull too (see the Warning under Linkage and Context below) — "all fields are push only" is not quite accurate as a blanket statement for this object.

## Core fields

| WeGive field | HubSpot property | Type | Sync | Notes |
| - | - | - | - | - |
| (generated) | `dealname` | string | → | `{Donor Name} – ${Amount} – {Fund Name}` (en dash, not hyphen — see [Integration Nuances](/external/onboarding/hubspot/integration-nuances#deal-naming)) |
| `amount` | `amount` | number (dollars) | → | Cents converted to dollars |
| `created_at`/`initiated_at` or `succeeded_at` | `closedate` | date | → | Source controlled by **Close date mapping** |
| `description` | `description` | string | → | |
| `status` | `dealstage` | stage ID | → | See [stage mapping](/external/onboarding/hubspot/integration-nuances#pipeline-stage-mapping) |
| (derived) | `wegive_status` | string | → | Carries the transaction's real WeGive status as a stable string (e.g. Refunded, Disputed, Partially Refunded), independent of whatever `dealstage` the board shows — Refunded and Disputed both currently collapse to the Failed stage, so `wegive_status` is the only place that distinction survives on the deal. |

## Linkage and context

| WeGive field | HubSpot property | Sync |
| - | - | - |
| `id` | `wegive_id` | → |
| `owner_id` | `wegive_donor_id` | → |
| `fund_id` | `wegive_fund_id` | ↔ |
| `fund.code` | `wegive_fund_code` | ↔ |
| `fund.name` | `wegive_fund_name` | ↔ |
| `campaign.name` | `wegive_campaign_name` | → |
| `source_type` | `wegive_payment_method` | → |
| `fee_amount` | `wegive_fee_amount` | → |
| `net_amount` | `wegive_net_amount` | → |

<Warning>
  **`wegive_fund_id`, `wegive_fund_code`, and `wegive_fund_name` are read on pull, not just written on push** — a deal (or an unattributed line item) pulled into WeGive resolves its fund designation from these three properties in that priority order (ID first, then the normalized fund code, then an exact name match), the same resolution used for recurring-plan deals. If a deal states a fund reference in any of these three properties that doesn't resolve to a WeGive fund, the gift still imports (undesignated) but a warning is logged in the integration log's Details tab — check there before assuming an undesignated import failed silently.
</Warning>

## Payment method mapping

| WeGive `source_type` | `wegive_payment_method` |
| - | - |
| card | Credit Card |
| bank | ACH |
| cash | Cash |
| check | Check |
| paypal | PayPal |
| venmo | Venmo |
| crypto | Cryptocurrency |
| in\_kind | In-Kind |
| stock | Stock |
| wire | Wire |

`donor` and `user` source types (WeGive-internal payment sources with no Salesforce/HubSpot equivalent) map to no value and never write `wegive_payment_method` on push.

## Associations

Each Donation deal associates to the supporter's Contact (once it has a HubSpot ID) and to the supporter's Company or Household when applicable. If the supporter has not yet pushed, the deal is created without an association and linked on the next sync.


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