I would use Page Event rather than Goal in this case as it is more appropriate. There is not much technical difference between those two.
1) Creating Page Event
You can create Page Event under /sitecore/system/Settings/Analytics/Page Events.
and then fire it programmatically:
private void RegisterPageEvent(string name, Guid definitionId, Guid itemId, string data, string text)
{
Assert.IsNotNull(Tracker.Current, "Tracker.Current");
Assert.IsNotNull(Tracker.Current.Session, "Tracker.Current.Session");
var interaction = Tracker.Current.Session.Interaction;
Assert.IsNotNull(interaction, "Tracker.Current.Session.Interaction");
Assert.IsNotNull(interaction.CurrentPage, "Tracker.Current.Session.Interaction.CurrentPage");
var pageEventData = new PageEventData(name, definitionId)
{
ItemId = itemId,
Data = data,
Text = text
};
interaction.CurrentPage.Register(pageEventData);
}
You can follow these guidelines for further clarification:
2) Analytics
You have various options how to get list of visitors who triggered that page event. Just to name some:
a) Engagement plan - You can create engagement plan with initial condition "where your page event was triggered". Follow this official documentation. Then you can monitor this engagement plan to get list of visitors who clicked on that button and you can also supervise this engagement plan.
b) Custom Experience Analytics Report -> Follow official documentation.
Conclusion:
This part depends on what should be outcome for you. Just count of clicks is sufficient? or you need more details about visitors who clicked for further processing? Both these requirements can be achieved with option a).
You can also configure page event to appear in Experience profile.