For 1 the subject is not passed to the format function and its pretty hard to refactor the way to plugin works to accommodate this so unfortunately not.
For 2 you can have access to all properties on the Alert object you just need to reference them within the template {{ .Variable }}, we dont have a YAML helper function and the Alert doesnt have yaml properties assigned so it cant be converted unless golang will just guess the keys from the property key.
Let me know which properties you want and I can advise how to add them to the template if it just the geo location data here is the default template modified:
format: |
<html><body>
{{range . -}}
{{$alert := . -}}
{{range .Decisions -}}
<p><a href="https://www.whois.com/whois/{{.Value}}">{{.Value}}</a> will get <b>{{.Type}}</b> for next <b>{{.Duration}}</b> for triggering <b>{{.Scenario}}</b> on machine <b>{{$alert.MachineID}}</b>.</p>
<p><a href="https://app.crowdsec.net/cti/{{.Value}}">CrowdSec CTI</a></p>
{{end -}}
<p>Country: {{.Source.Cn}}</p>
<p>AsName: {{.Source.AsName}}</p>
{{end -}}
</body></html>