Skip to content

Notifications and Webhooks

marekbeckmann edited this page Nov 1, 2026 · 1 revision

Notifications and webhooks

torq notifies you only through outbound webhooks; there is no e-mail. Administrators add endpoints under Settings → Webhooks. Each endpoint sends in the language and formats of the user who created it.

Events

Event When Severity
reminder_due_soon A reminder enters its "due soon" window warning
reminder_overdue A reminder becomes overdue critical
digest_weekly Weekly summary of overdue and due-soon reminders info
digest_monthly Monthly summary info
test The Send test button info

Each endpoint chooses which events it receives. Digest days and hours are set under Settings → Instance. Reminders are re-checked with every odometer update and service entry.

Presets

Preset URL to enter Notes
Discord Channel webhook URL Rich embeds, coloured by severity
ntfy Topic URL, e.g. https://ntfy.example/torq Add Authorization: Bearer … for protected topics
Gotify https://gotify.example/message Add the app token as header X-Gotify-Key
Home Assistant Webhook trigger URL …/api/webhook/<id> Use trigger.json.title, trigger.json.reminder.state and so on in automations
Generic JSON Any URL The torq.notification/v1 payload below

Custom headers can be added to every endpoint. Header values are write-only: torq never shows or returns them after saving.

Tip

Use Send test after saving an endpoint. The delivery log on the endpoint shows the status code and response of every attempt.

Delivery and retries

Failed deliveries are retried after 30 seconds, 2 minutes and 10 minutes. Every attempt appears in the endpoint's delivery log.

Generic JSON payload

Content-Type: application/json, schema torq.notification/v1. Example for an overdue reminder:

{
  "schema": "torq.notification/v1",
  "event": "reminder_overdue",
  "severity": "critical",
  "title": "Overdue: Engine Oil & Filter — Mercedes-Benz C 220 CDI",
  "message": "-350 km",
  "url": "https://torq.example/vehicles/1/reminders",
  "sent_at": "2026-10-30T08:00:00Z",
  "reminder": {
    "id": 7,
    "name": "Engine Oil & Filter",
    "state": "overdue",
    "trigger": "km",
    "next_due_km": 225000,
    "next_due_date": "2027-10-15",
    "remaining_km": -350,
    "remaining_days": 350
  },
  "vehicle": {
    "id": 1,
    "name": "Mercedes-Benz C 220 CDI",
    "license_plate": "B-TQ 646",
    "current_odometer_km": 225350
  }
}
Field Meaning
schema Always torq.notification/v1
event One of the events above
severity info, warning or critical
title, message Human-readable text in the endpoint owner's language
url Link into torq; only present when TORQ_BASE_URL is set
sent_at RFC 3339 timestamp
reminder.state due_soon or overdue
reminder.trigger Which limit caused the state: km or time
reminder.remaining_km, remaining_days Negative when overdue
vehicle The vehicle; absent in digests (each digest item carries its own vehicle)

Digests replace reminder and vehicle with a digest object:

{
  "schema": "torq.notification/v1",
  "event": "digest_weekly",
  "severity": "info",
  "title": "Weekly maintenance digest",
  "message": "25",
  "digest": {
    "period": "weekly",
    "overdue": [ { "id": 7, "name": "Engine Oil & Filter", "state": "overdue", "vehicle": { "id": 1, "name": "…" } } ],
    "due_soon": []
  }
}

Clone this wiki locally