I am trying to update a custom field with the date/time of when the contact clicks a specific link in an email. Is there a way to accomplish this through a Smart Campaign?
Yes there is.
Use the smart list trigger to identify the user "clicks link in email" in the flow step you will want to use the change data value. Identify your custom date field and then use a system token {{system.date}} or {{system.time}}
Does it have to be a trigger or can it be a filter?
If you use a filter you will be grouping them based upon your criteria i.e. filled out form in past 7 days and then a flow would time stamp whenever you run the batch. Seems like this would defeat your end goal.
If it's not a trigger, then you won't be able to populate the actual time that the person clicked the link. Instead the value will populate with the time that the batch campaign is ran.