You can add custom events to be fired using a JS function that can run and be triggered using Google Tag Manager.
<script>
event = {{EVENT_NAME}};
properties = {
{{JSON_PROPERTIES}}
};
(function (w, l) {
w[l] = w[l] || [];
var d = {
et: event,
d: properties
};
w[l].push(d);
})(window, 'vfAnalytics');
</script>
Sending custom event
<script>
event = "CUSTOM_EVENT";
properties = {
"label" : {{LABEL}},
"action" : {{ACTION}},
"category" : {{CATEGORY}},
"value": {{VALUE}}
};
(function (w, l) {
w[l] = w[l] || [];
var d = {
et: event,
d: properties
};
w[l].push(d);
})(window, 'vfAnalytics');
</script>