Best Of
New Blackbaud CRM APIs: Ad-hoc Query and Complete Blackbaud CRM Coverage
We are excited to announce two new sets of Blackbaud CRM APIs, now available on the SKY API developer portal. Together they let you query your data on demand and work with core Blackbaud CRM functionality programmatically, so you can build integrations, automations and reporting solutions without working around gaps in the API.
Ad-hoc Query API
Ad-hoc queries are one of the most powerful ways to find and analyze constituent data in Blackbaud CRM. The new Ad-hoc Query API brings that capability to your own applications. You can save a query, run it, and retrieve results using standard REST calls.
The API includes six operations:
- Save an ad-hoc query – create and store a query definition so it can be reused.
- Execute an ad-hoc query – run a saved query and get the results.
- List ad-hoc query entries – discover the queries available to your application.
- Get an ad-hoc query definition – inspect how a query is built.
- Get a deferred ad-hoc query execution result – collect results from longer-running queries once they finish.
- Cancel a deferred ad-hoc query execution – stop a running query you no longer need.
Support for deferred execution means large queries do not have to hold a connection open. Start the query, check back for the result, and cancel it if circumstances change.
Where it helps
- Feeding Blackbaud CRM data into dashboards, data warehouses or external reporting tools.
- Building lightweight apps that let staff run approved queries without opening Blackbaud CRM.
- Automating recurring extracts for mailings, appeals or finance processes.
Completing API coverage for Blackbaud CRM functionality
The second group of endpoints completes a series of APIs that provide full coverage of Blackbaud CRM functionality. These operations mirror how Blackbaud CRM itself works, through data forms, data lists, business processes and record operations, so whatever users can do in the application can now be done through the API.
- Get a data form record, Create a data form record and Update a data form record – read, add and change records using the same data forms that power the Blackbaud CRM interface.
- Get data form defaults – retrieve default values before creating a record, just as the form does when a user opens it.
- Load a data list and Simple list load – retrieve list data, from full data lists to simpler list loads.
- Launch a business process – start Blackbaud CRM business processes from external systems.
- Perform record operation – run record-level operations on your data.
Where it helps
- Syncing constituent, gift or event data between Blackbaud CRM and other systems.
- Triggering business processes from outside Blackbaud CRM, such as when a form is submitted on your website.
- Building custom front ends on top of the same forms and lists your team already knows.
Getting started
Visit the SKY API developer portal to explore the full reference for each operation. If you are new to SKY API, the getting started guide walks you through creating a developer account, registering an application and authorizing requests.
We would love to hear what you build. Share your experiences, questions and ideas in the comments below or in the SKY Developer community.
Re: Introducing Online Constituent Forms: Streamline Data Collection for New and Existing Constituents
I love having the option to use more forms native to NXT. Are there plans to add any more fields in the future? With our current alumni update form, we also include primary business information and spouse name.
Re: Moving to NXT. What do you wish you had done beforehand?
I'll add an important note to what @Dariel Dixon has to say about addresses. While it is very easy to add addresses in web view please note that if you use Address Accelerator, it only works in DBV. The autofill addresses in WV are not auto-filled based on deliverability of those addresses, but rather what the Bing service thinks the address is.
If Address Accelerator is important to your organization's practices, you may want to consider a policy that states address changes should only be done in DBV.
Also, I'm sure you are aware of the various opinions on Address Finder in WV vs. DBV and suspect that you will choose to continue with Address Finder in DBV. There are a few discussions in Community and the FB group about the pros/cons of each option.
Re: check printing alignment in Web View
@Glen Andrews (et al)
We have the same alignment issues, and we also already use official Blackbaud check stock. Our checks are pre-printed by Blackbaud Forms, with our logo, banking info, and check numbers. In the Database, they still print perfectly every time. In NXT, no matter what I do, I cannot align both the check info and the check stub info correctly. If I adjust the check so that the payee info, check date, and check number align corectly, then the check stub info doesn't print to the columns correctly. If I adjust alignment so that the stub is more aligned, then the check info alignment is off again.
I'm printing the NXT checks using the latest Adobe Reader in Windows 11, set to the default settings, no re-sizing etc - just as Blackbaud instructed us 2+ years ago when we started testing this. But it has never been right, and now we just make sure the check itself is aligned as well as possible, and we ignore the stub info printing over column borders, getting cut off on the left and right, etc. We don't have time to make an art project out of this, every time we pay bills.
Yesterday, near the end of the day, I needed to print 2 last minute checks, and our AP person had already left. So I went to Banks in AP in the Database, chose the 2 invoices to pay, put the stock in the printer, and hit Print. Instantly, I had 2 beautiful, perfectly aligned checks, no 3rd party software needed, and it took maybe 10 seconds. I nearly cried. Blackbaud needs to address this and figure out how to get this experience back in NXT!
Re: We Can Date Solicit Codes in Web View?
A word of caution on this, because I learned it the hard way!! While you can enter valid from and to dates for a Solicit Code, you can't Query on these fields (in Web View or DB View). This means that if you create a Constituent List, and filter using Solicit Codes, it accurately looks at the dates. However, if you create a Query, you cannot build Criteria around the Solicit Code dates and it does not accurately take into account the dates. We had entered valid to dates for a bunch of constituents, and I ended up having to run a Constituent List (which ignored since the Solicit Code, since the end date was prior to today), and run a Query (which showed they had a Solicit Code because it wasn't looking at the end date), then identify which constituents had an ended Solicit Code and use Global Delete to remove the codes. Until we have the ability to Query the dates, our internal process is to add a Solicit Code when it applies and delete it when it no longer applies.
Re: DAF Donations
Since Carlene tagged me, some notes in addition to what my bbcon presentation says:
- I don't recommend creating a constituent record for the DAF in any situation. The DAF is just an account at a Foundation. Maybe a constituent record for the Foundation, but the DAF itself does not need a constituent record IMHO.
- I actually prefer to hard credit the legal donor and soft credit others. HOWEVER, the worst feature of RE IMHO is Soft Credit output and many, many folks have had problems using RE when data entry has been done that way. Thus the ideas in the presentation that Carlene linked to to HC the "real donor." the person, and maybe soft credit the foundation. We need to use RE how we can get it work for us, not be forced into artificial guidelines that don't actually work with the software we have.
- Consistency is perhaps the most important. Don't suddenly change your procedures on this topic without thinking through long and hard how it affects the past gifts and how you're going to pull outputs (queries, reports, dashboards, etc.) with data entered both ways — and it's not easy to flip flop the hard and soft credits for previous gifts no matter which way you did it before.
This is one of the hardest topics I consult with clients on, thus my point it's the worst feature of RE today. So be patient and thoughtful, it's not an easy topic.
Re: Happy October!
Best costume I've done was a mother daughter costume for a party we were going to.
We're gonna need a bigger boat!
Liz Fay
Adding a Spouse as a Guest to Events
Adding a spouse as a guest in NXT Events is a great improvement. I really appreciate that NXT recognizes the spouse and eliminates the need to search for the correct constituent.
However, there are two workflow issues that make this feature much more time-consuming than it needs to be.
First, every time I select + NEW GUEST, the pop-up covers the existing spouse’s name. I have to close the pop-up before I can see the spouse’s name and confirm that I am selecting the correct constituent. When working through a long guest list, those extra clicks quickly add up.
Second, after adding a guest to an existing list, NXT automatically takes me back to the bottom of the list. I then have to scroll back up to find the alphabetical position where I was working. Again, this may seem minor, but when entering a large number of guests, it becomes very frustrating and inefficient.
The spouse functionality itself is excellent—it’s the workflow around it that needs improvement.
It would be much more efficient if:
- The + NEW GUEST window did not obscure the existing guest/spouse information.
- After adding a guest, NXT kept me at the same position in the guest list rather than returning me to the bottom.
These may seem like small usability issues, but they create a significant amount of unnecessary clicking and scrolling when managing large event guest lists. It feels like a lot of wasted time for something that should be a very straightforward process.










