The real problem with all of this is lack of full template support (with conditionals and other logic structures found in Jinja2 for Python or any of the various Groovy engines (e.g., https://www.baeldung.com/groovy-template-engines). Since everything is static with value substitution, you get stuck very fast trying to generate useful results. The per-datapoint alert template is a decent workaround for datasources, but there is nothing similar for any other logicmodule, unfortunately. We solved a lot of it by sending all the tokens via an email integration where they are unwrapped and processed before generating a ticket with the result, but you need tokens to make it work. And we get stuck due to some odd design decisions (e.g., acks are not sent via the custom email integration...because). I once was asked to include a documentation note for a client in their alerts (only theirs), but there is no way to do this short of editing every template, including datapoint templates. This is what support told me to do -- for real. You can't use a custom email integration because you lose the ability to respond to ACK/SDT and you don't get certain messages, like ACKs.