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

# Fundraiser

> Mapping between WeGive Campaign Fundraisers and Salesforce Campaign Fundraisers

**Salesforce Object:** `wegive__Fundraiser__c` (custom object)<br />**WeGive Model:** CampaignFundraiser

## Overview

This document describes how peer-to-peer fundraiser data syncs from WeGive to Salesforce. Campaign Fundraisers are individual fundraising pages created by supporters to raise money on behalf of a campaign.

<Note>
  This feature requires the WeGive managed package to be installed in Salesforce, which includes the custom `wegive__Fundraiser__c` object.
</Note>

***

## How Campaign Fundraiser Data Syncs

### Direction

* **Export to Salesforce** only. Fundraisers created or edited in Salesforce are not imported into WeGive.

### Mapping Types

* **Hard-coded** - Built into the integration logic. There are no mapping rules for this object.

<Warning>
  **WeGive custom fields on a fundraiser are NOT included in the push**, unlike most other synced objects (Contacts, Campaigns, Recurring Donations, and Pledges all merge `getCustomFieldsValues()` into their Salesforce payload — Fundraisers don't). `compileCampaignFundraiserPayload()` returns a flat, fixed set of fields with no custom-field merge step anywhere in the push path. This is a known issue.
</Warning>

***

## Sync Configuration

* **Push campaign fundraisers** - Enables the export of WeGive fundraisers to Salesforce

***

## Sync Triggers

Fundraiser data is exported from WeGive to Salesforce when:

* **Fundraiser Created:** A new fundraising page is created in WeGive
* **Fundraiser Updated:** An existing fundraising page is modified in WeGive

The export happens automatically after the create or update action.

***

## Field Mappings

| Salesforce Field | WeGive Field | WeGive API Field | Direction | Type | Notes |
| :- | :- | :- | :- | :- | :- |
| Id | Salesforce ID | salesforce\_id | Import from Salesforce | Hard-coded | Stored on the WeGive fundraiser after the first push |
| wegive\_\_WeGive\_Id\_\_c | WeGive Fundraiser ID | id | Export to Salesforce | Hard-coded | Omitted in multi-entity orgs (the object is shared across entities) |
| wegive\_\_Description\_\_c | Description | description | Export to Salesforce | Hard-coded | Truncated to 255 characters |
| wegive\_\_Slug\_\_c | URL Slug | slug | Export to Salesforce | Hard-coded | URL-friendly identifier |
| wegive\_\_Start\_Date\_\_c | Start Date | start\_date | Export to Salesforce | Hard-coded | `Y-m-d` |
| wegive\_\_End\_Date\_\_c | End Date | end\_date | Export to Salesforce | Hard-coded | `Y-m-d` |
| wegive\_\_Allow\_Fundraising\_\_c | Allow Fundraising | allow\_fundraising | Export to Salesforce | Hard-coded | Whether supporters can create sub-fundraisers |
| wegive\_\_Hide\_Fundraise\_\_c | Hide Fundraise Button | hide\_fundraise | Export to Salesforce | Hard-coded | |
| wegive\_\_Show\_Activity\_\_c | Show Activity | show\_activity | Export to Salesforce | Hard-coded | |
| wegive\_\_Show\_Leader\_Board\_\_c | Show Leader Board | show\_leader\_board | Export to Salesforce | Hard-coded | |
| wegive\_\_Show\_Child\_Fundrasiers\_\_c | Show Child Fundraisers | show\_child\_fundraisers | Export to Salesforce | Hard-coded | Field API name contains the spelling "Fundrasiers" |
| wegive\_\_Donations\_p2p\_Only\_\_c | P2P Donations Only | donations\_p2p\_only | Export to Salesforce | Hard-coded | |
| wegive\_\_Donate\_After\_Expiration\_\_c | Allow Donations After Expiration | donate\_after\_expiration | Export to Salesforce | Hard-coded | |

The fundraiser's name is not included in the payload. The Salesforce record's `Name` is managed in Salesforce. Unlike Contact/Campaign/Recurring Donation/Pledge, there is no row for WeGive custom fields here — see the Warning above.

***

## Matching & Create/Update Logic

* If the WeGive fundraiser has a `salesforce_id`: the integration **UPDATES** the existing record
* If not: it **CREATES** a new record and stores the returned ID (a lock prevents concurrent pushes from creating duplicates)

Fundraisers are matched only by Salesforce ID.

***

## Important Notes

* **Donations reference fundraisers.** When a donation is imported from Salesforce with a mapped fundraiser Salesforce ID, WeGive links the transaction to the fundraiser with that `salesforce_id`. This is the only inbound use of fundraiser data.
* **Deletion.** Deleting a fundraiser in WeGive does not delete or flag the Salesforce record.
* **Multi-entity orgs.** The fundraiser object has no entity field; `wegive__WeGive_Id__c` is omitted from the payload in multi-entity orgs.

***

## Troubleshooting

**Fundraiser not syncing:**

* Verify the managed package is installed and the Push campaign fundraisers toggle is enabled
* Check that the fundraiser was created or modified in WeGive

**Changes in Salesforce not appearing in WeGive:**

* Expected; the sync is one-directional from WeGive

**Description cut off:**

* The description is truncated to 255 characters on export; the full text remains in WeGive

***

## Related Documentation

* [Campaign](./campaign)
* [Opportunity & Payment](./opportunity)

*Verified against the integration source, September 2026.*


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