Overview
The Blackbaud Raiser's Edge NXT integration provides a set of ready-made functions you can call when building mappings. They handle common conversions and lookups against your Raiser's Edge NXT tenant and your iPaaS.com data, such as building a typed custom field, reading a value from an iPaaS.com custom field object, or resolving a Raiser's Edge NXT fund by its lookup ID, so you don't have to write that logic yourself.
Where you can use these functions
These functions are available anywhere you write a formula for the Blackbaud Raiser's Edge NXT integration:
Dynamic Formula mappings: where a destination field's value is produced by a formula rather than mapped directly from a source field.
Mapping collection filters: where a formula decides whether a record should be processed.
Error filters: a mapping collection's error filter, which sits alongside its collection filter. When the error filter's formula resolves to true, the transfer raises an error that is held in the Error Logs for review and is not retried automatically.
Translation collections: where a translation entry uses a formula as its source value.
How to use them
Call a function by name and pass the values it needs in parentheses, for example:
BlackbaudCustomFieldAsText(category, value).Each function's signature shows its name, the parameters it accepts (with their types), and the type of value it returns. Use it as the reference for exactly how to call the function.
Function names and formula syntax are case-sensitive, so type each name exactly as shown. Whether the values a function matches are treated as case-sensitive varies by function, and is called out in the relevant parameter's description.
These functions are synchronous, so you call them directly (no
awaitis required).Each function runs at sync time, against the data in your connected Raiser's Edge NXT tenant and your iPaaS.com subscription.
The functions are grouped below by the area of the integration they support.
Custom Fields
Use these when writing custom fields to a Raiser's Edge NXT record, or reading a custom field value from your iPaaS.com data. Each BlackbaudCustomFieldAs… function builds a typed custom field targeting a named Raiser's Edge NXT custom field category.
BlackbaudCustomFieldAsText
What it does: Builds a Raiser's Edge NXT custom field that holds a plain text value. Use it when your source is a free-form string such as a name, description, note, or label.
Signature: Field BlackbaudCustomFieldAsText(string category, string value)
How to call it: BlackbaudCustomFieldAsText(category, value)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
value |
| Yes | N/A | The text value to store in the custom field. It is written to the Raiser's Edge NXT record exactly as provided. |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and text value.
Example: BlackbaudCustomFieldAsText("Preferred Greeting", "Dear Friend") produces a custom field targeting the "Preferred Greeting" category with the text value "Dear Friend".
When to use it: When mapping a free-form string from your source into a Raiser's Edge NXT text custom field.
BlackbaudCustomFieldAsNumber
What it does: Builds a Raiser's Edge NXT custom field that holds a whole-number value. Use it when your source is a count, rank, year, or other integer measurement.
Signature: Field BlackbaudCustomFieldAsNumber(string category, int value)
How to call it: BlackbaudCustomFieldAsNumber(category, value)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
value |
| Yes | N/A | The whole-number value to store in the custom field. Decimal portions are not supported for this field type. |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and whole-number value.
Example: BlackbaudCustomFieldAsNumber("Years as Member", 12) produces a custom field targeting the "Years as Member" category with the numeric value 12.
When to use it: When mapping an integer measurement from your source into a Raiser's Edge NXT number custom field.
BlackbaudCustomFieldAsDate
What it does: Builds a Raiser's Edge NXT custom field that holds a complete calendar-date value (day, month, and year).
Signature: Field BlackbaudCustomFieldAsDate(string category, DateTime value)
How to call it: BlackbaudCustomFieldAsDate(category, value)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
value |
| Yes | N/A | The calendar date to store in the custom field. If your source may be missing the day or month, use |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and date value.
Example: BlackbaudCustomFieldAsDate("First Gift Date", new DateTime(2024, 5, 14)) produces a custom field targeting the "First Gift Date" category with the date value May 14, 2024.
When to use it: When mapping a complete date from your source into a Raiser's Edge NXT date custom field.
BlackbaudCustomFieldAsCurrency
What it does: Builds a Raiser's Edge NXT custom field that holds a monetary amount with decimal precision.
Signature: Field BlackbaudCustomFieldAsCurrency(string category, double value)
How to call it: BlackbaudCustomFieldAsCurrency(category, value)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
value |
| Yes | N/A | The monetary amount to store in the custom field. Decimal values are supported; the currency symbol and formatting are applied by Raiser's Edge NXT. |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and currency value.
Example: BlackbaudCustomFieldAsCurrency("Lifetime Giving Estimate", 12500.75) produces a custom field targeting the "Lifetime Giving Estimate" category with the currency value 12,500.75.
When to use it: When mapping a monetary amount from your source into a Raiser's Edge NXT currency custom field.
BlackbaudCustomFieldAsBoolean
What it does: Builds a Raiser's Edge NXT custom field that holds a true-or-false value. Use it when your source is a yes/no indicator.
Signature: Field BlackbaudCustomFieldAsBoolean(string category, bool value)
How to call it: BlackbaudCustomFieldAsBoolean(category, value)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
value |
| Yes | N/A | The true-or-false value to store in the custom field. Provide |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and boolean value.
Example: BlackbaudCustomFieldAsBoolean("Do Not Mail", true) produces a custom field targeting the "Do Not Mail" category with the boolean value true.
When to use it: When mapping a yes/no indicator from your source into a Raiser's Edge NXT boolean custom field.
BlackbaudCustomFieldAsCodeTableEntry
What it does: Builds a Raiser's Edge NXT custom field whose value must match one of a predefined list of allowed entries (a code table).
Signature: Field BlackbaudCustomFieldAsCodeTableEntry(string category, string value)
How to call it: BlackbaudCustomFieldAsCodeTableEntry(category, value)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
value |
| Yes | N/A | The code table entry value to store. It must exactly match an entry that already exists in the associated Raiser's Edge NXT code table. |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and code table entry value.
Example: BlackbaudCustomFieldAsCodeTableEntry("Event Interest", "Annual Gala") produces a custom field targeting the "Event Interest" category with the code table entry "Annual Gala".
When to use it: When mapping a source value that must correspond to an existing Raiser's Edge NXT code table entry.
BlackbaudCustomFieldAsConstituentId
What it does: Builds a Raiser's Edge NXT custom field that references another constituent by their Raiser's Edge NXT constituent ID.
Signature: Field BlackbaudCustomFieldAsConstituentId(string category, string value)
How to call it: BlackbaudCustomFieldAsConstituentId(category, value)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
value |
| Yes | N/A | The Raiser's Edge NXT constituent ID to reference. It must be the existing system ID of a constituent already in Raiser's Edge NXT. |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and a reference to another constituent.
Example: BlackbaudCustomFieldAsConstituentId("Primary Contact", "280") produces a custom field targeting the "Primary Contact" category with a reference to constituent ID 280.
When to use it: When mapping a relationship into a Raiser's Edge NXT custom field configured to link to another constituent.
BlackbaudCustomFieldAsFuzzyDate
What it does: Builds a Raiser's Edge NXT custom field that holds a partial or approximate date. Use it when your source date may be missing a day, month, or year.
Signature: Field BlackbaudCustomFieldAsFuzzyDate(string category, int? day, int? month, int? year)
How to call it: BlackbaudCustomFieldAsFuzzyDate(category, day, month, year)
Parameter | Type | Required | Default | Description |
category |
| Yes | N/A | The exact name of the custom field category in Raiser's Edge NXT that the value should be written to. |
day |
| Yes | N/A | The day of the month, from 1 through 31. Pass |
month |
| Yes | N/A | The month number, from 1 through 12. Pass |
year |
| Yes | N/A | The full four-digit year. Pass |
Returns: Field. A Raiser's Edge NXT custom field populated with the specified category and a partial date value.
Example: BlackbaudCustomFieldAsFuzzyDate("Approximate Joined", null, 6, 2005) produces a custom field targeting the "Approximate Joined" category representing June of 2005 with an unknown day.
When to use it: When mapping an approximate or incomplete date into a Raiser's Edge NXT date custom field.
GetValueFromCustomField
What it does: Reads the value of a named custom field from an iPaaS.com custom field object (for example a record's AdditionalProperties). Returns the value in its original type, or nothing if the field is not present.
Signature: object GetValueFromCustomField(object customFieldObj, object textFieldName)
How to call it: GetValueFromCustomField(customFieldObj, textFieldName)
Parameter | Type | Required | Default | Description |
customFieldObj |
| Yes | N/A | The iPaaS.com custom field object (typically a record's |
textFieldName |
| Yes | N/A | The name of the custom field to read from the iPaaS.com custom field object. |
Returns: object. The value of the requested custom field in its original type (text, number, and so on), or nothing if the field is not present.
Example: GetValueFromCustomField(AdditionalProperties, "# of Family Members") returns 2 when the "# of Family Members" custom field holds 2.
When to use it: When you need to read a specific custom field value out of an iPaaS.com record's custom field object during mapping.
Addresses
Use this when mapping address-derived data to a Raiser's Edge NXT constituent.
iPaaSCustomerGetPrimaryPhone
What it does: Returns the phone number from an iPaaS.com customer's primary address. It uses the primary billing address if one is marked primary, otherwise the primary shipping address, otherwise the first address in the list.
Signature: string iPaaSCustomerGetPrimaryPhone(object addresses)
How to call it: iPaaSCustomerGetPrimaryPhone(addresses)
Parameter | Type | Required | Default | Description |
addresses |
| Yes | N/A | The iPaaS.com customer's address list. Pass the iPaaS.com customer's |
Returns: string. The phone number as a text value, or nothing when no phone is available on any address.
Example: For a customer whose primary billing address has phone "(512) 867-5309", iPaaSCustomerGetPrimaryPhone(addresses) returns "(512) 867-5309".
When to use it: In a From iPaaS mapping, to set a Raiser's Edge NXT constituent's phone from the iPaaS.com customer's primary address (iPaaS.com stores the phone on each address rather than on the customer).
Gifts
Use this when mapping gift data that references a Raiser's Edge NXT fund.
BlackbaudFundGetIdByLookupId
What it does: Resolves a Raiser's Edge NXT fund's human-readable lookup ID (the identifier an operator sees in the Raiser's Edge NXT interface, for example "GARDEN") into the numeric fund ID (for example "7") that the gift API expects. Returns nothing if the input is empty or no fund matches.
Signature: string BlackbaudFundGetIdByLookupId(string lookupId)
How to call it: BlackbaudFundGetIdByLookupId(lookupId)
Parameter | Type | Required | Default | Description |
lookupId |
| Yes | N/A | The fund's lookup ID as configured in Raiser's Edge NXT (for example "GARDEN"). The match is not case-sensitive. |
Returns: string. The corresponding numeric Raiser's Edge NXT fund ID as text, or nothing if the input is empty or no fund matches.
Example: BlackbaudFundGetIdByLookupId("GARDEN") returns "7" on a tenant where the fund with lookup ID "GARDEN" has the numeric ID 7.
When to use it: When mapping a gift's fund and your source provides the Raiser's Edge NXT fund lookup ID rather than the numeric fund ID.
