How can a contact run a function from the portal?

How can a contact run a function from the portal?

I need a contact to be able to execute a function from the portal. A key part of the function is to open a webpage where the contact will have access to what they need, based on info in CRM. I have tried:
  1. Using buttons: buttons don't appear to show up in the portal
  2. Using workflows. The response did not occur as anticipated (code is good, it is used elsewhere)
  3. My only other thought is to add a URL field with instructions for the contact to copy/paste the field
    1. This is less-than-ideal, as this is not as simple as a button or field, and exposes information to the contacts I would rather they do not have access to.
I tried searching but I did not find any solutions.

What ideas/thoughts/solutions do any of you have?