HubSpot Integration: Donations

Last updated: April 23, 2026

Every successful, pending, or failed one time donation in WeGive becomes a HubSpot deal in the Donations pipeline. Recurring donations are covered in Article 4. This article explains how transactions map to deals, how WeGive statuses translate into deal stages, which payment methods are recognized, and what context (fund, campaign, fees, associations) gets attached to the deal in HubSpot.

How Transactions Become Deals

When a WeGive transaction is created or updated, the integration pushes a deal to HubSpot's Donations pipeline. The sync is bi-directional in theory, but in practice WeGive is always the source of truth for donation activity. Pulls from HubSpot are update only; a deal created directly in HubSpot will not create a new transaction in WeGive.

Matching Logic

Deals are matched by the wegive_id custom property on the HubSpot deal and the hubspot_id stored on the WeGive transaction. An existing deal is updated rather than duplicated.

Core Fields (Mapping Rules)

Core transaction to deal field mapping:

WeGive Field

HubSpot Property

Direction

Notes

amount

amount

Bi-directional

WeGive stores amounts in cents. HubSpot stores in dollars. Divided by 100 on push, multiplied by 100 on pull.

initiated_at or completed_at

closedate

Bi-directional

Controlled by the Close date mapping setting.

description

description

Bi-directional

Free text description of the gift.

Deal Name Format

WeGive auto-generates a human readable deal name so deals are easy to scan in HubSpot's pipeline view. The format is:

{Supporter Name} ${Amount} {Fund Name}

For example: Jane Smith $100 General Fund

Pipeline and Stage

The integration always writes to the Donations pipeline. The deal stage is resolved from the WeGive transaction status.

WeGive transaction status to HubSpot deal stage:

WeGive Status

HubSpot Stage

Direction

Notes

success

Success

Both

processing

Attempted

Both

Can be mapped to Success if Send processing ACH as success is on.

pending

Attempted

Both

failed

Failed

Both

refunded

Failed

Push only

There is no separate Refund stage.

disputed

Failed

Push only

cancelled

Failed

Push only

ACH behavior: ACH donations sit in processing for several business days before settling. By default they show in HubSpot as Attempted. If your team treats processing ACH as collected revenue, turn on Send processing ACH as success so the deal stage reflects that.

WeGive Deal Properties (23 Total)

Every donation pushed to HubSpot carries a set of wegive_* custom properties. These are the workhorses for any HubSpot dashboards, lists, or workflows you want to build on top of donation data.

Identity

Deal identity properties:

WeGive Data

HubSpot Property

id

wegive_id

owner_id

wegive_donor_id

Fund and Campaign Attribution

Fund and campaign attribution carried on the deal:

WeGive Data

HubSpot Property

fund_id

wegive_fund_id

Fund name

wegive_fund_name

campaign_id

wegive_campaign_id

Campaign name

wegive_campaign_name

Transaction Details

Transaction detail properties on the deal (payment method, processor, fees, tax):

WeGive Data

HubSpot Property

completed_at

wegive_gift_date

Gift type

wegive_gift_type (One-Time or Recurring)

Frequency

wegive_frequency (for recurring, blank for one-time)

source_type

wegive_payment_method (see mapping below)

Processor

wegive_payment_processor

Tax deductible flag

wegive_is_tax_deductible

Processing fee

wegive_fee_amount

Fee covered by donor

wegive_fee_covered

Net amount

wegive_net_amount

Recurring Linkage

Recurring plan linkage properties:

WeGive Data

HubSpot Property

Recurring flag

wegive_is_recurring

Parent recurring plan

wegive_recurring_plan_id

Net revenue: Use wegive_net_amount (the amount after processing fees) rather than amount for true net revenue reporting in HubSpot. Combined with wegive_fee_covered, you can report on how much of your gross receipts came from donors who covered fees.

Payment Method Mapping

The wegive_payment_method property is populated from the WeGive transaction's source_type. Use this to build pipeline reports, workflows, or lists segmented by how supporters paid.

WeGive source type to HubSpot payment method label:

WeGive source_type

HubSpot Value

card

Credit Card

bank

ACH

cash

Cash

check

Check

paypal

PayPal

venmo

Venmo

crypto

Cryptocurrency

in_kind

In-Kind

stock

Stock

wire

Wire

Associations

When a transaction is pushed, the integration creates HubSpot associations automatically. These let HubSpot correctly connect the deal to the person or organization that gave, and to the parent recurring plan if the gift is part of one.

Associations the integration creates when pushing a deal:

Association

When it is created

Deal to Contact

Individual supporter donations.

Deal to Company

Company supporter donations.

Deal to Deal (Recurring Plan label)

Transaction is a payment from a scheduled donation. Links the transaction deal to its parent recurring plan deal.

The Recurring Plan label is a custom association WeGive provisions during setup. It lets you navigate from a single donation deal straight to the parent recurring plan, or list all transaction deals that came from a given plan.

Fund Attribution

Funds do not exist as separate HubSpot records. They are carried on the deal as wegive_fund_id and wegive_fund_name text properties. This means you can filter and report on deals by fund, but you cannot build a separate HubSpot object or dashboard around "the Fund itself."

If a WeGive donation is split across multiple funds, only the primary fund is carried to the deal. The multi-fund split detail is preserved in WeGive.

Campaign Attribution

Like funds, campaigns are not separate HubSpot records. They live on each deal as wegive_campaign_id and wegive_campaign_name. To slice donation revenue by campaign in HubSpot, report on those properties directly.

Refunds

When a transaction is refunded in WeGive, the existing deal's stage is updated to Failed. A separate refund deal is not created. The refund amount and any refund metadata stay in WeGive.

If your team needs a clearer view of refunds in HubSpot, build a HubSpot list of deals where wegive_id is known and stage is Failed, then segment from there.

Transactions Coming from HubSpot

If you create a deal directly in HubSpot's Donations pipeline, the integration will attempt to link it to an existing WeGive transaction using wegive_id. This is rare, because most orgs create donations in WeGive (through checkouts, APIs, or imports), and those flow outward to HubSpot.

Deals that do not match an existing WeGive transaction will sit unlinked in HubSpot. They will not create a new transaction in WeGive. To record a gift, process it in WeGive and let the push flow do the work.

Common Questions

Why is a donation in the Attempted stage when it succeeded?
The most common cause is an ACH donation still in processing. Wait for the ACH to settle, or turn on Send processing ACH as success to mark processing ACH as Success immediately.

Why does a donation show the wrong fund in HubSpot?
HubSpot only sees the primary fund. If the gift was split, the split detail lives in WeGive.

The deal amount does not match the WeGive amount. What is happening?
Most often this is a cents-to-dollars issue caused by a manual HubSpot edit. WeGive divides by 100 on push. If someone edits the amount in HubSpot to a cents value, the next pull may look off. Restore the correct value in WeGive and let the push overwrite HubSpot.

How do I see all donations from a specific recurring plan?
Open the parent recurring plan deal in the Recurring Donations pipeline. Associated transaction deals appear under the Recurring Plan association label.