Email output only shows HREF coding and is missing hyperlinks

I'm in the final stages of completing a flow using Power Automate which sends an email when an Opportunity is missing the Likelihood field. It all works.

Now I've decided to improve the email to have hyperlinks back to the Constituent record and also the Opportunity record. Unfortunately the two columns come back showing me the code, not the field that links to the record.

Here is a screen shot of the two columns from the email which should have hyperlinking. The blue highlight is all I really want to show (the Const Name and Opp Name):

1af7e4be96bb937e4098966ca319b7b3-huge-im

Unfortunately the hyperlinking isn't working.

This is my step in my flow:

ab849b84011ac31f3ab9f2e6a18c0060-huge-im

Thoughts?

Thank you.

Comments

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

    @Chris Zello
    you will need to show us your “send email action”.

    Though I'm going to suspect that the email action was not in “edit html” mode, but just normal editing mode.

  • @Alex Wong Here are the two steps right after the Appeal to array variable:

    461f6cf04761307282eeeac49f2c5c78-huge-im

    There is nothing indicated in the advanced options of Send An Email.

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

    @Chris Zello

    0f5ec45a32b650c21d094a6ce6ef6f48-huge-im

    click on that </> code looking icon, takes you into HTML editing mode.

  • Glen Hutson
    Glen Hutson Blackbaud Employee
    Tenth Anniversary Kudos 5 Name Dropper Participant

    @Chris Zello:

    @Alex Wong Here are the two steps right after the Appeal to array variable:

    461f6cf04761307282eeeac49f2c5c78-huge-im

    There is nothing indicated in the advanced options of Send An Email.

    A couple of things I run into sometimes in regards to HTML in HTML tables, and inserting them in additional content areas:

    Even though you have the total value enclosed in quotes, will still need to put a single quote ( ' ) before the http and after renxt.

    There can also be a tendency to try to encode special characters which throughs off the HTML rendering. I often have to wrap the “Create HTML Table” in a series of replaces to rectify that:

    replace(replace(replace(replace(body('Create_HTML_table'), '&lt;', '<'), '&gt;', '>'), '&quot;', '"'), '^', ' ')

    This replaces the encoded characters with what they're meant to be. It also does a final replace to switch ^ out for a space. This trick helps as when you choose the ‘custom option’ in the Create HTML tables, you can't put in spaces. If you put a ^ between words (such as in the heading), this will also replace it with a space.

  • @Alex Wong It is still giving me the same output in the email sent when I test.

    Maybe there is something else I need to do? After I click the HTML editing mode, then what do I do? I see how the input now becomes:

    285ddcc55074f2ea5f8ffa137594dd26-huge-im

    Although I save the flow, it simply shows non-HTML when I return to it.

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

    @Glen Hutson
    what you mention about putting the link in quote is good practice and should be done, however, it is not needed. HTML is quite flexible. (but for better coding practice, do add the single quote as Glen said)

    f315ff249e3ff213e0ede99bca7dfd4d-huge-im

    the replace you indicated for “^" with “ ” (space) is good to have if he defines his own custom column name and put in the ^ as separate for words in the custom header. He doesn't do that so it's going to use the JSON's property name as the header, which will already have space.

    @Chris Zello so basically you will use this expression in your send email step, but yes.. you want to make sure you clicked on the </> button
    replace(replace(replace(body('Create_HTML_table'), '&lt;', '<'), '&gt;', '>'), '&quot;', '"')

  • Glen Hutson
    Glen Hutson Blackbaud Employee
    Tenth Anniversary Kudos 5 Name Dropper Participant

    @Alex Wong:

    @Glen Hutson
    what you mention about putting the link in quote is good practice and should be done, however, it is not needed. HTML is quite flexible. (but for better coding practice, do add the single quote as Glen said)

    f315ff249e3ff213e0ede99bca7dfd4d-huge-im

    the replace you indicated for “^" with “ ” (space) is good to have if he defines his own custom column name and put in the ^ as separate for words in the custom header. He doesn't do that so it's going to use the JSON's property name as the header, which will already have space.

    @Chris Zello so basically you will use this expression in your send email step, but yes.. you want to make sure you clicked on the </> button
    replace(replace(replace(body('Create_HTML_table'), '&lt;', '<'), '&gt;', '>'), '&quot;', '"')

    I have seen instances in which without the ‘ , the HTML doesn’t render correctly. As far as the ^ , I always leave it in my replaces so I don't have to remember to include it it depending on the scenario. It shouldn't cause a problem if it's part of the replace and not needed, unless there is a random intentional ^ .

  • @Glen Hutson Sorry, you've totally lost me.

  • Glen Hutson
    Glen Hutson Blackbaud Employee
    Tenth Anniversary Kudos 5 Name Dropper Participant

    @Chris Zello

    You're putting HTML characters into an array that then goes into the Create HTML table. That create HTML table tries to do you a favor in converting special characters like ‘<’ in such a way that so that it actually renders at face value and not the HTML.

    Instead of inserting the Output of the HTML Table in the email directly directly, insert the following expression where you want the table to show up:

    replace(replace(replace(replace(body('Create_HTML_table'), '&lt;', '<'), '&gt;', '>'), '&quot;', '"'), '^', ' ')

    That should make it so things render the correct way.

  • @Chris Zello - Do you want to continue workshopping this tomorrow at User Group?

  • @Heather McLean Yes, that would be fine with me, if time permits.