Skip to main content

Raiser's Edge NXT to iPaaS.com Constituent Mapping Documentation

Raiser's Edge NXT to iPaaS.com Constituent Mapping Documentation

Blackbaud Raiser's Edge NXT Constituent records can be transferred to iPaaS.com as Customer records (Add, Update, or Delete) through webhook events or manual sync. Each transfer dispatches the parent Constituent record plus all of its addresses through the associated Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com child collection. The integration also supports transferring Raiser's Edge NXT custom fields as iPaaS.com custom fields on the Customer record.

ID Format

Manual Sync ID Format

Enter the Raiser's Edge NXT Constituent ID — the system record ID for the constituent (example: 280). The integration retrieves the full Constituent record (with all child addresses) from the SKY API and dispatches it to iPaaS.com.

External ID Format (saved after sync)

After a successful transfer, iPaaS.com records the Raiser's Edge NXT Constituent ID as the external-id link on the iPaaS.com Customer record. This is the link used to match subsequent inbound updates to the same iPaaS.com Customer instead of creating duplicates. Each child address is saved with the Raiser's Edge NXT Address ID alone (example: 67890) as the external-id link on the iPaaS.com Address record. This is the same value that appears in Blackbaud's address.add.v1, address.change.v1, and address.delete.v1 webhook payloads, so subsequent address-only events route to the correct iPaaS.com Address record without any custom reconstruction.

Note for legacy records: Address records created before the May 2026 refactor were stored with the legacy composite external ID ConstituentId|AddressId (e.g., 12345|67890). The integration accepts both the new format (Address ID alone) and the legacy composite format when reading external IDs, so existing legacy records continue to resolve correctly. New transfers always record the Address ID alone.

Deleted Record Support

Inbound Delete is supported for Constituents. When a constituent.delete.v1 webhook event is received from Raiser's Edge NXT, the integration dispatches a Delete transfer to iPaaS.com. Delete is also supported for Constituent Addresses via the standalone collection (handled by Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com (Standalone)).

Custom Field Support

This mapping collection supports reading Raiser's Edge NXT constituent custom field values for use in the iPaaS.com Customer transfer. Several Raiser's Edge NXT-specific fields are mapped to iPaaS.com custom fields by default: Constituent Type, Fundraiser Status, Is Solicitor, Is Memorial, and Deceased.

Subscribers can extend the default mappings with additional Raiser's Edge NXT custom fields using one of two patterns. The direct 1:1 pattern is typically the simpler and faster mapping to set up when it fits the use case; the dynamic-formula pattern is typically the more flexible choice and works for everything the direct pattern cannot.

Pattern 1: Direct 1:1 Mapping (Field Type)

Typically the simpler and faster choice when the iPaaS.com destination is a Customer custom field that can share the same name as the Raiser's Edge NXT category. Steps:

  1. In iPaaS.com, create a subscription custom field on the Customer collection with the same name as the Raiser's Edge NXT custom field category (e.g., # of Family Members).

  2. In this mapping collection, add a mapping of type Field.

  3. Set the source and destination to the matching custom field name on each side.

At transfer time, the integration locates the matching category in the constituent's custom fields and transfers the value. The destination must be a 1:1 iPaaS.com subscription custom field with the same name as the RENXT category — this pattern does not support different names, transformations, or non-custom-field destinations. Example in this collection: the # of Family Members mapping (destination Custom Field ID 434622) is configured this way against the Raiser's Edge NXT # of Family Members category.

Pattern 2: Dynamic Formula Mapping

Typically the more flexible choice — use it whenever the direct 1:1 pattern does not fit your needs. The GetValueFromCustomField conversion function simply returns the value of the named Raiser's Edge NXT custom field; what happens with that value is determined by the surrounding formula. Common reasons to choose this pattern over the direct 1:1:

  • The iPaaS.com destination field name should differ from the Raiser's Edge NXT category name.

  • The value needs to be transformed, parsed, or normalized before transfer.

  • The value should be combined with one or more other source fields in a larger formula.

  • The value should drive business logic in a formula whose output is something other than the raw custom field value.

  • The destination is not a 1:1 iPaaS.com Customer custom field — it could be a regular iPaaS.com field or the value could feed into a downstream formula on a different mapping.

  • The Raiser's Edge NXT custom field is newly added and there is no matching iPaaS.com subscription custom field configured for it yet (and creating one is not desired).

Steps:

  1. In this mapping collection, add a mapping of type Dynamic Formula.

  2. Set the destination to whichever iPaaS.com field the formula's output should land on.

  3. Set the source formula to one that calls GetValueFromCustomField(AdditionalProperties, "<RENXT category name>") — substituting the actual Raiser's Edge NXT category name in the second argument. The simplest case returns the value directly; more flexible cases embed the call in a larger formula.

The GetValueFromCustomField conversion function inspects the constituent's custom fields collection (exposed to formulas as the AdditionalProperties collection) and returns the value of the first entry whose key matches the supplied category name; if no entry matches, the function returns null. Example in this collection: the Business Hours mapping (destination Custom Field ID 434623) uses the simplest case: return GetValueFromCustomField(AdditionalProperties, "Business Hours");.

Shared Behavior and Limitations

Both patterns use the same underlying lookup against the constituent's custom fields collection and both return the first matching entry only:

  • Multiple entries for the same category on a single constituent are not supported. When a constituent has more than one entry for the same Raiser's Edge NXT custom field category, only the first entry's value is transferred to iPaaS.com — the others are not transferred. The integration does not currently support transferring all of them as a list or as separate iPaaS.com records.

  • When the constituent has no entry matching the category, no value is written to iPaaS.com for that custom field.

The screenshot below illustrates the limitation: a Raiser's Edge NXT constituent with two Committees custom field entries (one with value Alumni and one with value Development). Regardless of which mapping pattern is configured for the Committees category, only the first entry (Alumni) will be transferred to iPaaS.com; the second entry (Development) will not be transferred.

Raiser's Edge NXT Custom fields panel on a constituent, showing two Committees entries — one with value Alumni and one with value Development — illustrating the duplicate-category-entry scenario where both mapping patterns would transfer only the first entry's value.

