Skip to main content
The Salesforce integration is configured on one screen in the WeGive dashboard: Settings > Integrations > Salesforce NPSP. The screen has four tabs. This page lists every control on each tab, what it does, and when in an implementation you use it. For the order of operations, see the Sandbox-First Implementation Guide. For what each setting means for the data, see Configuration Options. The header above the tabs shows three status badges. Before setup they read Disabled, Not connected, and No sync has run yet; on a healthy integration they read Enabled, OAuth connected, and Last synced with a timestamp. Those three badges are the fastest health check for the integration.
Each dashboard (Test and Live) has its own copy of this screen. Nothing set here carries between them.

Connection tab

Save API credentials, authorize with Salesforce, and verify connectivity. This is the first tab you complete. WeGive detects whether the authorized org is a Sandbox or Production. A Test dashboard authorizes only against a Sandbox and a Live dashboard only against Production. See External Client App and Connection Setup for the Salesforce-side prerequisites.

Sync Configuration tab

Everything that controls what syncs and how. The tab has one Save button at the top; changes in any section are saved together.

Core Settings

Entity Pull & Push

One Pull and one Push toggle per object. Pull imports from Salesforce; Push exports to Salesforce. Objects with only a Pull toggle (companies, merge contacts, merge accounts) are read from Salesforce but never written.

WeGive4Salesforce Pushes

Push toggles for the objects that exist only because the WeGive4SF package is installed. All are push-only. The four event toggles depend on each other; enable them top to bottom. See Events, Tickets & Registrations.

Deleted Record Sync

When a toggle here is on, records deleted in Salesforce are also deleted in WeGive on the next pull. One toggle each for donors (Contacts), households, companies, campaigns, funds (GAUs), fund allocations, transactions (Opportunities), and recurring donations.
These are one-directional and destructive on the WeGive side. A Contact deleted in Salesforce removes the donor, and their history, from WeGive. Leave them off unless Salesforce is the system of record for deletions and the organization understands the consequence.

Contact Sync Options

Sync contacts with emails only. Imports only Salesforce Contacts that have at least one email address. On by default. Turning it off imports every Contact in the org on the next pull.

Sync Schedule

Pull frequency (minutes). How often the scheduled pull runs. The default is 15 minutes. Pushes are not scheduled; they run within about five minutes of a change in WeGive.

Stage Names

Stage Names, Push. The Opportunity Stage WeGive writes for each gift status when pushing: Success stage name, Refunded stage name, Pending stage name, Failed stage name. These values are also recognized on pull. They must match your org’s Stage picklist exactly. Stage Names, Pull. Additional Stage values to recognize for each status when importing gifts: Success stages, Pending stages, Refunded stages, Failed stages. Add one value at a time. Stages not listed fall back to the push stage names, then to built-in Salesforce defaults. A Stage that matches nothing imports as failed, so if imported gifts show as failed in WeGive, look here first.

Payment Method Labels

Card payment method name, Bank payment method name, Paypal payment method name. The values WeGive writes to the Payment Method field on Payments and Opportunities. Match them to your org’s existing picklist values.

Payment Method Push

Used only when Push payment methods to Salesforce is on.

Record Type Configuration

Opportunity Record Types

Service Revenue Record Types. Record types treated as non-tax-deductible revenue on import. Hidden Record Types. Record types that are never imported and never shown to donors. Add record type names one at a time. Use these to keep grants, in-kind gifts, pledges tracked as Opportunities, proposals, and similar non-gift Opportunities out of WeGive.

Contact Role Soft Credits

Pull contact role soft credits. Imports soft credits from OpportunityContactRole records in addition to Account and Partial Soft Credits. Off by default; most NPSP orgs do not need it.

Processing Options

Mapping Rules tab

