Skip to main content

Address Object Mapping

Address sync to Neon is dead code — it has never actually run. NeonIntegration::syncAddress(Address $address) is fully implemented (push logic, field mapping, Redis lock), but it is never called anywhere in the codebase. Neon.php (the integration’s real entry point, extending CrmIntegration) has no pushAddress() method — and CrmIntegration::listPushMethods() only discovers push methods via method_exists($this, 'push' . ucfirst($model)), so without that method, syncAddress() is simply unreachable. There is no model observer or event hook calling it either. This is a known issue — low priority, since WeGive currently has no active customer on this integration, but a real gap if that ever changes.
This page describes what generateAddressParams()/syncAddress() would send, for reference, in case the integration is ever revived and this code path gets wired up — not something currently happening for any organization.

What the (currently unreachable) mapping would send

Even setting aside that this code never runs, there is no state/country mapping in generateAddressParams() at all — no stateProvince.code, no country.code. Don’t expect either field to sync via this path even if pushAddress() were added.

Contact Information (phone/fax)

No phone formatting/normalization is applied — whatever’s stored in WeGive would be sent as-is, if this code path were ever reachable.

Where phone/address data actually does sync today

Since syncAddress() never runs, the only place address/phone data reaches Neon at all is the donor account push (generateAccountParams(), a completely separate code path):
  • Mailing address (and, for individuals, billing address) is included inline in primaryContact.addresses on the account push — but that inline copy has no phone/fax fields and no country field
  • See Account Mapping for the actual, reachable address data that syncs
This means phone numbers never reach Neon via this integration at all today — not via the dead syncAddress() path, and not via the account push (which doesn’t include phone fields in its inline address copy). Fax also never reaches Neon.

No Pull

There is also no pull for addresses — SyncNeon.php has no pullAddress()/importAddresses() method. Even if syncAddress() were wired up for push, address data would remain one-way.

Integration Fields

If This Is Ever Revived

The fix is straightforward: add a pushAddress(Address $address) method to app/Integrations/Neon.php calling $this->integration->syncAddress($address), mirroring pushDonor()/pushCampaign()/pushTransaction()/pushScheduledDonation() in the same class. Until that ships, don’t rely on this page describing live behavior.