Power Automate actions using Blackbaud API connector

Help please! New-ish Data analyst who's very new to using Power Automate!

I work for an organisation that uses Raiser's Edge database and Raiser's Edge NXT to store data about all our individual supporters who we call constituents.
? What I’m Trying to Achieve

I want to automate a process that identifies constituents in Raiser's Edge NXT involved in our “Memory Tree” initiative and takes action based on their engagement and contact status.


? Flow Logic and Required Actions

  1. Manually trigger the flow (Instant cloud flow).
  2. Retrieve multiple constituents who either:
    • Have a constituent code = “Memory Tree”, or
    • Have a custom field with the value “Memory Tree”

❗ I need to know how to do this using the connector — there is no “List constituents” action, and “Search for a constituent” only returns one result. I need to retrieve multiple matching constituents so I can loop through them.

  1. For each matching constituent, I need to:
    • Retrieve their actions using the connector.
    • Check if any action:
      • Has type = “Mailing - FR”
      • AND the subject starts with “Memory Tree”
  2. If such an action exists, I then need to:
    • Check if the constituent has:
      • A valid email address, or
      • A consent status such as “Opted In”
  3. If either condition is true, I want to:
    • Send an email (e.g., to notify a team member, log the case, or trigger a follow-up)

What I’m Trying to Achieve I want to automate a process that identifies constituents involved in our “Memory Tree” initiative and takes action based on their engagement and contact status. ? Flow Logic and Required Actions Manually trigger the flow (Instant cloud flow). Retrieve multiple constituents who either: Have a constituent code = “Memory Tree”, or Have a custom field with the value “Memory Tree” ❗ I need to know how to do this using the connector — there is no “List constituents” action, and “Search for a constituent” only returns one result. I need to retrieve multiple matching constituents so I can loop through them. For each matching constituent, I need to: Retrieve their actions using the connector. Check if any action: Has type = “Mailing - FR” AND the subject starts with “Memory Tree” If such an action exists, I then need to: Check if the constituent has: A valid email address, or A consent status such as “Opted In” If either condition is true, I want to: Send an email (e.g., to notify a team member, log the case, or trigger a follow-up)

I can't seem to find any of the actions I need to use.

Please can you tell me the actions in Power automate - Blackbaud connector that will achieve this?

Comments

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 Raiser's Edge NXT Fall 2025 Product Update Briefing Badge

    @Robert Benjamin-Laing
    You can do this via Query API easily without this many steps, as most of your steps are just more “filtering down” of the list.

    • manual trigger flow
    • execute adhoc query or a saved constituent query using output option of JSON such that:
      • Criteria (pay attention to parathesises):
        • ( Constituent Code = “Memory Tree”
        • OR Constituent Custom Field certain specific category's value = “Memory Tree” )
        • AND Constituent Action Type = “Mailing - FR"
        • AND Constituent Action Subject begins with “Memory Tree”
        • ( Constituent has valid email address
        • OR Consent status is “Opted In”
      • Output
        • Constituent System record id
    • Do While (status not error out not completed yet)
      • wait 30 seconds
      • check executed query status with Job ID from the execute action
    • HTTP action to download the query result
    • Compose (union expression to remove duplicate constituent system record id)
    • For each unique constituent system record id
      • get constituent api (this will give you the primary email address)
      • send email

    You “CAN” technically avoid the “get constituent api” action inside the for each unique constituent system record id loop, if you know how RE Query works and how it produce duplicates (one to many relationship: constituent code, constituent custom field, action, email, consent). IF your email is not unique to each constituent, you can also avoid the use of the last For each unique cosntituent system record id, instead send ONE email that has all the constituent in it.

    NOTE:

    1. I don't use Consent, so you will have to figure out how Consent status can be queried to “Opted In”
    2. I'm not sure if your logic is correct “A valid email address or consent status such as opted in”. I imagine it should be “A valid email address AND consent status is opted in”?
    3. there are a few Query API template in the template showcase that can help you with how to use Query API (adhoc query or saved query)
  • @Alex Wong Thanks very much, have a good week!

  • @Alex Wong

    Hi Alex ,

    Thankyou very much your help!

    I'm trying to implement what you advised. I'm having some issues calling the API. According to the documentation SKY APIs requires an access token - which youll receive upon authorization of applications you make in Blackbaud. I'm having trouble accessing it specifically. I made my application have made my way through part of the authorization process - but thats where im stuck. I followed the instructions where you paste in the following code with your actual details:
    ?

    client_id=E140BF29-A528-4048-91A9-83BCB01B7FE2

    &response_type=code

    &redirect_uri=https://www.example.com/oauth2/callback

    &code_challenge=J6Wil5tjWf7vz3zdr9ZiW7t2Jk0TCEJ7v4NK_xdWA9c

    &code_challenge_method=S256

    &state=fdf80155

    Upon going to this address I authorize my access, the next step is the step where you're meant to get your access token. This is the step im not successful at. I keep on getting the error:

    "The OAuth authorization scheme is required. Please add authentication scheme and try again."

    I've also tried using postman to get the access token -that also didnt work. I got an error message regarding CORS not found or something like that.

    Tried looking up possible solutions but not found anything.

    Help would be greatly appreciated please!

    Thanks

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 Raiser's Edge NXT Fall 2025 Product Update Briefing Badge

    @Robert BenjaminLaing
    What “tool” are you planning to use to issue API calls to get data?

  • @Alex Wong

    I'm in Power automate. Im trying to call the API using HTTP action :

    1c994d1c4640212aa666690d6620079a-huge-im
  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 Raiser's Edge NXT Fall 2025 Product Update Briefing Badge

    @Robert BenjaminLaing
    if you are using power automate, don't use HTTP action to call API.

    Use the Blackbaud connectors that already handles authorization token. Search for “Blackbaud” and you will see a bunch of connector by Blackbaud to use

  • @Alex Wong
    What steps should I add next to actually get the results of my query(the results I would get if I ran the query in Raiser's Edge myself)?

    f3d3adfac6fe8de542f10d80480f45d1-huge-im
  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 Raiser's Edge NXT Fall 2025 Product Update Briefing Badge

    @Robert BenjaminLaing
    executing the report job is going to take time, your flow will not work as you are checking job status the moment you submit it.

    • submit job
    • while job not done
      • wait 30 seconds
      • check job status
    • condition if job completed successfully
      • if yes, the last job status action will have the link to download the report, use the HTTP action to download it
  • @Alex Wong

    This is what I've done , can you confirm it's correct please? My flow ran for 1 hour but it the condition parameter returned a false reading - i.e status did not start with ‘Complete’. This is my flow below:

    28afb8f4e1cea31bdafccf3ba5c67eb3-huge-im

    Could you also confirm if these action are configured correctly please:

    01661670c38eb9e144d78ef856f7bdbc-huge-im

    2f6d109fed3df2bfe366e2d23e6fbbf5-huge-im

    106b81cd5ecd0ddade7e1df0b4ee324e-huge-im

    got the following error :

    37c4a04268dc1893d9b5bf304cb01572-huge-im


  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 Facilitator 3 Raiser's Edge NXT Fall 2025 Product Update Briefing Badge

    @Robert BenjaminLaing
    I responded to your question in your other post here: