Setting Up Salesforce for Canadian and US WeGive Dashboards
Last updated: April 27, 2026
This article is for organizations that operate two legal entities, one Canadian and one US, on a single Salesforce instance, with a separate WeGive dashboard syncing to and from each entity. It explains the recommended Salesforce field setup, the pattern WeGive uses to keep each dashboard's records isolated, and the specific Opportunity and Recurring Donation field mappings to apply.
Why a special setup is needed
WeGive's policy is one dashboard per legal entity. When two dashboards point at the same Salesforce instance, every dashboard would, by default, try to pull every Opportunity and every Recurring Donation. That causes:
Canadian transactions appearing on the US dashboard, and the reverse
Incorrect donor totals due to double-counted gifts
Tax receipt confusion, especially on the Canadian side where receipt rules are stricter
Conflicting Payment records when NPSP also tries to auto-create them alongside WeGive's payment sync
The setup below uses two purpose-built custom fields plus a sync filter on each WeGive dashboard so that records are visible only to the dashboard that owns them.
How the isolation pattern works
The pattern relies on two ideas applied to both Opportunity and Recurring Donation:
An origin marker. A custom field called
WeGive_Origin__cis populated by WeGive on create with the originating dashboard, for exampleCanadaorUSA. WeGive writes this once on create and never touches it again, so the value is permanent for the life of the record.A pair of hide checkboxes. Two custom checkbox fields,
Hidden_from_CA_WeGive__candHidden_from_US_WeGive__c, are populated by WeGive whenever thehiddenflag on a transaction is set on the opposite dashboard. They give Salesforce a record of which gifts the other dashboard wants suppressed.
Each WeGive dashboard then runs a sync filter that says, in effect, only pull records where the origin matches me and where my hide checkbox is false. The Canadian dashboard pulls records where WeGive_Origin__c is Canada and Hidden_from_CA_WeGive__c is false. The US dashboard does the mirror image.
Contacts and Accounts are intentionally not filtered. Donor records are shared across both entities, which is the correct behavior so that a person who gives to both entities still has one Salesforce Contact.
Required custom fields
Create these custom fields on both the Opportunity and the Recurring Donation (npe03__Recurring_Donation__c) objects. Add them to the page layouts for any record type your dashboards will sync.
Custom fields needed on each object:
Field API name | Type | Purpose |
| Text (length 12) or Picklist with values | Marks which dashboard the record came from. Set on create by WeGive. |
| Checkbox, default false | When true, the Canadian dashboard will skip this record. Written by the US dashboard. |
| Checkbox, default false | When true, the US dashboard will skip this record. Written by the Canadian dashboard. |
Opportunity field mapping
This is the recommended Opportunity field mapping for each dashboard. The static values change per dashboard, the column labels do not. Replace Stripe - CAD with Stripe - USD on the US side, and replace Canada with USA on the US side.
Direction key, matching the arrows shown in the WeGive sync rules UI:
Symbol | Meaning |
↔ | Bidirectional. Both systems write to this field as it changes. |
↔ (Create Only) | Bidirectional, but only on the initial record create. Edits after that are ignored. |
← | Salesforce to WeGive only. Salesforce is the source of truth. |
→ | WeGive to Salesforce only. WeGive is the source of truth. |
Recommended Opportunity mapping:
Salesforce field | Direction | WeGive field | Notes |
| ↔ (Create Only) |
| Standard Opportunity name. |
| ↔ |
| Gift amount. |
| ↔ (Create Only) |
| Links the Opportunity to the donor's Account (household or organization). |
| ↔ |
| Use the WeGive transaction date as the Opportunity close date. |
| ↔ |
| Maintains campaign attribution across both systems. |
| ↔ (Create Only) |
| Links the Opportunity to the donor's Contact. |
| ↔ (Create Only) |
| NPSP's primary contact lookup. Maps to the same WeGive owner. |
| ↔ (Create Only) |
| Ties an Opportunity back to its parent recurring schedule. |
| ← |
| Let Salesforce own stage values. WeGive reads them for reporting. |
| → (Create Only) | static | Prevents NPSP from auto-creating a Payment record that would conflict with WeGive's Payment sync. |
| ↔ (Create Only) | your designation custom field on WeGive | Use the custom field your dashboard already has configured for designation. |
| → (Create Only) | static | The origin marker. Each dashboard writes its own value. |
| → |
| The US dashboard writes this so the Canadian dashboard knows to skip the record. |
| → |
| The Canadian dashboard writes this so the US dashboard knows to skip the record. |
| → (Create Only) | static gateway label, for example | Optional, useful when finance staff want the gateway label visible in Salesforce. |
Recurring Donation (npe03__Recurring_Donation__c) field mapping
Recurring schedules need the same isolation treatment as Opportunities. Without it, both dashboards will compete to own the schedule's payment processor and next-charge date, which is exactly the situation the pattern is designed to prevent.
Recommended Recurring Donation mapping:
Salesforce field | Direction | WeGive field | Notes |
| ↔ (Create Only) |
| Schedule name. |
| ↔ |
| Recurring gift amount. |
| ↔ (Create Only) |
| Donor on the schedule. |
| ↔ (Create Only) |
| Account on the schedule. |
| ↔ (Create Only) |
| Start date of the schedule. |
| ← |
| Salesforce can read forward changes, but WeGive remains the system that actually charges. |
| ↔ (Create Only) |
| Frequency of the recurring schedule. |
| ↔ |
| Campaign attribution. |
| ↔ |
| Keep status in sync. WeGive marks Closed when the donor cancels in their portal. |
| → (Create Only) | static | Use Open recurring (no fixed end date) unless your team has a reason to use Fixed. |
| → (Create Only) | static | Origin marker. |
| → |
| Same hide pattern as Opportunity. |
| → |
| Same hide pattern as Opportunity. |
Important behavioral notes for recurring schedules:
WeGive owns the payment side. WeGive owns the next-charge date, the payment method, and the gateway. Salesforce should not attempt to charge or auto-generate Payments through NPSP for any recurring schedule that originated in WeGive.
Salesforce owns the rollups. Each successful charge from WeGive lands as a child Opportunity on the Recurring Donation, and NPSP rollups continue to work normally.
Either side can close a schedule. If a donor cancels via the WeGive portal, WeGive sets status to Closed and pushes that to Salesforce. If a finance staff member closes one in Salesforce, that change pulls back into WeGive on the next sync.
Sync filter setup
Once the fields exist and are populated, configure the sync filters in each WeGive dashboard's integration settings.
Filters to apply on the Canadian dashboard:
Object | Pull rule |
Opportunity |
|
Recurring Donation |
|
Filters to apply on the US dashboard:
Object | Pull rule |
Opportunity |
|
Recurring Donation |
|
Setup checklist
Use this as a step-by-step checklist when applying the setup to a new environment.
Step | Action |
1 | Create |
2 | Create the same three fields on the |
3 | Add all three fields to the page layouts for every record type your WeGive dashboards will sync. |
4 | Confirm the gateway labels you want stored on Salesforce, for example |
5 | Decide on your designation field. A single picklist field on Opportunity is the simplest option. NPSP GAU Allocations are also supported and configured separately. |
6 | Send WeGive support the field API names so the WeGive sync rules can be wired up on each dashboard. |
7 | Apply the sync filters above on each dashboard. |
8 | Run a small set of test gifts through both dashboards and confirm each transaction appears only on its origin dashboard in WeGive. |
Common questions
What happens to records that have no origin value?
Records without a WeGive_Origin__c value are pulled by every dashboard by default. Backfill the field on historical Opportunities and Recurring Donations before turning sync on, otherwise pre-existing records will appear in both dashboards.
What about more than two entities?
The same pattern can be extended to additional entities by adding a hide checkbox per dashboard, but it gets unwieldy beyond three. WeGive is actively building a generalized entity-lookup approach for organizations with three or more entities. Reach out to your onboarding contact if this applies to your setup so you can plan the right path forward.
Are Contacts and Accounts also filtered?
No. Donor records are shared across both entities so that a single donor giving to both entities has one Contact in Salesforce. This is intentional. The isolation only applies to gift records (Opportunities and Recurring Donations).
Can I disable receipts on one side and let Salesforce handle them?
Yes. WeGive receipts can be disabled per dashboard, which is a common choice on the Canadian side when an organization wants to issue Canadian tax receipts through a third party. If you do this, ask WeGive support about adding a receipt_paid style custom field so Salesforce can write back when a receipt has been issued externally.