Data Mapping Overview
This page describes how the WeGive Bloomerang integration synchronizes donors, transactions, and funds — the three object types this integration supports.Object Mapping Summary
Detailed field-level mappings live on the per-object pages:
Campaigns are not currently synced — that code path exists but is fully commented out. There’s no separate Address/Phone/Email object; those are fields embedded in the Constituent payload.
Correlation Fields
WeGive tracks the corresponding Bloomerang record using a single column per object:Matching Logic
All matching is bybloomerang_id — there’s no email, organization-name, or address-based matching anywhere in this integration.
Transactions have one additional path: if a pulled transaction doesn’t match an existing bloomerang_id, the integration checks the transaction’s Note field for a round-trip marker WeGive itself wrote on push ([wg-rt:<id>], or the legacy WeGive ID: <id> format) — this links a transaction Bloomerang has already stored back to the original WeGive record instead of creating a duplicate. See Integration Nuances for details.
API Endpoints Used
All requests use base URLhttps://api.bloomerang.co/v2 with an X-API-KEY header. Every write is a single-record call — there’s no batch/bulk endpoint usage in this integration.
Pull (query) endpoints
Pulls page through Bloomerang’s list endpoints (50 records per page), filtered bylastModified:
GET constituentsGET fundsGET transactions(queried once per type:Donation,PledgePayment,RecurringDonationPayment)
Push endpoints
POST constituent,PUT constituent/{id}POST fund,PUT fund/{id}POST transaction,PUT transaction/{id}
Reliability
- Retries: Automatic retry with exponential backoff on failure (shared
HttpClientWithRetrymechanism), including 429 rate-limit responses. - Timeout: 120 seconds per request.
Amount Handling
WeGive stores monetary amounts in cents; Bloomerang uses dollars. Amounts are divided by 100 on push and multiplied by 100 on pull.Data Precedence
- Push: WeGive data wins — an update overwrites the Bloomerang record with current WeGive values.
- Pull: A transaction WeGive itself originated (has a
correlation_id) is never overwritten by a pull — amount, date, and description stay whatever WeGive set. Other records fill in from Bloomerang’s data.
Getting Help
- WeGive Support: [email protected]
- Bloomerang API Documentation: bloomerang.co/features/api