I’ve always wanted to set up notification for specific Windows event IDs. With the Gotify service and the Windows built-in event notifications, this can be easily achieved.
The notification is configured in the Windows task scheduler. When one or more selected event IDs occur an action is performed.
The action is a small Powershell script that reads the most recent events and sends them to the Gotify server.

As an example, Veeam Backup events generate the following interesting event IDs:

Event-ID Meaning
110 Backup started
150 Backup Task finished with Success/Failed
190 Backup Job finished with Success/Failed

Powershell Script for Notification

$eventIds = 110,150,190
$events = Get-WinEvent -MaxEvents 1  -FilterHashTable @{Logname = "Veeam*" ; ID = $eventIds}
$message = $events.Message
$eventTime = $events.TimeCreated
$eventID = $events.Id
$machineName = $events.MachineName
$source = $events.ProviderName

$data = @{
    'title'= "$source";
    'message'= "$eventTime - $machineName - EventID: $eventID`r`n`r`n$message";
    }
  
Invoke-Webrequest "https://gotify.example.net/message?token=A6.ilWGuGPWpazd" -Method Post -Body $Data | Out-Null

Task Scheduler

Create a task with an event trigger and a custom event filter.

Custom Event filter

<QueryList>
  <Query Id="0" Path="Veeam Backup">
    <Select Path="Veeam Backup">*[System[Provider[@Name='Veeam Backup'] and (EventID=110 or EventID=150 or EventID=190)]]</Select>
  </Query>
</QueryList>

Actions

  <Actions Context="Author">
    <Exec>
      <Command>C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command>
      <Arguments>-File C:\Scripts\EventLog.ps1</Arguments>
    </Exec>
  </Actions>

Conclusion

When Veeam Backup writes one of the defined events to the event log, the Powershell script is executed.
The script checks the event log for specific event IDs and calls the Gotify URL. The message is then immediately displayed in Gotify: