Skip to main content
The relationship between a supporter and a campaign syncs to Salesforce CampaignMember.

Linkage (create-only)

CampaignId and ContactId are read-only after creation in Salesforce, so updates to an existing member do not change them.

Pull behavior

On pull, WeGive reads ContactId, resolves it back to the parent Account ID, and matches the supporter by npc_id. If your org has Accounts as Campaign Members enabled, members with only an AccountId are matched to companies. A member whose campaign or supporter has not yet synced is skipped and retried on a later pull.

Status

CampaignMember.Status is read on pull but WeGive does not currently write a status on push — confirmed against compileCampaignDonorPayload(), whose push payload carries only CampaignId and ContactId/AccountId, nothing else. There’s no first_responded_at field or equivalent pushed either.