Nevermind, I think I got it to work. Example for others if they run across this:
From VRTK snap zone.
public override void OnEnter()
{
var go = Fsm.GetOwnerDefaultTarget(gameObject);
snapEvents = go.GetComponent<VRTK.UnityEventHelper.VRTK_SnapDropZone_UnityEvents>();
if (snapEvents == null)
{
snapEvents = go.AddComponent<VRTK.UnityEventHelper.VRTK_SnapDropZone_UnityEvents>();
}
snapEvents.OnObjectEnteredSnapDropZone.AddListener(ObjectSnapped);
}
private void ObjectSnapped(object sender, SnapDropZoneEventArgs e)
{
snapZoneObject.Value = e.snappedObject;
}