Mapping Collection Status

  • Status: Enabled

  • Trigger Events: Constituent Add, Constituent Change, Constituent Delete (subscribed in the iPaaS.com subscription configuration's Inbound Data Flows section as Blackbaud SKY API webhook subscriptions). Webhooks do not activate automatically — the subscriber must register the relevant webhook subscriptions. Manual Sync is also available.

The following SKY API webhook events trigger transfers through this collection once subscribed:

Webhook Event

Action

constituent.add.v1

Triggers an Add transfer to iPaaS.com

constituent.change.v1

Triggers an Update transfer to iPaaS.com (includes refreshed child addresses)

constituent.delete.v1

Triggers a Delete transfer to iPaaS.com

The address.change.v1 and address.delete.v1 events are also configured for standalone address updates and deletions, but those operate through the separate Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com (Standalone) collection — not through this parent collection.

Duplicate or Conflicting Mappings

This mapping transfers Constituents from Raiser's Edge NXT to iPaaS.com. The following mapping collections operate on Constituent records in the opposite direction:

  • Add/Update Raiser's Edge NXT Constituent FROM iPaaS.com: Creates or updates Constituents in Raiser's Edge NXT from iPaaS.com data (with collision handling configured as Update and Link).

  • Add/Update Raiser's Edge NXT Constituent Address FROM iPaaS.com: Creates or updates Constituent Addresses in Raiser's Edge NXT from iPaaS.com data.

Before enabling this workflow alongside the outbound "From iPaaS.com" collections, review and customize your mapping collection filters to prevent circular updates. Define which system is the source of truth for Constituent data — if both directions are active with default mappings, changes may propagate back and forth between systems.

Warning — Unmapped Field Overwrite Risk: The iPaaS.com API uses PUT (full record replace) when updating Customer records. The following Customer and Address fields are not mapped in the default template mappings for Add/Update Raiser's Edge NXT Constituent TO iPaaS.com, Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com, and Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com (Standalone). Any existing values in these fields on the iPaaS.com Customer or Address record will be overwritten with empty/null values each time an inbound transfer runs unless additional mappings are added to preserve them:

  • customer_number

  • company

  • addresses.first_name

  • addresses.last_name

  • addresses.company

  • addresses.phone_number

  • addresses.is_primary_billing

  • addresses.is_primary_shipping

If your integration uses any of these fields on the iPaaS.com side, you must take action to preserve their values during inbound updates. The recommended approach is to split this mapping collection into separate Add and Update collections, then use the DestinationValue function in the Update collection's mapping formulas to carry forward the existing iPaaS.com value for each unmapped field. For example, to preserve the existing Customer Number during an update, add a Dynamic Formula mapping with the source formula DestinationValue.CustomerNumber mapped to the iPaaS.com CustomerNumber field. This retrieves the current value from the iPaaS.com record and writes it back, preventing the PUT from overwriting it with null. Repeat for each field that needs to be preserved. Alternatively, you can add source-side mappings that pull the values from Raiser's Edge NXT, but the DestinationValue approach is simpler when the field values originate from iPaaS.com and do not exist in Raiser's Edge NXT.

Supported Child Collections

  • Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com: Transfers all addresses associated with the parent Constituent. Each address is saved to iPaaS.com with the Raiser's Edge NXT Address ID as the external-id link. Address transfers via this child collection always accompany a parent Constituent transfer — they are not invoked independently.

System Caveats

Raiser's Edge NXT Caveats

  • Webhook Provisioning Delay: After registering webhook subscriptions, allow 1–2 minutes for them to be provisioned before they take effect in the Raiser's Edge NXT platform.

  • Address Type Configuration: Address type values in Raiser's Edge NXT are configurable per environment. The Address Type - To iPaaS lookup translation must be updated to match the address types defined in your Raiser's Edge NXT instance.

  • Multi-Line Address Limit: Raiser's Edge NXT stores address lines as a single multi-line address_lines field. If an address contains more than three lines, only the first three lines will be transferred to iPaaS.com (Address1, Address2, Address3).

  • Rate Limiting: Blackbaud enforces a per-second rate limit on the SKY API. When the limit is reached while the integration retrieves the full Constituent record after a webhook fires, the transfer is automatically rescheduled and resumes after the limit window resets — no subscriber action is required.

  • Daily Quota Exhaustion: Each Blackbaud Private Application has a daily call quota. When the quota is reached, the transfer is automatically rescheduled to run after the daily quota resets — no subscriber action is required. Permission errors from Raiser's Edge NXT are treated as permanent failures and appear in Dashboard / Integration Monitoring / Error Logs without being rescheduled.

iPaaS.com Caveats

  • Required API Fields: The iPaaS.com API requires customer_number and email_address on every Customer record. Constituents without an email address in Raiser's Edge NXT may fail to transfer. The CustomerNumber mapping is populated from the Raiser's Edge NXT system record ID, which is always present, but the EmailAddress mapping depends on the constituent having an email configured in the source system.

  • Custom Field Prerequisites: Custom fields mapped in this collection (Constituent Type, Fundraiser Status, Is Solicitor, Is Memorial, Deceased, and any subscriber-added custom fields) require the corresponding subscription custom fields to be created on the Customer collection in iPaaS.com before the mapped values will be stored. If a subscription custom field does not exist for a mapped category, the value is not written to iPaaS.com.

  • Child Address Dependency: Addresses transferred through the child collection are linked to the parent Customer in iPaaS.com and recorded with the Raiser's Edge NXT Address ID as their external-id link. The parent Customer record must be successfully created before child addresses can be linked — in practice this happens within the same transfer, but if the parent Customer creation fails (e.g., due to a missing required field), the child addresses will also fail.

Setup Requirements

For full setup steps see the Installation Instructions and Connections and Settings articles. The integration-wide setup (Blackbaud Private Application registration, OAuth scope, subscription settings) is documented there and not repeated here.

Integration Flow

When a webhook event is received from Raiser's Edge NXT, or a Manual Sync is initiated, the integration processes the transfer in the following order:

  1. Webhook receipt and record retrieval. For webhook-driven transfers, the integration acknowledges the webhook event and retrieves the full Constituent record from the SKY API. For Manual Sync, the integration retrieves the full Constituent record directly using the supplied Constituent ID.

  2. Determine action type. Based on the webhook event (or Manual Sync request), classify the transfer as Add, Update, or Delete.

  3. Map Constituent fields. Apply each mapping in this parent collection to translate the Constituent record into the iPaaS.com Customer shape, including the Organization/Individual Company formula and the Raiser's Edge NXT custom-field-mapped Customer custom fields.

  4. Process child addresses. All addresses on the Constituent record are processed through the Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com child collection. Each address is saved to iPaaS.com with the Raiser's Edge NXT Address ID as the external-id link on the iPaaS.com Address record.

  5. Dispatch to iPaaS.com. The translated Customer record (with addresses) is dispatched to iPaaS.com with the appropriate action type (Add, Update, or Delete).

When a new address is created in Raiser's Edge NXT, it does not trigger an immediate address transfer through this parent collection — the new address is captured the next time a constituent.change.v1 event fires for the parent constituent. Standalone address changes and deletions outside of a parent Constituent change are handled by the separate Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com (Standalone) collection.

Mappings

Add/Update Raiser's Edge NXT Constituent TO iPaaS.com

Description: Transfers Constituent records from Raiser's Edge NXT to iPaaS.com via webhook events or Manual Sync. Maps core identity fields (name, email, customer number) and several Raiser's Edge NXT-specific fields as iPaaS.com custom fields.

Mapping Filter: None — all Constituent records received through webhook events or manual sync are processed without additional filtering conditions.

Field Mapping Table

Mapping Type

Source Field (Raiser's Edge NXT)

Destination Field (iPaaS.com)

Description

Field

Id

CustomerNumber

Required. Maps the Raiser's Edge NXT immutable system record ID to the iPaaS.com Customer customer_number. The iPaaS.com API requires customer_number on every Customer record. This is the constituent's system record ID in the Blackbaud SKY API (not the user-defined lookup_id). This value uniquely identifies the constituent across transfers.

Field

Email_Address

EmailAddress

Required. Maps the constituent's primary email address to iPaaS.com Customer email_address. The iPaaS.com API requires email_address on every Customer record. Ensure the constituent has an email address configured before transfer; if the source email is blank the transfer may fail.

Field

First

FirstName

Recommended. Maps the constituent's first name. Populated for Individual constituents only — Organization constituents do not have a first name in Raiser's Edge NXT.

Field

Last

LastName

Recommended. Maps the constituent's last name. Populated for Individual constituents only.

Dynamic Formula

return Type == "Organization" ? Name : null;

Company

Recommended. Sets iPaaS.com Customer.Company from Raiser's Edge NXT Constituent.Name when Type=Organization. For Individuals, returns null so the field stays empty. The Raiser's Edge NXT name field is computed: for Individuals it returns the display name based on the organization's name settings; for Organizations it returns the organization's name.

Field

Type

Constituent Type (Custom Field)

Recommended. Maps the Raiser's Edge NXT constituent type to an iPaaS.com custom field. Allowed values: Individual, Organization. Enables downstream processes in iPaaS.com to distinguish between individual and organization records.

Field

FundraiserStatus

Fundraiser Status (Custom Field)

Optional. Indicates whether the constituent is a fundraiser. Available for Individual constituents only. Provides additional context for reporting and segmentation within iPaaS.com.

Field

IsSolicitor

Is Solicitor (Custom Field)

Optional. Whether the constituent is a solicitor (boolean). Provides additional context for reporting within iPaaS.com.

Field

IsMemorial

Is Memorial (Custom Field)

Optional. Whether the constituent is an honor/memorial record (boolean). Memorial constituents may require special handling in downstream processes.

Field

Deceased

Deceased (Custom Field)

Optional. Deceased status (boolean). Available for Individual constituents only. Can be used to flag inactive or deceased constituents in iPaaS.com for communication suppression.

Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com (Child)

Description: Transfers Constituent Address records from Raiser's Edge NXT to iPaaS.com as children of the parent Constituent transfer. Addresses are not transferred independently through this collection — they always accompany the parent. Each address is saved to iPaaS.com with the Raiser's Edge NXT Address ID as the external-id link.

Mapping Filter: None — all addresses associated with the parent Constituent are processed without additional filtering conditions.

Field Mapping Table

Mapping Type

Source Field (Raiser's Edge NXT)

Destination Field (iPaaS.com)

Description

Dynamic Formula

(Splits AddressLines on \n and returns line 1 — see Dynamic Formula Documentation below.)

Address1

Recommended. First line of the address, extracted from the multi-line address_lines field. At least Address1 should be populated for a meaningful address record. Returns null if the address has no lines.

Dynamic Formula

(Splits AddressLines on \n and returns line 2 — see Dynamic Formula Documentation below.)

Address2

Optional. Second line of the address. Null if the source address has fewer than two lines.

Dynamic Formula

(Splits AddressLines on \n and returns line 3 — see Dynamic Formula Documentation below.)

Address3

Optional. Third line of the address. Null if fewer than three lines; lines beyond three are not transferred.

Field

City

City

Recommended. Maps the address city. Important for address validation and completeness.

Field

State

Region

Recommended. Maps the Raiser's Edge NXT address state to iPaaS.com address region. The SKY API field is named state but it maps to the iPaaS.com region field — both represent the state, province, or region.

Field

Country

Country

Recommended. Maps the address country. Important for proper address formatting and validation.

Field

PostalCode

PostalCode

Recommended. Maps the address postal code. Important for address validation and completeness.

Field

Preferred

IsPrimaryBilling

Recommended. Maps the Raiser's Edge NXT preferred address flag to iPaaS.com is_primary_billing. When true, this is the constituent's preferred/primary address. Raiser's Edge NXT uses a single "preferred" flag rather than separate billing/shipping designations.

Static

"false"

IsPrimaryShipping

Optional. Defaults shipping to false. Subscribers can override to map Raiser's Edge NXT Preferred to IsPrimaryShipping per their preference (e.g., if the subscriber treats Preferred as both billing and shipping).

Lookup Translation

Lookup Translation: Address Type - To iPaaS

Type

Recommended. Translates Raiser's Edge NXT address type to iPaaS.com Customer Address Type (Billing / Shipping / Other). Configuration required: Update the translation values to match the address types defined in your Raiser's Edge NXT environment — types are configurable per environment and may differ between subscribers.

Dynamic Formula Documentation — Address1 / Address2 / Address3

Each Address line mapping uses the same pattern, varying only by the line index:

// Address1
var lines = AddressLines?.Split('\n');
return (lines?.Length ?? 0) > 0 ? lines[0]?.TrimEnd('\r') : null;
// Address2
var lines = AddressLines?.Split('\n');
return (lines?.Length ?? 0) > 1 ? lines[1]?.TrimEnd('\r') : null;
// Address3
var lines = AddressLines?.Split('\n');
return (lines?.Length ?? 0) > 2 ? lines[2]?.TrimEnd('\r') : null;

Raiser's Edge NXT stores all address lines as a single newline-separated string in the SKY API address_lines field. The formulas split on \n and trim any trailing \r to handle CRLF line endings. Lines beyond the third are not transferred.

Lookup Translation Tables

Address Type - To iPaaS — Subscribers must populate this translation collection with mappings from their Raiser's Edge NXT Address Types code table entries to iPaaS.com Customer Address Type values.

Source Value (Raiser's Edge NXT)

Destination Value (iPaaS.com)

Notes

Home

Billing

Primary home address — commonly used as the billing address.

Business

Billing

Business address.

Work

Other

Work address.

Shipping

Shipping

Shipping-specific address.

Vacation

Other

Seasonal or vacation address.

Former Address

Other

Previous address no longer in use.

The table above shows example mappings based on common Raiser's Edge NXT default address types. Your Raiser's Edge NXT environment may have different address types — the Address Types code table is configurable per environment and subscribers may add, rename, or remove entries. Review the active entries in your Address Types code table and update this translation collection in iPaaS.com to match. Any Raiser's Edge NXT address type not listed in the translation collection will not resolve to an iPaaS.com type during transfer.

Error Handling

Errors from this mapping collection appear in iPaaS.com Dashboard / Integration Monitoring / Error Logs. For the full catalog of error messages, descriptions, and resolution steps see the Error Messages article.

Testing & Validation

Test Scenarios

  1. Create a new Constituent in Raiser's Edge NXT (Individual) with an email address and verify that the constituent.add.v1 webhook fires, the integration retrieves the record, and an iPaaS.com Customer is created with the correct CustomerNumber, FirstName, LastName, EmailAddress, and Constituent Type custom field.

  2. Create a new Constituent in Raiser's Edge NXT (Organization) and verify the Company field is populated from the constituent's name and the Constituent Type custom field is set to Organization.

  3. Update a field on an existing Constituent (e.g., last name) in Raiser's Edge NXT and verify the constituent.change.v1 webhook fires and the iPaaS.com Customer is updated without creating a duplicate.

  4. Add a new address to an existing Constituent in Raiser's Edge NXT and verify that the new address is included the next time a constituent.change.v1 event fires for that constituent.

  5. Delete a Constituent in Raiser's Edge NXT and verify the constituent.delete.v1 webhook fires and the corresponding iPaaS.com Customer is marked deleted.

  6. Manually sync a Constituent using the Constituent ID via the iPaaS.com Manual Sync page and verify the transfer succeeds end-to-end (including child addresses).

  7. Verify that an unrecognized Raiser's Edge NXT address type surfaces a helpful error message rather than silently failing — confirm the Address Type - To iPaaS lookup translation correctly maps every active address type from your Raiser's Edge NXT environment.

Validation Checklist

  • Webhook subscriptions for constituent.add.v1, constituent.change.v1, and constituent.delete.v1 are enabled in the iPaaS.com subscription configuration's Inbound Data Flows section.

  • The Address Type - To iPaaS lookup translation includes every active address type in the subscriber's Raiser's Edge NXT environment.

  • Mapping filters on this collection and on the outbound FROM iPaaS.com collections are configured to prevent circular updates between systems.

  • The Blackbaud Private Application's OAuth scope grants access to the Constituent and Address SKY API endpoints.

Additional Notes

Operational Notes

  • New addresses delayed: When a new address is created in Raiser's Edge NXT, it is not transferred immediately. The new address will be included the next time a constituent.change.v1 event fires for the parent constituent. Standalone address changes (not new addresses) are picked up immediately via the Add/Update Raiser's Edge NXT Constituent Address TO iPaaS.com (Standalone) collection.

  • API unavailability: If the Blackbaud SKY API is temporarily unavailable when a transfer is triggered, the transfer will fail. An error will appear in Dashboard / Integration Monitoring / Error Logs. The record can be retried by triggering a new webhook event or via Manual Sync.

Related Documents

Did this answer your question?