NPSP GAU Allocations Deleted by Salesforce — ENTITY_IS_DELETED Error

Last updated: February 11, 2026

Overview

When using WeGive with Salesforce NPSP (Nonprofit Success Pack), GAU (General Accounting Unit) Allocations created by WeGive may be automatically deleted by NPSP's Default Allocation triggers. This causes ENTITY_IS_DELETED errors when WeGive later attempts to update those allocations.

This article explains the root cause and how to resolve it.


Symptoms

  • ENTITY_IS_DELETED errors appear in WeGive's Salesforce integration logs when syncing donations.

  • The error occurs on update calls to GAU Allocation records — not on the initial insert.

  • The issue is most common when a donation is designated to the Default GAU (the GAU configured in NPSP Settings → Donations → GAU Allocations).

  • Donations designated to non-default GAUs may sync successfully.


Root Cause

NPSP has a feature called Default Allocations that automatically creates a GAU Allocation to the Default GAU whenever a new Opportunity is inserted. This is handled by NPSP trigger handlers that fire on Opportunity, Payment, and Allocation records.

When WeGive syncs a donation to Salesforce, the following sequence occurs:

  1. WeGive inserts the Opportunity. NPSP's ALLO_Allocations_TDTM trigger fires and auto-creates a default GAU Allocation.

  2. WeGive inserts its own GAU Allocation to the same Default GAU.

  3. NPSP detects the duplicate. Two allocations now exist for the same GAU on the same Opportunity. NPSP deletes the one it considers redundant — which is WeGive's allocation.

  4. WeGive attempts to update the allocation using the ID it received at insert time. That record no longer exists → ENTITY_IS_DELETED.

The Salesforce Composite API returns a success response for the initial insert before NPSP's cascading triggers run and delete the record. This means WeGive has no way of knowing the allocation was deleted until the next update attempt fails.

Why non-default GAUs are usually unaffected: When WeGive's allocation targets a different GAU than the default, NPSP sees that non-default allocations cover the full Opportunity amount and deletes its own default allocation instead — so WeGive's allocation survives.


Solution

Exclude the WeGive integration user from the NPSP trigger handlers that manage GAU Allocations. This prevents NPSP from running its allocation logic when WeGive creates records, while preserving normal NPSP behavior for all other users.

Step-by-Step Instructions

  1. Identify the WeGive integration user's Salesforce username. This is the username of the connected Salesforce user that WeGive uses for the integration (e.g., wegive-integration@yourorg.org).

  2. Navigate to NPSP Trigger Handler settings:

    • In Salesforce, go to NPSP SettingsSystem ToolsTrigger Handler.

  3. Add the WeGive username to the following trigger handlers' "Usernames to Exclude" field:

    Trigger Handler

    Object

    Action

    ALLO_Allocations_TDTM

    Opportunity

    Add WeGive username

    ALLO_Allocations_TDTM

    Allocation__c

    Add WeGive username

    ALLO_PaymentSync_TDTM

    Allocation__c

    Add WeGive username

    To edit each handler:

    • Find the handler in the list.

    • Click into the record.

    • In the Usernames to Exclude field, enter the WeGive integration user's full Salesforce username.

    • Save the record.

    • Repeat for all three handlers listed above.

  4. Test the fix by syncing a donation from WeGive that is designated to the Default GAU. Confirm:

    • The Opportunity is created in Salesforce.

    • The GAU Allocation is created and persists (is not deleted).

    • A subsequent update to the allocation does not produce an ENTITY_IS_DELETED error.


What This Fix Does (and Doesn't Do)

Does:

  • Prevents NPSP's allocation auto-creation and deduplication logic from firing when the WeGive integration user creates or modifies Opportunities and Allocations.

  • Eliminates ENTITY_IS_DELETED errors on GAU Allocations synced by WeGive.

Does not:

  • Affect NPSP behavior for any other Salesforce user. Staff members who manually create Opportunities will still get automatic Default GAU Allocations as expected.

  • Disable any other NPSP functionality. Only the three specified trigger handlers are modified, and only for the WeGive user.


Verification Checklist

After applying the fix, verify the following scenarios:

  • Single designation to Default GAU — Allocation syncs and persists. No ENTITY_IS_DELETED error on updates.

  • Single designation to a non-default GAU — Allocation syncs and persists (was already working; confirm no regression).

  • Multi-designation split — All allocations sync and persist.

  • Manual Opportunity by staff user — NPSP still auto-creates a Default GAU Allocation (confirms the exclusion is scoped to WeGive only).


Technical Details

Relevant NPSP Trigger Handlers:

  • ALLO_Allocations_TDTM on Opportunity (AfterInsert, AfterUpdate) — Creates the default allocation when a new Opportunity is inserted.

  • ALLO_Allocations_TDTM on Allocation__c — Manages deduplication and reconciliation of allocations.

  • ALLO_PaymentSync_TDTM on Allocation__c — Syncs allocation amounts with Payment records.

Trigger Load Order: ALLO_Allocations_TDTM (load order 1) fires before ALLO_PaymentSync_TDTM (load order 4).

NPSP Default GAU Setting: Found at NPSP Settings → Donations → GAU Allocations. The Default GAU is the single org-wide GAU that NPSP assigns to auto-created allocations.


Applies To

  • WeGive organizations using Salesforce with NPSP (Nonprofit Success Pack) installed.

  • Organizations with NPSP's Default Allocations feature enabled (a Default GAU is configured).

  • Integration errors showing ENTITY_IS_DELETED on npsp__Allocation__c records.