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:

  1. How can I get subscription details which will be used in a third party system to pull changed info from the constituent record?
  2. 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

  • Chris Rodgers
    Chris Rodgers Blackbaud Employee
    Ninth Anniversary Kudos 2 Name Dropper Participant

    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.

  • 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

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 bbcon 2025 Attendee Badge

    @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?

  • 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

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 bbcon 2025 Attendee Badge

    @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.

  • @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.org

    I 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/55393

    Yes, it is a data warehouse of sorts.

    Thanks for your help

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 bbcon 2025 Attendee Badge

    @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

    1468dbcaa4751f5020ac8d99f2da70e6-huge-im
    HTTP POST URL is the webhool_url
    4bf848bb03db2a672daf1dd75ee5fa37-huge-im
  • @Alex Wong
    Yes, that's what I will do. Really appreciate your patience in working through this issue.

    You guys rock.

    Thank you.