How the two environments pair
Phase 0: Decide before you configure
Nearly every stalled implementation traces back to one of these items being unknown on the day of setup.Access
- Admin access to the WeGive Test and Live dashboards
- System Administrator access to the Salesforce Sandbox and Production
- A Sandbox refreshed recently enough that its NPSP settings, record types, and GAUs match Production
Sandbox data
The validation phase depends on what data the Sandbox holds.Salesforce facts
- Salesforce edition (Enterprise, Unlimited, or Developer; Professional is not supported)
- NPSP version (Setup > Installed Packages; 3.220 or higher is required)
- Household Account model in use (required)
- Enhanced Recurring Donations (RD2) enabled (required)
- Whether the org uses NPSP Payments (
npe01__OppPayment__c) as the record of money received - Whether the org uses GAU Allocations, and if so the default GAU
- Opportunity record type API names for donations, and which represent non-tax-deductible revenue or should be hidden from WeGive entirely
- The exact Opportunity Stage names the org uses for Closed Won, Pledged, Refunded, and Closed Lost
- Any other automation that writes to Contact, Opportunity, Payment, or Allocation (Flows, Apex, other vendors). These are the most common source of duplicate or conflicting records after go-live.
Integration decisions
- Which Salesforce user WeGive will run as (see Phase 1). A dedicated user is strongly recommended.
- Whether to sync Contacts that have no email address (default: no)
- Whether to push events, tickets, and registrations, and which of the four event objects
- Whether to push pledges (requires the pledge custom object; see Configuration Options)
- Sync direction per object: Import, Export, or Both. Defaults suit most orgs; it matters most for Contacts and Opportunities when another system is also a source of truth.
- Which custom fields must map between the systems, by WeGive field, Salesforce API name, direction, and whether create-only. The Data Mapping Overview and its per-object pages list the defaults.
- Which triggered messages (receipts, welcome emails, recurring gift notices) exist in WeGive, so they can be paused during the initial data pull
Phase 1: Prepare the Sandbox and the integration user
Work in the Sandbox for Phases 1 through 6.1a. Verify NPSP configuration
Confirm each item in Setup Requirements: Household Account model, RD2 enabled, Household Account and Organization Account record types present, Donation Opportunity record type present, and Middle Name and Suffix enabled on Contact if the org captures them. If any of these differ from Production, refresh the Sandbox or fix Production first. Validating against a Sandbox that does not match Production proves nothing.1b. Create the integration user
WeGive authorizes as a single Salesforce user. Every record WeGive creates or edits is stamped with that user, and the NPSP trigger exclusions in Phase 3 key off its username. Use a dedicated user, never a person’s login.Create the user
[email protected]). Note the full Sandbox username; you will need it for the trigger handler exclusions.Confirm API access
Set the password and verify login
Phase 2: Install WeGive4SF in the Sandbox
Follow Installing the WeGive Salesforce Managed Package using the Sandbox install link. Choose Install for All Users. After installation:- Setup > Installed Packages shows WeGive4SF with a version number. Record it.
- Setup > Permission Sets > WeGive Admin > Manage Assignments: assign to the integration user.
- Setup > Object Manager: search for “WeGive” and confirm the
wegive__objects exist.
Phase 3: External Client App, Remote Site, and trigger exclusions
Follow External Client App and Connection Setup sections 1 through 4 exactly, then apply the NPSP trigger handler exclusions on the same page. Three details trip people up:- Activation delay. A new External Client App can take up to 10 minutes to become usable. Create it first, then do the Remote Site and trigger exclusions while you wait.
- Sandbox username in exclusions. In Usernames to Exclude on each trigger handler, enter the full Sandbox username including the suffix. In Production you will enter the Production username. A mismatch is silent: NPSP automation simply keeps running on WeGive records.
- Consumer Secret is shown once. Store the Consumer Key and Consumer Secret in a password manager immediately. If the secret is lost, generate a new one and re-authorize in WeGive.
wegive_api Remote Site is active, the three trigger handlers list the integration user’s full Sandbox username, and the Consumer Key and Secret are stored.
Phase 4: Connect the WeGive Test dashboard
Sign out of Salesforce
Open integration settings
Enter credentials and authorize
test.salesforce.com (or the Sandbox’s My Domain) and sign in as the integration user. Approve the access request. The header badge should change from Not connected to OAuth connected.Test the connection
Phase 5: Configure the integration in the Test dashboard
Use the values from Phase 0. Work through the Sync Configuration tab top to bottom, then the Mapping Rules tab. Every control is described in the Dashboard Settings Reference; what each setting means for the data is in Configuration Options.Core Settings and Entity Pull & Push
Salesforce.php, SalesforceIntegration.php, or SalesforceOauth.php (the same column names ARE live and enforced for the Neon CRM integration, which is likely why they still appear in the UI). Leave them at whatever value; they have no effect here. Sync direction is controlled entirely by the per-object Pull/Push toggles below.WeGive4Salesforce Pushes
Deleted Record Sync
Contact Sync Options and Sync Schedule
Stage Names
Payment Method Labels
Record Type Configuration and Opportunity Record Types
Household Account and Organization). Add non-gift Opportunity record types (grants, in-kind, proposals, pledges tracked as Opportunities) to Hidden Record Types so they stay out of WeGive.Processing Options, then Save
Custom fields in WeGive
Mapping Rules
Pause triggered messages
Phase 6: Validate in the Sandbox
On the Connection tab, turn on Enable Integration, then click Sync to start the first pull without waiting for the schedule. WeGive pushes changes to Salesforce within about five minutes and pulls on the schedule set under Sync Configuration (15 minutes by default), so each test needs a short wait. Run them in order; later tests depend on earlier records. Watch progress and errors under Settings > Integrations > Integration Logs.6a. Full data pull
Within about fifteen minutes, Contacts (with emails, if the filter is on), Households, Campaigns, Opportunities, and Recurring Donations from the Sandbox begin appearing in the Test dashboard. Let the pull finish, then reconcile counts:6b. Push a new donor and one-time gift
- In the Test dashboard, make a one-time gift in test mode through a giving form or the virtual terminal, using a new donor name and email that does not exist in the Sandbox.
- Wait five to ten minutes.
- In the Sandbox, find the Contact by email. Verify:
- Contact exists, in a new Household Account with the Household record type
- Opportunity exists with the Donation record type, the correct Amount and Close Date, and the Stage mapped to Success
- If Uses Payments is on: one Payment record, Paid checked, amount matching the Opportunity
- If Fund Allocations is on: Allocation records summing to the Opportunity amount, with no unexpected extra allocation to the default GAU (an extra one means
ALLO_Allocations_TDTMis not excluded for this user) - Created By on every record is the integration user
- Open the donor in WeGive and confirm the Salesforce ID is populated on the donor and the transaction.
6c. Push a gift to an existing donor
Make a second test gift using the email of a Contact that already existed in the Sandbox. Verify WeGive matched the existing Contact instead of creating a duplicate, and the new Opportunity landed under the existing Household.6d. Refund
Refund the gift from 6b in the Test dashboard. After the push delay, confirm the Opportunity stage changed to the Refunded stage and the Payment reflects the refund.6e. Recurring gift
Start a monthly test recurring gift. Confirm a Recurring Donation is created in the Sandbox with the correct amount, frequency, and Contact, and that the first installment Opportunity is linked to it.6f. Pull an edit from Salesforce
Edit the phone number on a synced Contact in the Sandbox. Within about fifteen minutes the change should appear on the donor in WeGive. Then edit the same donor’s phone in WeGive and confirm it appears in Salesforce. This proves both directions on Contact.6g. Events (if enabled)
Create a test event with one ticket type in the Test dashboard and register a test donor. Confirmwegive__Event__c, wegive__Event_Ticket__c, and wegive__Event_Registration__c records exist and link to each other and to the Contact.
6h. Integration log review
Open Settings > Integrations > Integration Logs and confirm there are no repeating errors. Check Integration Locks is empty, or that every locked record is one you deliberately broke. One-off errors on records you deliberately broke are fine; a repeating error on every push means a configuration problem that will recur in Production. Checkpoint 6: every applicable test passes and Integration Logs show no repeating errors.Phase 7: Repeat in Production with the Live dashboard
Production setup is the same sequence with three differences: the org, the dashboard, and the username.Go-live sequence
Connecting and pulling are separate events and can be days or weeks apart. Connect early so authorization and configuration problems surface with time to spare. Pull only when the organization is ready to run on WeGive data.- Complete Phases 1 through 5 in Production and the Live dashboard. Leave Enable Integration off.
- Confirm every trigger in the Live dashboard is paused.
- Choose a quiet window for the full pull, not the days before a major appeal or event. Turn on Enable Integration and click Sync at the start of the window.
- Watch the pull. Large orgs can take an hour or more to bring in history. Do not change configuration while it runs.
- Reconcile counts using the 6a table.
- Make a small live gift and refund it. Confirm the Opportunity, Payment, and Allocation in Production, then the refund stage.
- Re-enable triggered messages only after the pull is complete and reconciled.
- Review Integration Logs and Integration Locks after the first full day and again after the first week.
After go-live
- A Sandbox refresh wipes the Sandbox-side configuration: the ECA, Remote Site, trigger exclusions, and permission set assignment. Re-authorize the Test dashboard after every refresh.
- Record the WeGive4SF version installed in each org. Upgrades install in place using the same links.
- Keep the list of trigger handler exclusions with the org’s admin documentation so a future administrator does not remove them.
- The integration user and ECA credentials belong to the organization, not WeGive. Store them accordingly.