Field-level mappings between WeGive and Salesforce, grouped by category and then by object. Each object shows its rule count and expands to the rule list. Every rule shows the Salesforce field, the WeGive field, its direction (Bi-directional, Import only, or Export only), and whether it is a saved rule or a default. Each object has its own Add Rule and Save buttons. A new rule needs the Salesforce field API name, the WeGive field API name, and a direction. The valid WeGive field names for each object are listed on that object’s page under Data Mapping.
Rules added to Campaign Events, Campaign Event Tickets, or Campaign Event Registrations are saved but not applied on push; only Campaign Event Registration Tickets honor custom rules. Use WeGive custom fields with a Salesforce API name for those objects instead. See Events, Tickets & Registrations.
Before mapping a custom Salesforce field, confirm the integration user has read and edit field-level access to it. A rule that targets a field the user cannot see fails the whole record on push. If you add a field in Salesforce and it does not appear as an option, run Clear Describe Cache on the Actions tab.

Actions tab

On-demand maintenance.

Sync dialog

Both the Connection tab’s Sync button and the Actions tab’s Sync with Salesforce button open the same dialog rather than running a sync immediately. It asks two things before queuing the job: Confirming queues the job in the background; you can navigate away while it runs.

Known differences between the screen and behavior

The data mapping pages describe what the integration does; this page describes what the screen shows. Where the two differ, the mapping pages are the reference. Current differences:
  • Rules added to Campaign Events, Campaign Event Tickets, or Campaign Event Registrations on the Mapping Rules tab are saved but not applied on push, and the Bi-directional and Import only directions have no effect on any of the four push-only event objects. See Events, Tickets & Registrations. This is a known issue.
  • Rules added to Communication Lists, Communication List Donors, or Campaign Fundraisers are likewise saved but not applied; those objects push a fixed field set. See Communication Lists and Fundraiser. This is a known issue.
  • The Push households toggle under Entity Pull & Push has no effect. Households are never pushed to Salesforce; see Account. This is a known issue.
  • The default Pledge rules seeded on every new integration reference fields that do not exist on wegive__Pledge__c, so pledge pushes fail until those rules are deleted. See Pledge. This is a known issue.
  • The Push fund allocations toggle does gate the allocation push. Salesforce.php checks $this->integration->push_fund_allocations (alongside the organization’s enable_fund_allocations setting) before calling syncAllocationsToSF() in all three push paths: the scheduled-donation push (~line 4382), transaction create (~line 4930), and transaction update (~line 4838). The dashboard’s save validation (UpdateSalesforceRequest::withValidator()) also rejects turning this toggle on unless Push transactions or Push recurring donations is also on, since allocations only ride along with one of those two parent pushes — confirming the toggle is a real, enforced gate, not a no-op.
  • Two-way sync, CRM sync, and the five Track switches are stored as integration settings (crm_sync, two_way_sync, track_donations, track_accounts, track_donors, track_recurring_donations, track_campaigns, track_designations on salesforce_integrations) but are not read anywhere in app/Integrations/Salesforce.php, app/Models/SalesforceIntegration.php, or app/Processors/SalesforceOauth.php. Those same column names are read and enforced on a different integration — NeonIntegration.php gates several methods behind $this->track_donors, $this->enabled, and $this->crm_sync — so the fields are functional in that CRM’s code path but are confirmed dead/unused for Salesforce specifically. The per-object Pull and Push toggles are what actually gate each Salesforce object.
Three other screens in the dashboard matter during implementation and support:
  • Settings > Integrations > Integration Logs. Every queued job, with successes, warnings, and errors. Entry types are create and update (one record pushed), pull (a scheduled or manual incremental pull), pull-all (a full pull), and push-missing (a sweep for records that never reached Salesforce). Only one push per record is queued at a time; further edits while it is pending do not add entries. This is the sync log referenced throughout these docs.
  • Settings > Integrations > Integration Locks. Records that failed repeatedly and are locked from retry. Unlock a record here after fixing the underlying cause.
  • Settings > Communications > Triggers. Triggered messages (receipts, welcome emails, recurring notices). Pause these before the first data pull; see the Implementation Guide.