How to get subscription details created using Webhook Monitor
Hello,
We are trying to get Webhook working and any help would be greatly appreciated.
What we have done so far:
I am able to get Constituent and gift details using Sky API. However, some info from the constituent record, like solicit codes are available only for each constituent.
To get this info, three subscriptions were created using Webhook Monitor
com.blackbaud.constituent.solicitcode.add.v1
com.blackbaud.constituent.solicitcode.delete.v1
com.blackbaud.constituent.solicitcode.change.v1
Whenever I make a change to solicit code, I am able to see the messages.
What we are trying to do
When I try to get list of these three subscriptions, either from Postman or Sky API portal “try it”
https://api.sky.blackbaud.com/webhook/v1/subscriptions
This is the response I get.
===BEGIN MESSAGE===
HTTP/1.1 200 OK { "value": [], "count": 0 }
===END MESSAGE===
From what I understand as per documentation, I should get something akin to this. However there is no data.
{
"value": [{
"id": "eb42ba64-2712-4232-b69b-caed6b6d6fdd",
"environment_id": "p-vnVAbDtfu0GyMqSDmG-_qw",
"webhook_url": "https://example.org/skyapi/webhook/handler",
"application_id": "90caa693-b36e-4eea-942d-fb813e36ceb7",
"event_type": "com.blackbaud.constituent.email.change.v1",
"provisioning_status": "Pending"
}
Questions:
- How can I get subscription details which will be used in a third party system to pull changed info from the constituent record?
- Is this the correct way to get details of subscriptions created using Webhook Monitor OR
do I need to create a subscription using this, which results in a different set of issues.
https://api.sky.blackbaud.com/webhook/v1/subscriptions
Can someone please point in the right direction / provide some insights into how to fix this.
Thanks a lot for your help.
Birendra
Comments
-
Hi, @Birendra Mauji.
The Webhook Monitor is a tool meant to demonstrate how a SKY Application would integrate with the Webhook API to subscribe to and handle Webhooks for particular event types, as you have seen. While the application is written by Blackbaud, it uses only what is available to any SKY Application to demonstrate the aspects of Webhook subscription that any SKY Application would need to consider--authorizing with SKY API, issuing a Webhook API request to create the subscription, waiting for the subscription to be provisioned, and finally, receiving and handling the webhook event. Also, for someone starting out with their own application, the Webhook Monitor can sanity check/monitor whether events are being published in a particular Blackbaud environment--great if your application is expecting webhooks with the same event type.
That stated, as you guessed might be the case, the Webhook Monitor isn't meant as an alternative for you building your own application. With that in mind…
1. Once authorized by a user, a SKY Application can only access the Webhook Subscriptions it has created in an environment. This ensures that other applications cannot access the details of another application's subscriptions or change/delete them. When you are making requests to the Webhook API using the SKY API Console, you are accessing the subscriptions that it--the SKY API Console application--has created.
2. Yes, you'll need to provision your own SKY Application and SKY API subscription to subscribe to and handle webhooks within your Blackbaud environment. You can use our tutorial as an example of how to build an application. There are also low-code options (1, 2--unofficial integration, not an endorsement) that'll allow you to create a webhook subscription and handle the webhook event to perform some additional actions. You may want to look into this option if you want to avoiding writing your own application.
0 -
Hello @Chris Rodgers,
Thank you for the explanation. It makes sense now. I will review / follow the process in the links and will share the results.
Thanks again.
Birendra
1 -
@Birendra Mauji
I'm not really understanding what you are trying to achieve with getting subscriptions detail.What are you trying to do with the information?
0 -
Hi @Alex Wong
The aim was to extract webhook_url value
{
"value": [{
"id": "eb42ba64-2712-4232-b69b-caed6b6d6fdd",
"environment_id": "p-vnVAbDtfu0GyMqSDmG-_qw",
"webhook_url": "https://example.org/skyapi/webhook/handler",
"application_id": "90caa693-b36e-4eea-942d-fb813e36ceb7",
"event_type": "com.blackbaud.constituent.email.change.v1",
"provisioning_status": "Pending"
}
(without having to create an application) and pass it onto a third-party application. As an example, get solicit code details and update already pulled constituent data.The third-party app works as a sort of holding area wherein data from different apps is pulled for staff to use without having to generate manual lists for them.
I hope this clarifies it a bit.
Thanks.
Birendra
0 -
@Birendra Mauji
So I am still not understanding what you trying to do and how it relates to the webhook details.The webhook details provide you info on the registered webhook, for example, you registered a constituent change webhook, the webhook_url is the URL that is called whenever a constituent record is changed. This webhook_url is provided BY you when you register a webhook, you are the one that told Blackbaud webhook API that whenever X happens (constituent change), call this webhook_url and provide it the payload that contains the record that was changed. This webhook_url is a web application (power automation flow with HTTP request trigger or a PHP, ASP, JSP web application) and how this application handle the information passed to it depends on you.
See this post by @Ben Wong to hopefully clear up your mind on this and think about what you are trying to achieve. https://community.blackbaud.com/forums/viewtopic/586/55393
I think there may be a terminology differernce in the way you are saying (and I am understanding) “third party app”.
it sounds like you are referring to a data warehouse and information is kept and can be used in reporting or other forms of automation.
0 -
@Alex Wong
webhook_url is provided BY you when you register a webhook - yes, that's where I got confused about the url. However, still not sure how to “create” this URL though.We have this info below and Redirect URL: https://www.ymcagta.org
Solution type: Application
YMCA of Greater Toronto
https://www.ymcagta.orgI was able to get C# SkyWebhooksTutorial working in Visual Studio and the service is running. Now, trying to figure out how to test the end point as running into SSL / 405 errors.
this is next on the agenda once the I am able to figure out the URL issue. @Chris Rodgers did provide this and a couple of other links.
See this post by @Ben Wong to hopefully clear up your mind on this and think about what you are trying to achieve. https://community.blackbaud.com/forums/viewtopic/586/55393Yes, it is a data warehouse of sorts.
Thanks for your help
0 -
@Birendra Mauji
ok, then it's clear now.webhook_url is a web application that is able to intake the payload that Blackbaud send to it. when you have the web application created, you can use Ben Wong's post to register the web application (while the post talks about using power automate, the steps to register is the same, you will just be using the web application URL instead of the power automate flow's URL).
If you use power automate flow as the application, then you can just follow Ben Wong post to create the web application that's hosted on Microsoft Power Automate platfomr. Otherwise, creating a web application will not be an easy explanation if you never done web development before. You will need a server that host the web application, and you will need the web application that does the logic you want it to have.
Here's an exmaple of my web application on power automate for when a constituent is changed, I log into my azure sql data warehouse

HTTP POST URL is the webhool_url
1 -
@Alex Wong
Yes, that's what I will do. Really appreciate your patience in working through this issue.You guys rock.
Thank you.
0
Categories
- All Categories
- 6 Blackbaud Community Help
- 209 bbcon®
- 1.4K Blackbaud Altru®
- 395 Blackbaud Award Management™ and Blackbaud Stewardship Management™
- 1.1K Blackbaud CRM™ and Blackbaud Internet Solutions™
- 15 donorCentrics®
- 359 Blackbaud eTapestry®
- 2.5K Blackbaud Financial Edge NXT®
- 646 Blackbaud Grantmaking™
- 563 Blackbaud Education Management Solutions for Higher Education
- 3.2K Blackbaud Education Management Solutions for K-12 Schools
- 934 Blackbaud Luminate Online® and Blackbaud TeamRaiser®
- 84 JustGiving® from Blackbaud®
- 6.4K Blackbaud Raiser's Edge NXT®
- 3.7K SKY Developer
- 243 ResearchPoint™
- 118 Blackbaud Tuition Management™
- 165 Organizational Best Practices
- 238 The Tap (Just for Fun)
- 33 Blackbaud Community Challenges
- 28 PowerUp Challenges
- 3 (Open) Raiser's Edge NXT PowerUp Challenge: Product Update Briefing
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Standard Reports+
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Email Marketing
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Gift Management
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Event Management
- 3 (Closed) Raiser's Edge NXT PowerUp Challenge: Home Page
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Standard Reports
- 4 (Closed) Raiser's Edge NXT PowerUp Challenge: Query
- 779 Community News
- 2.9K Jobs Board
- 53 Blackbaud SKY® Reporting Announcements
- 47 Blackbaud CRM Higher Ed Product Advisory Group (HE PAG)
- 19 Blackbaud CRM Product Advisory Group (BBCRM PAG)

