Configuration Options
Integration Settings
Authentication Settings
- Neon Organization ID and Neon API Key — both required; WeGive uses HTTP Basic auth with
organization_id:api_key - Environment: selected automatically from WeGive’s own deployment environment (
api.neoncrm.comproduction,trial.neoncrm.comstaging) — not a setting you choose per organization
Integration Status
Entity Tracking Options
Sync Direction
Webhook Configuration
Whenenabled and two_way_sync are both true, WeGive automatically registers 4 webhooks with Neon:
CREATE_ACCOUNT→neon-integrations/create-donorUPDATE_ACCOUNT→neon-integrations/update-donorCREATE_DONATION→neon-integrations/create-donationUPDATE_DONATION→neon-integrations/update-donation
enabled off (or disabling two_way_sync while re-saving) removes the webhooks via removeWebhooks().
Data Mapping Configuration
Default Field Mappings
Donor/Account Mappings (push-only, in practice)
Donation/Transaction Mappings (push-only, in practice)
Donation mappings with
level = 'import' are explicitly filtered out of the export payload (->where('level', '!=', 'import')), which correctly implies they’re meant for pull use — but since pull never consults NeonMappingRule at all, an import-level mapping currently has no consumer anywhere in the code. It’s a dead configuration option in practice, similar in spirit to (though a distinct bug from) the Finding 1 literal gap.Campaign Mappings
Custom Field Mapping
JSONPath-based mapping is real:Payment Method Configuration
Address Management
- Address sync (
syncAddress()) exists as a fully-implemented, separate push path from the donor account, but has no caller — it never runs - There’s no pull for addresses regardless
- On the donor account push (
generateAccountParams(), the only address data that actually reaches Neon today), mailing address is always included; billing address is included too, but only for individual donors — there’s no check for whether it differs from the mailing address, both are sent whenever both exist. This inline copy has no phone/fax fields.
Error Handling and Logging
Compliance
Configuration API
Real routes (all under the authenticated dashboard API,integration-permission middleware):
GET /neon-integration— retrieve the organization’s Neon integration settingsPUT /neon-integration— update settingsPOST /neon-integration/sync— trigger a manual syncPOST /neon-mapping-rules— create/update field mapping rules (same endpoint handles both, based on whether anidis present in the payload)DELETE /neon-mapping-rules/{neon_mapping_rule}— remove a mapping rule
There is no per-integration
DELETE route — disabling is done via PUT /neon-integration with enabled: false, not by deleting the integration record. There is also no GET /neon-mapping-rules list-only endpoint distinct from the settings response — mapping rules come back as part of the organization/integration payload.Troubleshooting Configuration
Common Issues
- Authentication errors: verify both Organization ID and API key
- Literal mapping rules not working: known gap, in review
- Webhook failures: only 4 webhook types exist (donor/donation create/update) — don’t expect one for recurring donations or campaigns
- Payment method looks wrong in Neon: expected for anything other than card/bank/donor source types — see the payment method table above
Support and Resources
- Data Mapping Overview
- Integration Nuances
- WeGive Support: [email protected]