Neon CRM Overview
Neon CRM is a cloud-based donor management platform for nonprofits. The WeGive integration syncs a specific, narrower set of objects than Neon CRM itself supports — this page describes what the integration actually does, not everything Neon CRM offers as a platform.What This Integration Actually Syncs
- Donor/Account Management: individual and company donor profiles, pulled and pushed
- Donations: gift records with payment method details, pulled and pushed
- Campaigns: name, dates, goal — pulled and pushed
- Recurring Donations: push-only (WeGive → Neon)
- Addresses: dead code —
syncAddress()is fully implemented but has no caller anywhere; address sync has never actually run for any organization (this is a known issue). A stripped-down copy of mailing/billing address (no phone/fax) does sync inline as part of the donor account push itself. - Webhooks: real-time notifications for donor create/update and donation create/update only — not for recurring donations or campaigns, despite occasional documentation implying broader webhook coverage
There is no event registration/ticketing sync, no email marketing or communication-tracking sync, and no implemented custom-field array support (
accountCustomFields/donationCustomFields exist as commented-out placeholders in the integration’s payload-generation code, not as working features) in this integration.Payment Method Mapping
Card brand mapping is similarly narrow: only Visa, MasterCard, Amex, and Discover have a code mapped — any other card issuer would fail to resolve a
cardTypeCode in the payload.
Integration Architecture
- Neon CRM API v2: RESTful, real
- Real-time push: donor, donation, campaign, and recurring-donation pushes are all triggered synchronously on WeGive record create/update. Address push (
syncAddress()) is implemented but dead code — this is a known issue. - Daily batch pull: donors, campaigns, and donations are pulled once daily (
command:pull-integrations neonscheduled daily) — incremental, filtered by last-modified date - Custom Field Mapping: real, via
NeonMappingRulerecords and JSONPath ($.path.to.field) resolution — but see the warning below - Redis locking: each push type uses a per-record lock to prevent duplicate creation under concurrent pushes
Custom Field Mapping Caveat
Getting Started
- Review the Setup Requirements
- Configure your Integration Settings
- Review the Data Mapping documentation
- Understand the Integration Nuances
Core Objects
Account Management
- Individual Account: personal donor records
- Company Account: organization donor records
- Primary Contact: name/email, nested under the account in Neon’s API shape
- Address: mailing (and, for individuals only, billing) address — a stripped-down copy syncs inline as part of the account push (no phone/fax); the dedicated
syncAddress()push path is dead code and never runs (this is a known issue)
Transaction Management
- Donation: gift records with payment details and campaign attribution
- Campaign: name, dates, goal, and Neon-reported statistics (pulled read-only — WeGive doesn’t compute these)
- Recurring Donation: push-only scheduled gift records
Environment Configuration
Production
- API Base:
https://api.neoncrm.com/v2/ - Webhook Base:
https://super.givelist.app/api/
Staging/Development
- API Base:
https://trial.neoncrm.com/v2/ - Webhook Base:
https://api.staging.givelist.app/api/
config('app.env') — no manual environment toggle in the dashboard.
Support and Resources
- Neon CRM API Documentation
- Neon CRM Support Center
- WeGive Support: [email protected]
Best Practices
- Data Quality: keep donor emails clean — email is the match key on pull
- Understand the payment-method limitation: don’t assume Neon-side reporting for cash/stock/in-kind gifts reflects a distinct tender type; they’ll show as Check
- Check Sentry, not a dashboard sync-status view: there’s no dedicated integration health dashboard beyond the general integration log