Synology DSM 7 and later support Custom Webhook as a notification transport out of the box. This score gives Tempo a place to receive those notifications and attach 10 one-click actions on each event — open DSM, jump straight into Storage Manager or Log Center, SSH to the NAS, ping it, copy details for an incident ticket.

No adapter on the Tempo side is required. You just configure DSM to POST to Tempo.


Install

  1. Download synology.tempo-score from the button above.
  2. Double-click it. Tempo opens a review sheet — click Install. The score is saved to ~/Library/Application Support/Tempo/Scores/synology.tempo-score.
  3. In Tempo Settings → Ingestion, add a token named synology bound to com.synology. Copy the token — you’ll paste it into DSM in step 5.
  4. Note your Tempo endpoint: http://<your-mac-hostname>:7776/events (or 127.0.0.1 if Tempo is loopback-only).
  5. Configure DSM (see below).

DSM side — configure the webhook

Control Panel → Notification → Push Service → Webhooks → Add → Custom

FieldValue
Provider NameTempo
Subject Prefix(leave blank, Tempo will use @@PREFIX@@ itself)
SubjectSynology notification
URLhttp://your-mac.local:7776/events
HTTP MethodPOST

In HTTP Headers:

KeyValue
Content-Typeapplication/json
X-Tempo-Token<paste token from Tempo>

In HTTP Body, paste this template. The three lines marked with // CHANGE ME are the values you adjust for your setup — nothing else needs to change.

{
  "title": "@@PREFIX@@",
  "providerIdentifier": "com.synology",
  "eventType": "alert",
  "metadata": {
    "hostname": "nas.home.arpa",
    "subject": "@@PREFIX@@",
    "message": "@@TEXT@@"
  }
}

In Events to notify, enable the categories you want Tempo to receive (we recommend: System, Storage, Security, Backup). Save.

What DSM actually sends

Unlike Proxmox, DSM’s custom webhook has only three usable placeholders:

This means Tempo receives a short summary string like “Drive 3 on DS920+ has been disabled” rather than a structured payload. The score is designed around this reality: actions use ${metadata.hostname} (which you provided in the template above) and ${metadata.message} (the @@TEXT@@ blob). Severity is not parsed from the message body — all Synology events default to alert severity in Tempo.

If you want finer-grained severity per event type, you can duplicate the webhook in DSM, point each copy at a different matcher, and hardcode different title/eventType fields in each body template.

Actions provided (10 total)

GroupActions
DSM UIOpen DSM · Open Storage Manager · Open Log Center · Open Security Advisor
ShellSSH to NAS · Ping NAS
ClipboardCopy hostname · Copy message
DocsDSM notifications docs · Synology Knowledge Center

Customizing

Verifying

After step 5, trigger a test notification: Control Panel → Notification → Push Service → Webhooks → [Tempo row] → Send Test Message

Tempo’s live feed should show a new alert within a second or two. If not:


Troubleshooting

If the test notification doesn’t land in Tempo’s feed, run these five checks in order. Each narrows the problem to a specific layer (reachability, token, payload, process, history).

1. Is Tempo reachable from the NAS? — SSH to the NAS and run:

curl -v http://your-mac.local:7776/health

A 200 OK means reachability is fine. A timeout or “No route to host” is a network problem (firewall on the Mac, WiFi isolation, VPN routing) — nothing after this point will work until it’s fixed.

2. Does the token work and does Tempo accept your payload shape? — still on the NAS, send a synthetic event that mimics the DSM body template exactly:

curl -X POST http://your-mac.local:7776/events \
  -H 'Content-Type: application/json' \
  -H 'X-Tempo-Token: YOUR_TOKEN_HERE' \
  -d '{"title":"synology probe","providerIdentifier":"com.synology","eventType":"alert","metadata":{"hostname":"nas.home.arpa","subject":"probe","message":"manual troubleshooting"}}'

A 200 or 202 with “synology probe” appearing in Tempo’s feed means ingestion works end-to-end. A 401 means the token is wrong or not bound to com.synology; a 422 means the JSON is malformed (the real DSM webhook has the same bug, same fix).

3. Are the packets actually reaching the Mac? — open Terminal on the Mac and watch inbound traffic:

sudo tcpdump -i any -A 'tcp port 7776 and src host your-nas.home.arpa'

Then send a test message from DSM. You should see HTTP POST traffic with the JSON body visible. If nothing appears, DSM is failing to reach the Mac even though step 1 succeeded — usually because DSM’s webhook URL is typo’d or uses the wrong hostname.

4. What is Tempo doing right now? — stream Tempo’s live logs:

log stream --predicate 'subsystem == "app.tempoapp.Tempo"' --level debug

Useful to watch the ingestion decision in real time: token lookup, validation, DB write.

5. What did Tempo see historically? — grep the rolling file log:

grep -h com.synology ~/Library/Application\ Support/Tempo/Logs/tempo-*.log | tail -50

Every Synology event Tempo has touched appears here with timestamp and outcome. This is also what Settings → Help → Export diagnostics bundle packages up — if you’re asking for support, run step 5 first and attach the output.


References